From 518511bbd88f58f3c09c543c581829631ea0baa6 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Sat, 1 Apr 2023 20:25:18 +0200 Subject: [PATCH] Fix issue in motor mount selection First of all: inefficient implementation Second of all: it could select children of body tubes, we don't want that --- .../rasaero/importt/SimulationListHandler.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/core/src/net/sf/openrocket/file/rasaero/importt/SimulationListHandler.java b/core/src/net/sf/openrocket/file/rasaero/importt/SimulationListHandler.java index ed6e90304..6504bc7cd 100644 --- a/core/src/net/sf/openrocket/file/rasaero/importt/SimulationListHandler.java +++ b/core/src/net/sf/openrocket/file/rasaero/importt/SimulationListHandler.java @@ -12,6 +12,7 @@ import net.sf.openrocket.motor.IgnitionEvent; import net.sf.openrocket.motor.Motor; import net.sf.openrocket.motor.MotorConfiguration; import net.sf.openrocket.motor.ThrustCurveMotor; +import net.sf.openrocket.rocketcomponent.AxialStage; import net.sf.openrocket.rocketcomponent.FlightConfigurationId; import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.Rocket; @@ -203,17 +204,18 @@ public class SimulationListHandler extends AbstractElementHandler { /** * Returns the furthest back motor mount in the stage. - * @param stage stage number + * @param stageNr stage number * @return furthest back motor mount of the stage */ - private MotorMount getMotorMountForStage(int stage) { - MotorMount mount = null; - for (RocketComponent component : rocket.getStage(stage)) { + private MotorMount getMotorMountForStage(int stageNr) { + AxialStage stage = (AxialStage) rocket.getChild(stageNr); + for (int i = stage.getChildCount() - 1; i > 0; i--) { + RocketComponent component = stage.getChild(i); if (component instanceof MotorMount) { - mount = (MotorMount) component; + return (MotorMount) component; } } - return mount; + return null; } } }