diff --git a/core/src/net/sf/openrocket/document/Simulation.java b/core/src/net/sf/openrocket/document/Simulation.java index c6371b354..1b261669b 100644 --- a/core/src/net/sf/openrocket/document/Simulation.java +++ b/core/src/net/sf/openrocket/document/Simulation.java @@ -268,6 +268,18 @@ public class Simulation implements ChangeSource, Cloneable { mutex.verify(); return simulationExtensions; } + + /** + * Applies the simulation extensions to the simulation. + * @param extensions the simulation extensions to apply. + */ + public void copyExtensionsFrom(List extensions) { + if (extensions == null) { + return; + } + this.simulationExtensions.clear(); + this.simulationExtensions.addAll(extensions); + } /** @@ -554,6 +566,31 @@ public class Simulation implements ChangeSource, Cloneable { mutex.unlock("clone"); } } + + /** + * Load the data from the specified simulation into this simulation. + * @param simulation the simulation to load from. + */ + public void loadFrom(Simulation simulation) { + mutex.lock("loadFrom"); + try { + this.name = simulation.name; + this.configId = simulation.configId; + this.options.copyFrom(simulation.options); + this.simulatedConfigurationDescription = simulation.simulatedConfigurationDescription; + this.simulatedConfigurationID = simulation.simulatedConfigurationID; + if (simulation.simulatedConditions == null) { + this.simulatedConditions = null; + } else { + this.simulatedConditions = simulation.simulatedConditions.clone(); + } + this.simulatedData = simulation.simulatedData; + this.status = simulation.status; + copyExtensionsFrom(simulation.getSimulationExtensions()); + } finally { + mutex.unlock("loadFrom"); + } + } /**