Implement launch velocity into AirStart extension

This commit is contained in:
Sampo Niskanen 2014-12-23 23:49:37 +02:00
parent 00a7b7edc7
commit 7aca75f053
3 changed files with 36 additions and 3 deletions

View File

@ -398,7 +398,8 @@ simedtdlg.IntensityDesc.High = High
simedtdlg.IntensityDesc.Veryhigh = Very high
simedtdlg.IntensityDesc.Extreme = Extreme
SimulationExtension.airstart.name = Air-start ({alt})
SimulationExtension.airstart.name.alt = Air-start ({alt})
SimulationExtension.airstart.name.altvel = Air-start ({alt}, {vel})
SimulationExtension.javacode.name = Java code
SimulationExtension.javacode.name.none = none
SimulationExtension.javacode.desc = Add a custom SimulationListener to the simulation

View File

@ -18,8 +18,15 @@ public class AirStart extends AbstractSimulationExtension {
@Override
public String getName() {
String name = trans.get("SimulationExtension.airstart.name");
return L10N.replace(name, "{alt}", UnitGroup.UNITS_DISTANCE.toStringUnit(getLaunchAltitude()));
String name;
if (getLaunchVelocity() > 0.01) {
name = trans.get("SimulationExtension.airstart.name.altvel");
} else {
name = trans.get("SimulationExtension.airstart.name.alt");
}
name = L10N.replace(name, "{alt}", UnitGroup.UNITS_DISTANCE.toStringUnit(getLaunchAltitude()));
name = L10N.replace(name, "{vel}", UnitGroup.UNITS_VELOCITY.toStringUnit(getLaunchVelocity()));
return name;
}
public double getLaunchAltitude() {
@ -31,11 +38,21 @@ public class AirStart extends AbstractSimulationExtension {
fireChangeEvent();
}
public double getLaunchVelocity() {
return config.getDouble("launchVelocity", 0.0);
}
public void setLaunchVelocity(double launchVelocity) {
config.put("launchVelocity", launchVelocity);
fireChangeEvent();
}
private class AirStartListener extends AbstractSimulationListener {
@Override
public void startSimulation(SimulationStatus status) throws SimulationException {
status.setRocketPosition(new Coordinate(0, 0, getLaunchAltitude()));
status.setRocketVelocity(status.getRocketOrientationQuaternion().rotate(new Coordinate(0, 0, getLaunchVelocity())));
}
}
}

View File

@ -37,6 +37,21 @@ public class AirStartConfigurator extends AbstractSwingSimulationExtensionConfig
BasicSlider slider = new BasicSlider(m.getSliderModel(0, 1000));
panel.add(slider, "w 75lp, wrap");
panel.add(new JLabel("Launch velocity:"));
m = new DoubleModel(extension, "LaunchVelocity", UnitGroup.UNITS_VELOCITY, 0);
spin = new JSpinner(m.getSpinnerModel());
spin.setEditor(new SpinnerEditor(spin));
panel.add(spin, "w 65lp!");
unit = new UnitSelector(m);
panel.add(unit, "w 25");
slider = new BasicSlider(m.getSliderModel(0, 150));
panel.add(slider, "w 75lp, wrap");
return panel;
}