geodetic computation file storage
This commit is contained in:
parent
f4f59fdd6f
commit
7c1d459de4
@ -36,3 +36,6 @@ The following file format versions exist:
|
||||
motor definitions. The digest uniquely identifies the
|
||||
functional characteristics of a particular thrust curve motor.
|
||||
|
||||
1.3: Introduced with OpenRocket 1.1.9. Adds the <launchlongitude> and
|
||||
<geodeticmethod> parameters to the simulation conditions element.
|
||||
|
||||
|
@ -74,6 +74,7 @@ import net.sf.openrocket.startup.Application;
|
||||
import net.sf.openrocket.unit.UnitGroup;
|
||||
import net.sf.openrocket.util.BugException;
|
||||
import net.sf.openrocket.util.Coordinate;
|
||||
import net.sf.openrocket.util.GeodeticComputationStrategy;
|
||||
import net.sf.openrocket.util.LineStyle;
|
||||
import net.sf.openrocket.util.Reflection;
|
||||
|
||||
@ -158,7 +159,7 @@ public class OpenRocketLoader extends RocketLoader {
|
||||
class DocumentConfig {
|
||||
|
||||
/* Remember to update OpenRocketSaver as well! */
|
||||
public static final String[] SUPPORTED_VERSIONS = { "0.9", "1.0", "1.1", "1.2" };
|
||||
public static final String[] SUPPORTED_VERSIONS = { "0.9", "1.0", "1.1", "1.2", "1.3" };
|
||||
|
||||
|
||||
//////// Component constructors
|
||||
@ -1289,6 +1290,8 @@ class SimulationConditionsHandler extends ElementHandler {
|
||||
|
||||
public SimulationConditionsHandler(Rocket rocket) {
|
||||
conditions = new SimulationOptions(rocket);
|
||||
// Set up default loading settings (which may differ from the new defaults)
|
||||
conditions.setGeodeticComputation(GeodeticComputationStrategy.NONE);
|
||||
}
|
||||
|
||||
public SimulationOptions getConditions() {
|
||||
@ -1364,6 +1367,20 @@ class SimulationConditionsHandler extends ElementHandler {
|
||||
} else {
|
||||
conditions.setLaunchLatitude(d);
|
||||
}
|
||||
} else if (element.equals("launchlongitude")) {
|
||||
if (Double.isNaN(d)) {
|
||||
warnings.add("Illegal launch longitude.");
|
||||
} else {
|
||||
conditions.setLaunchLongitude(d);
|
||||
}
|
||||
} else if (element.equals("geodeticmethod")) {
|
||||
GeodeticComputationStrategy gcs =
|
||||
(GeodeticComputationStrategy) DocumentConfig.findEnum(content, GeodeticComputationStrategy.class);
|
||||
if (gcs != null) {
|
||||
conditions.setGeodeticComputation(gcs);
|
||||
} else {
|
||||
warnings.add("Unknown geodetic computation method '" + content + "'");
|
||||
}
|
||||
} else if (element.equals("atmosphere")) {
|
||||
atmosphereHandler.storeSettings(conditions, warnings);
|
||||
} else if (element.equals("timestep")) {
|
||||
|
@ -193,6 +193,11 @@ public class OpenRocketSaver extends RocketSaver {
|
||||
* Otherwise use version 1.0.
|
||||
*/
|
||||
|
||||
// Check if design has simulations defined (version 1.3)
|
||||
if (document.getSimulationCount() > 0) {
|
||||
return FILE_VERSION_DIVISOR + 3;
|
||||
}
|
||||
|
||||
// Check for motor definitions (version 1.2)
|
||||
Iterator<RocketComponent> iterator = document.getRocket().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
@ -311,6 +316,8 @@ public class OpenRocketSaver extends RocketSaver {
|
||||
writeElement("windturbulence", cond.getWindTurbulenceIntensity());
|
||||
writeElement("launchaltitude", cond.getLaunchAltitude());
|
||||
writeElement("launchlatitude", cond.getLaunchLatitude());
|
||||
writeElement("launchlongitude", cond.getLaunchLongitude());
|
||||
writeElement("geodeticmethod", cond.getGeodeticComputation().name().toLowerCase());
|
||||
|
||||
if (cond.isISAAtmosphere()) {
|
||||
writeln("<atmosphere model=\"isa\"/>");
|
||||
|
Loading…
x
Reference in New Issue
Block a user