diff --git a/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java b/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java index fa56f1376..60fc35d26 100644 --- a/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java +++ b/core/src/net/sf/openrocket/file/openrocket/importt/DocumentConfig.java @@ -333,8 +333,6 @@ class DocumentConfig { setters.put("InnerTube:clusterrotation", new DoubleSetter( Reflection.findMethod(InnerTube.class, "setClusterRotation", double.class), Math.PI / 180.0)); - setters.put("InnerTube:instancecount", new IntSetter( - Reflection.findMethod(InnerTube.class, "setInstanceCount",int.class))); // RadiusRingComponent diff --git a/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java b/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java index 81b2945fa..98797f1ee 100644 --- a/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java +++ b/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java @@ -14,6 +14,7 @@ import net.sf.openrocket.motor.Motor; import net.sf.openrocket.motor.MotorInstance; import net.sf.openrocket.motor.ThrustCurveMotor; import net.sf.openrocket.preset.ComponentPreset; +import net.sf.openrocket.rocketcomponent.Clusterable; import net.sf.openrocket.rocketcomponent.ComponentAssembly; import net.sf.openrocket.rocketcomponent.FlightConfigurationID; import net.sf.openrocket.rocketcomponent.Instanceable; @@ -85,14 +86,17 @@ public class RocketComponentSaver { if ( c instanceof Instanceable) { int instanceCount = c.getInstanceCount(); if( 1 < instanceCount ){ - emitString( elements, "instancecount", Integer.toString( c.getInstanceCount()) ); + if( c instanceof Clusterable ){ + ; // no-op. Instance counts are set via named cluster configurations + } if( c instanceof LineInstanceable ){ - LineInstanceable line = (LineInstanceable)c; - emitDouble( elements, "linseparation", line.getInstanceSeparation()); + LineInstanceable line = (LineInstanceable)c; + emitString( elements, "instancecount", Integer.toString( c.getInstanceCount()) ); + emitDouble( elements, "linseparation", line.getInstanceSeparation()); } if( c instanceof RingInstanceable){ RingInstanceable ring = (RingInstanceable)c; - if(( c instanceof ParallelStage )&&( ((ParallelStage)c).getAutoRadialOffset() )){ + if( ring.getAutoRadialOffset() ){ emitString(elements, "radialoffset", "auto"); }else{ emitDouble( elements, "radialoffset", ring.getRadialOffset() ); diff --git a/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java b/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java index bbc9cd2a0..895c4a658 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java +++ b/core/src/net/sf/openrocket/rocketcomponent/FlightConfiguration.java @@ -464,11 +464,19 @@ public class FlightConfiguration implements FlightConfigurableParameter getMotorIDs() { - return this.motors.keySet(); + return motors.keySet(); } public MotorInstance getMotorInstance(MotorInstanceId id) { diff --git a/core/src/net/sf/openrocket/rocketcomponent/InnerTube.java b/core/src/net/sf/openrocket/rocketcomponent/InnerTube.java index e0839d813..9adfacc1e 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/InnerTube.java +++ b/core/src/net/sf/openrocket/rocketcomponent/InnerTube.java @@ -151,7 +151,9 @@ public class InnerTube extends ThicknessRingComponent implements Clusterable, Ra @Override public void setInstanceCount( final int newCount ){ - log.error("Programmer Error: cannot set the instance count of an "+this.getClass().getSimpleName()+" directly. Please set setClusterConfiguration(ClusterConfiguration) instead."); + log.error("Programmer Error: cannot set the instance count of an InnerTube directly."+ + " Please set setClusterConfiguration(ClusterConfiguration) instead.", + new UnsupportedOperationException("InnerTube.setInstanceCount(..) on an"+this.getClass().getSimpleName())); } /** diff --git a/core/src/net/sf/openrocket/rocketcomponent/ParallelStage.java b/core/src/net/sf/openrocket/rocketcomponent/ParallelStage.java index 0c1bdfbdc..6ec4fa2a1 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/ParallelStage.java +++ b/core/src/net/sf/openrocket/rocketcomponent/ParallelStage.java @@ -191,6 +191,7 @@ public class ParallelStage extends AxialStage implements FlightConfigurableCompo return this.getAxialOffset(); } + @Override public boolean getAutoRadialOffset(){ return this.autoRadialPosition; } diff --git a/core/src/net/sf/openrocket/rocketcomponent/PodSet.java b/core/src/net/sf/openrocket/rocketcomponent/PodSet.java index d7556826d..380f06a74 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/PodSet.java +++ b/core/src/net/sf/openrocket/rocketcomponent/PodSet.java @@ -189,6 +189,10 @@ public class PodSet extends ComponentAssembly implements RingInstanceable { return this.radialPosition_m; } + @Override + public boolean getAutoRadialOffset(){ + return false; + } @Override public int getInstanceCount() { diff --git a/core/src/net/sf/openrocket/rocketcomponent/RingInstanceable.java b/core/src/net/sf/openrocket/rocketcomponent/RingInstanceable.java index b54b9697d..df7841ccf 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RingInstanceable.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RingInstanceable.java @@ -6,6 +6,8 @@ public interface RingInstanceable extends Instanceable { public double getRadialOffset(); + public boolean getAutoRadialOffset(); + public void setAngularOffset(final double angle); public void setRadialOffset(final double radius);