Merge pull request #1500 from SiboVG/issue-1487

[#1487] Fix configuration referencing after loadFrom rocket
This commit is contained in:
SiboVG 2022-07-19 22:19:00 +02:00 committed by GitHub
commit 57bc867789
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 6 deletions

View File

@ -419,10 +419,12 @@ public class Rocket extends ComponentAssembly {
this.stageMap = r.stageMap; this.stageMap = r.stageMap;
// these flight configurations need to reference the _this_ Rocket: // these flight configurations need to reference the _this_ Rocket:
this.configSet.reset();
this.configSet.setDefault(new FlightConfiguration(this)); this.configSet.setDefault(new FlightConfiguration(this));
for (FlightConfigurationId key : r.configSet.map.keySet()) { for (FlightConfigurationId key : r.configSet.map.keySet()) {
this.configSet.set(key, new FlightConfiguration(this, key)); this.configSet.set(key, new FlightConfiguration(this, key));
} }
this.selectedConfiguration = this.configSet.get(r.getSelectedConfiguration().getId());
this.perfectFinish = r.perfectFinish; this.perfectFinish = r.perfectFinish;

View File

@ -41,7 +41,7 @@ public class RocketInfo implements FigureElement {
private final Caret cpCaret = new CPCaret(0,0); private final Caret cpCaret = new CPCaret(0,0);
private final Caret cgCaret = new CGCaret(0,0); private final Caret cgCaret = new CGCaret(0,0);
private final UnitGroup stabilityUnits; private UnitGroup stabilityUnits;
private FlightConfiguration configuration; private FlightConfiguration configuration;
private double cg = 0, cp = 0; private double cg = 0, cp = 0;
@ -459,5 +459,6 @@ public class RocketInfo implements FigureElement {
public void setCurrentConfig(FlightConfiguration newConfig) { public void setCurrentConfig(FlightConfiguration newConfig) {
this.configuration = newConfig; this.configuration = newConfig;
this.stabilityUnits = UnitGroup.stabilityUnits(newConfig);
} }
} }

View File

@ -71,7 +71,7 @@ public class IntegrationTest {
private Action undoAction, redoAction; private Action undoAction, redoAction;
private AerodynamicCalculator aeroCalc = new BarrowmanCalculator(); private AerodynamicCalculator aeroCalc = new BarrowmanCalculator();
private FlightConfiguration config; private FlightConfigurationId fcid;
private FlightConditions conditions; private FlightConditions conditions;
private String massComponentID = null; private String massComponentID = null;
@ -112,14 +112,12 @@ public class IntegrationTest {
undoAction = UndoRedoAction.newUndoAction(document); undoAction = UndoRedoAction.newUndoAction(document);
redoAction = UndoRedoAction.newRedoAction(document); redoAction = UndoRedoAction.newRedoAction(document);
FlightConfigurationId fcid = document.getSimulation(0).getFlightConfigurationId(); fcid = document.getSimulation(0).getFlightConfigurationId();
config = document.getRocket().getFlightConfiguration(fcid); FlightConfiguration config = document.getRocket().getFlightConfiguration(fcid);
conditions = new FlightConditions(config); conditions = new FlightConditions(config);
// Test undo state // Test undo state
checkUndoState(null, null); checkUndoState(null, null);
InnerTube mmt = (InnerTube)config.getRocket().getChild(0).getChild(1).getChild(2);
// Compute cg+cp + altitude // Compute cg+cp + altitude
// double cgx, double mass, double cpx, double cna) // double cgx, double mass, double cpx, double cna)
@ -330,6 +328,7 @@ public class IntegrationTest {
} }
private void checkCgCp(double cgx, double mass, double cpx, double cna) { private void checkCgCp(double cgx, double mass, double cpx, double cna) {
FlightConfiguration config = document.getRocket().getFlightConfiguration(fcid);
final RigidBody launchData = MassCalculator.calculateLaunch(config); final RigidBody launchData = MassCalculator.calculateLaunch(config);
final Coordinate cg = launchData.getCenterOfMass(); final Coordinate cg = launchData.getCenterOfMass();
assertEquals(cgx, cg.x, 0.001); assertEquals(cgx, cg.x, 0.001);