diff --git a/core/src/net/sf/openrocket/rocketcomponent/Streamer.java b/core/src/net/sf/openrocket/rocketcomponent/Streamer.java index c7498a1be..c1856d78e 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/Streamer.java +++ b/core/src/net/sf/openrocket/rocketcomponent/Streamer.java @@ -40,7 +40,7 @@ public class Streamer extends RecoveryDevice { if (MathUtil.equals(this.stripLength, stripLength)) return; this.stripLength = stripLength; - clearPreset(); +// clearPreset(); fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } @@ -95,6 +95,7 @@ public class Streamer extends RecoveryDevice { double area = getArea(); stripWidth = MathUtil.safeSqrt(area / ratio); stripLength = ratio * stripWidth; + clearPreset(); fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } @@ -117,6 +118,7 @@ public class Streamer extends RecoveryDevice { double ratio = Math.max(getAspectRatio(), 0.01); stripWidth = MathUtil.safeSqrt(area / ratio); stripLength = ratio * stripWidth; + clearPreset(); fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE); } @@ -136,6 +138,14 @@ public class Streamer extends RecoveryDevice { if ( preset.has(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); // Fix the length to the stripWidth since RocketComponent assigns ComponentPreset.LENGTH to length. this.length = this.stripWidth; @@ -146,8 +156,7 @@ public class Streamer extends RecoveryDevice { @Override public double getComponentCD(double mach) { double density = this.getMaterial().getDensity(); - double cd; - + double cd; cd = 0.034 * ((density + 0.025) / 0.105) * (stripLength + 1) / stripLength; cd = MathUtil.min(cd, MAX_COMPUTED_CD); return cd;