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
|
motor definitions. The digest uniquely identifies the
|
||||||
functional characteristics of a particular thrust curve motor.
|
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.unit.UnitGroup;
|
||||||
import net.sf.openrocket.util.BugException;
|
import net.sf.openrocket.util.BugException;
|
||||||
import net.sf.openrocket.util.Coordinate;
|
import net.sf.openrocket.util.Coordinate;
|
||||||
|
import net.sf.openrocket.util.GeodeticComputationStrategy;
|
||||||
import net.sf.openrocket.util.LineStyle;
|
import net.sf.openrocket.util.LineStyle;
|
||||||
import net.sf.openrocket.util.Reflection;
|
import net.sf.openrocket.util.Reflection;
|
||||||
|
|
||||||
@ -158,7 +159,7 @@ public class OpenRocketLoader extends RocketLoader {
|
|||||||
class DocumentConfig {
|
class DocumentConfig {
|
||||||
|
|
||||||
/* Remember to update OpenRocketSaver as well! */
|
/* 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
|
//////// Component constructors
|
||||||
@ -1289,6 +1290,8 @@ class SimulationConditionsHandler extends ElementHandler {
|
|||||||
|
|
||||||
public SimulationConditionsHandler(Rocket rocket) {
|
public SimulationConditionsHandler(Rocket rocket) {
|
||||||
conditions = new SimulationOptions(rocket);
|
conditions = new SimulationOptions(rocket);
|
||||||
|
// Set up default loading settings (which may differ from the new defaults)
|
||||||
|
conditions.setGeodeticComputation(GeodeticComputationStrategy.NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimulationOptions getConditions() {
|
public SimulationOptions getConditions() {
|
||||||
@ -1364,6 +1367,20 @@ class SimulationConditionsHandler extends ElementHandler {
|
|||||||
} else {
|
} else {
|
||||||
conditions.setLaunchLatitude(d);
|
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")) {
|
} else if (element.equals("atmosphere")) {
|
||||||
atmosphereHandler.storeSettings(conditions, warnings);
|
atmosphereHandler.storeSettings(conditions, warnings);
|
||||||
} else if (element.equals("timestep")) {
|
} else if (element.equals("timestep")) {
|
||||||
|
@ -193,6 +193,11 @@ public class OpenRocketSaver extends RocketSaver {
|
|||||||
* Otherwise use version 1.0.
|
* 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)
|
// Check for motor definitions (version 1.2)
|
||||||
Iterator<RocketComponent> iterator = document.getRocket().iterator();
|
Iterator<RocketComponent> iterator = document.getRocket().iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
@ -311,6 +316,8 @@ public class OpenRocketSaver extends RocketSaver {
|
|||||||
writeElement("windturbulence", cond.getWindTurbulenceIntensity());
|
writeElement("windturbulence", cond.getWindTurbulenceIntensity());
|
||||||
writeElement("launchaltitude", cond.getLaunchAltitude());
|
writeElement("launchaltitude", cond.getLaunchAltitude());
|
||||||
writeElement("launchlatitude", cond.getLaunchLatitude());
|
writeElement("launchlatitude", cond.getLaunchLatitude());
|
||||||
|
writeElement("launchlongitude", cond.getLaunchLongitude());
|
||||||
|
writeElement("geodeticmethod", cond.getGeodeticComputation().name().toLowerCase());
|
||||||
|
|
||||||
if (cond.isISAAtmosphere()) {
|
if (cond.isISAAtmosphere()) {
|
||||||
writeln("<atmosphere model=\"isa\"/>");
|
writeln("<atmosphere model=\"isa\"/>");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user