+
+ // Inner component positioning
+ if (c instanceof InternalComponent) {
+ RocketComponent parent = c.getParent();
+ SimulationModifier mod = new GenericComponentModifier(
+ trans.get("optimization.modifier.internalcomponent.position"),
+ trans.get("optimization.modifier.internalcomponent.position.desc"),
+ c, UnitGroup.UNITS_LENGTH,
+ 1.0, c.getClass(), c.getID(), "PositionValue");
+ mod.setMinValue(0);
+ mod.setMaxValue(parent.getLength());
+ modifiers.add(mod);
+ }
+
+
+ // Custom min/max for fin set position
+ if (c instanceof FinSet) {
+ RocketComponent parent = c.getParent();
+ SimulationModifier mod = new GenericComponentModifier(
+ trans.get("optimization.modifier.finset.position"),
+ trans.get("optimization.modifier.finset.position.desc"),
+ c, UnitGroup.UNITS_LENGTH,
+ 1.0, c.getClass(), c.getID(), "PositionValue");
+ mod.setMinValue(0);
+ mod.setMaxValue(parent.getLength());
+ modifiers.add(mod);
+ }
+
+
+ // Custom min/max for launch lug position
+ if (c instanceof LaunchLug) {
+ RocketComponent parent = c.getParent();
+ SimulationModifier mod = new GenericComponentModifier(
+ trans.get("optimization.modifier.launchlug.position"),
+ trans.get("optimization.modifier.launchlug.position.desc"),
+ c, UnitGroup.UNITS_LENGTH,
+ 1.0, c.getClass(), c.getID(), "PositionValue");
+ mod.setMinValue(0);
+ mod.setMaxValue(parent.getLength());
+ modifiers.add(mod);
+ }
+
+
+ // Recovery device deployment altitude and delay
+ if (c instanceof RecoveryDevice) {
+ RecoveryDevice device = (RecoveryDevice) c;
+
+ SimulationModifier mod = new GenericComponentModifier(
+ trans.get("optimization.modifier.recoverydevice.deployDelay"),
+ trans.get("optimization.modifier.recoverydevice.deployDelay.desc"),
+ c, UnitGroup.UNITS_SHORT_TIME,
+ 1.0, c.getClass(), c.getID(), "DeployDelay");
+ mod.setMinValue(0);
+ mod.setMaxValue(10);
+ modifiers.add(mod);
+
+ if (device.getDeployEvent() == DeployEvent.ALTITUDE) {
+ mod = new GenericComponentModifier(
+ trans.get("optimization.modifier.recoverydevice.deployAltitude"),
+ trans.get("optimization.modifier.recoverydevice.deployAltitude.desc"),
+ c, UnitGroup.UNITS_DISTANCE,
+ 1.0, c.getClass(), c.getID(), "DeployAltitude");
+ setDefaultMinMax(mod, simulation);
+ modifiers.add(mod);
+ }
+ }
+
+
+ // Conditional shape parameter of Transition
+ if (c instanceof Transition) {
+ Transition transition = (Transition) c;
+ Transition.Shape shape = transition.getType();
+ if (shape.usesParameter()) {
+ SimulationModifier mod = new GenericComponentModifier(
+ trans.get("optimization.modifier." + c.getClass().getSimpleName().toLowerCase() + ".shapeparameter"),
+ trans.get("optimization.modifier." + c.getClass().getSimpleName().toLowerCase() + ".shapeparameter.desc"),
+ c, UnitGroup.UNITS_NONE,
+ 1.0, c.getClass(), c.getID(), "ShapeParameter");
+ mod.setMinValue(shape.minParameter());
+ mod.setMaxValue(shape.maxParameter());
+ modifiers.add(mod);
+ }
+ }