Streamer changes exit preset status

Changing a streamer characteristic exits preset status; except for streamer length. Selection of a preset streamer when not in preset status (such as re-selecting the same preset streamer after changing one of its characteristics), sets all characteristics (including Cd and automatic checkbox); previously, the Cd and automatic checkbox were not set/reset after a manual Cd change.
This commit is contained in:
hcraigmiller 2022-05-24 11:19:07 -07:00
parent 156dbd5812
commit 687d460f0d

View File

@ -40,7 +40,7 @@ public class Streamer extends RecoveryDevice {
if (MathUtil.equals(this.stripLength, stripLength)) if (MathUtil.equals(this.stripLength, stripLength))
return; return;
this.stripLength = stripLength; this.stripLength = stripLength;
clearPreset(); // clearPreset();
fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
} }
@ -95,6 +95,7 @@ public class Streamer extends RecoveryDevice {
double area = getArea(); double area = getArea();
stripWidth = MathUtil.safeSqrt(area / ratio); stripWidth = MathUtil.safeSqrt(area / ratio);
stripLength = ratio * stripWidth; stripLength = ratio * stripWidth;
clearPreset(); // ----
fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
} }
@ -117,6 +118,7 @@ public class Streamer extends RecoveryDevice {
double ratio = Math.max(getAspectRatio(), 0.01); double ratio = Math.max(getAspectRatio(), 0.01);
stripWidth = MathUtil.safeSqrt(area / ratio); stripWidth = MathUtil.safeSqrt(area / ratio);
stripLength = ratio * stripWidth; stripLength = ratio * stripWidth;
clearPreset(); // ----
fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
} }
@ -136,6 +138,14 @@ public class Streamer extends RecoveryDevice {
if ( preset.has(ComponentPreset.WIDTH)) { if ( preset.has(ComponentPreset.WIDTH)) {
this.stripWidth = preset.get(ComponentPreset.WIDTH); this.stripWidth = preset.get(ComponentPreset.WIDTH);
} }
// ---- Set Cd value when preset is selected after manual Cd change
double density = this.getMaterial().getDensity();
double cd;
cd = 0.034 * ((density + 0.025) / 0.105) * (stripLength + 1) / stripLength;
cd = MathUtil.min(cd, MAX_COMPUTED_CD);
this.cd = cd;
this.cdAutomatic = true;
// ----
super.loadFromPreset(preset); super.loadFromPreset(preset);
// Fix the length to the stripWidth since RocketComponent assigns ComponentPreset.LENGTH to length. // Fix the length to the stripWidth since RocketComponent assigns ComponentPreset.LENGTH to length.
this.length = this.stripWidth; this.length = this.stripWidth;
@ -146,8 +156,6 @@ public class Streamer extends RecoveryDevice {
@Override @Override
public double getComponentCD(double mach) { public double getComponentCD(double mach) {
double density = this.getMaterial().getDensity(); double density = this.getMaterial().getDensity();
double cd;
cd = 0.034 * ((density + 0.025) / 0.105) * (stripLength + 1) / stripLength; cd = 0.034 * ((density + 0.025) / 0.105) * (stripLength + 1) / stripLength;
cd = MathUtil.min(cd, MAX_COMPUTED_CD); cd = MathUtil.min(cd, MAX_COMPUTED_CD);
return cd; return cd;