From ea7ee41a2515fdad15a8a9385285a2a2503789ef Mon Sep 17 00:00:00 2001 From: SiboVG Date: Fri, 24 Feb 2023 16:00:22 +0100 Subject: [PATCH] Fix recovery event when first booster component is not a body tube --- .../file/rasaero/importt/RecoveryHandler.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/src/net/sf/openrocket/file/rasaero/importt/RecoveryHandler.java b/core/src/net/sf/openrocket/file/rasaero/importt/RecoveryHandler.java index c6c47a4ad..49e35fc25 100644 --- a/core/src/net/sf/openrocket/file/rasaero/importt/RecoveryHandler.java +++ b/core/src/net/sf/openrocket/file/rasaero/importt/RecoveryHandler.java @@ -11,6 +11,7 @@ import net.sf.openrocket.rocketcomponent.DeploymentConfiguration; import net.sf.openrocket.rocketcomponent.Parachute; import net.sf.openrocket.rocketcomponent.RecoveryDevice; import net.sf.openrocket.rocketcomponent.Rocket; +import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.position.AxialMethod; import org.xml.sax.SAXException; @@ -239,11 +240,18 @@ public class RecoveryHandler extends AbstractElementHandler { } else { // If there are multiple stages, add the recovery device to the first booster AxialStage booster1 = rocket.getStage(1); - if (booster1.getChildCount() < 1 || !(booster1.getChild(0) instanceof BodyTube)) { + BodyTube boosterTube = null; + for (int i = 0; i < booster1.getChildCount(); i++) { + if (booster1.getChild(i) instanceof BodyTube) { + boosterTube = (BodyTube) booster1.getChild(i); + break; + } + } + if (boosterTube == null) { warnings.add("No booster body tube found." + recoveryDevice.getName() + " will not be added to the rocket."); return; } - bodyTube = (BodyTube) booster1.getChild(0); + bodyTube = boosterTube; offset = bodyTube.getOuterRadius() * 1.125; }