[#1321] Move tube coupler child components outside of parent in RockSim export
This commit is contained in:
parent
e8d971a9df
commit
6c54ed5fbf
@ -80,27 +80,27 @@ public class AbstractTransitionDTO extends BasePartDTO implements AttachablePart
|
||||
for (int i = 0; i < children.size(); i++) {
|
||||
RocketComponent rocketComponents = children.get(i);
|
||||
if (rocketComponents instanceof InnerTube) {
|
||||
attachedParts.add(new InnerBodyTubeDTO((InnerTube) rocketComponents, this));
|
||||
addAttachedPart(new InnerBodyTubeDTO((InnerTube) rocketComponents, this));
|
||||
} else if (rocketComponents instanceof BodyTube) {
|
||||
attachedParts.add(new BodyTubeDTO((BodyTube) rocketComponents));
|
||||
addAttachedPart(new BodyTubeDTO((BodyTube) rocketComponents));
|
||||
} else if (rocketComponents instanceof Transition) {
|
||||
attachedParts.add(new TransitionDTO((Transition) rocketComponents));
|
||||
addAttachedPart(new TransitionDTO((Transition) rocketComponents));
|
||||
} else if (rocketComponents instanceof EngineBlock) {
|
||||
attachedParts.add(new EngineBlockDTO((EngineBlock) rocketComponents));
|
||||
addAttachedPart(new EngineBlockDTO((EngineBlock) rocketComponents));
|
||||
} else if (rocketComponents instanceof TubeCoupler) {
|
||||
attachedParts.add(new TubeCouplerDTO((TubeCoupler) rocketComponents));
|
||||
addAttachedPart(new TubeCouplerDTO((TubeCoupler) rocketComponents, this));
|
||||
} else if (rocketComponents instanceof CenteringRing) {
|
||||
attachedParts.add(new CenteringRingDTO((CenteringRing) rocketComponents));
|
||||
addAttachedPart(new CenteringRingDTO((CenteringRing) rocketComponents));
|
||||
} else if (rocketComponents instanceof Bulkhead) {
|
||||
attachedParts.add(new BulkheadDTO((Bulkhead) rocketComponents));
|
||||
addAttachedPart(new BulkheadDTO((Bulkhead) rocketComponents));
|
||||
} else if (rocketComponents instanceof Parachute) {
|
||||
attachedParts.add(new ParachuteDTO((Parachute) rocketComponents));
|
||||
addAttachedPart(new ParachuteDTO((Parachute) rocketComponents));
|
||||
} else if (rocketComponents instanceof MassObject) {
|
||||
attachedParts.add(new MassObjectDTO((MassObject) rocketComponents));
|
||||
addAttachedPart(new MassObjectDTO((MassObject) rocketComponents));
|
||||
} else if (rocketComponents instanceof FreeformFinSet) {
|
||||
attachedParts.add(new CustomFinSetDTO((FreeformFinSet) rocketComponents));
|
||||
addAttachedPart(new CustomFinSetDTO((FreeformFinSet) rocketComponents));
|
||||
} else if (rocketComponents instanceof FinSet) {
|
||||
attachedParts.add(new FinSetDTO((FinSet) rocketComponents));
|
||||
addAttachedPart(new FinSetDTO((FinSet) rocketComponents));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -139,7 +139,9 @@ public class AbstractTransitionDTO extends BasePartDTO implements AttachablePart
|
||||
|
||||
@Override
|
||||
public void addAttachedPart(BasePartDTO part) {
|
||||
attachedParts.add(part);
|
||||
if (!attachedParts.contains(part)) {
|
||||
attachedParts.add(part);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -97,34 +97,34 @@ public class BodyTubeDTO extends BasePartDTO implements AttachableParts {
|
||||
final InnerBodyTubeDTO innerBodyTubeDTO = new InnerBodyTubeDTO(innerTube, this);
|
||||
//Only add the inner tube if it is NOT a cluster.
|
||||
if (innerTube.getInstanceCount() == 1) {
|
||||
attachedParts.add(innerBodyTubeDTO);
|
||||
addAttachedPart(innerBodyTubeDTO);
|
||||
}
|
||||
} else if (rocketComponents instanceof BodyTube) {
|
||||
attachedParts.add(new BodyTubeDTO((BodyTube) rocketComponents));
|
||||
addAttachedPart(new BodyTubeDTO((BodyTube) rocketComponents));
|
||||
} else if (rocketComponents instanceof Transition) {
|
||||
attachedParts.add(new TransitionDTO((Transition) rocketComponents));
|
||||
addAttachedPart(new TransitionDTO((Transition) rocketComponents));
|
||||
} else if (rocketComponents instanceof EngineBlock) {
|
||||
attachedParts.add(new EngineBlockDTO((EngineBlock) rocketComponents));
|
||||
addAttachedPart(new EngineBlockDTO((EngineBlock) rocketComponents));
|
||||
} else if (rocketComponents instanceof TubeCoupler) {
|
||||
attachedParts.add(new TubeCouplerDTO((TubeCoupler) rocketComponents));
|
||||
addAttachedPart(new TubeCouplerDTO((TubeCoupler) rocketComponents, this));
|
||||
} else if (rocketComponents instanceof CenteringRing) {
|
||||
attachedParts.add(new CenteringRingDTO((CenteringRing) rocketComponents));
|
||||
addAttachedPart(new CenteringRingDTO((CenteringRing) rocketComponents));
|
||||
} else if (rocketComponents instanceof Bulkhead) {
|
||||
attachedParts.add(new BulkheadDTO((Bulkhead) rocketComponents));
|
||||
addAttachedPart(new BulkheadDTO((Bulkhead) rocketComponents));
|
||||
} else if (rocketComponents instanceof LaunchLug) {
|
||||
attachedParts.add(new LaunchLugDTO((LaunchLug) rocketComponents));
|
||||
addAttachedPart(new LaunchLugDTO((LaunchLug) rocketComponents));
|
||||
} else if (rocketComponents instanceof Streamer) {
|
||||
attachedParts.add(new StreamerDTO((Streamer) rocketComponents));
|
||||
addAttachedPart(new StreamerDTO((Streamer) rocketComponents));
|
||||
} else if (rocketComponents instanceof Parachute) {
|
||||
attachedParts.add(new ParachuteDTO((Parachute) rocketComponents));
|
||||
addAttachedPart(new ParachuteDTO((Parachute) rocketComponents));
|
||||
} else if (rocketComponents instanceof MassObject) {
|
||||
attachedParts.add(new MassObjectDTO((MassObject) rocketComponents));
|
||||
addAttachedPart(new MassObjectDTO((MassObject) rocketComponents));
|
||||
} else if (rocketComponents instanceof FreeformFinSet) {
|
||||
attachedParts.add(new CustomFinSetDTO((FreeformFinSet) rocketComponents));
|
||||
addAttachedPart(new CustomFinSetDTO((FreeformFinSet) rocketComponents));
|
||||
} else if (rocketComponents instanceof FinSet) {
|
||||
attachedParts.add(new FinSetDTO((FinSet) rocketComponents));
|
||||
addAttachedPart(new FinSetDTO((FinSet) rocketComponents));
|
||||
} else if (rocketComponents instanceof TubeFinSet) {
|
||||
attachedParts.add(new TubeFinSetDTO((TubeFinSet) rocketComponents));
|
||||
addAttachedPart(new TubeFinSetDTO((TubeFinSet) rocketComponents));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -199,8 +199,10 @@ public class BodyTubeDTO extends BasePartDTO implements AttachableParts {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addAttachedPart(BasePartDTO thePart) {
|
||||
attachedParts.add(thePart);
|
||||
public void addAttachedPart(BasePartDTO part) {
|
||||
if (!attachedParts.contains(part)) {
|
||||
attachedParts.add(part);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -63,26 +63,26 @@ public class InnerBodyTubeDTO extends BodyTubeDTO implements AttachableParts {
|
||||
//to the list of attached parts. If it is a cluster, then it is handled specially outside of this
|
||||
//loop.
|
||||
if (innerTube.getInstanceCount() == 1) {
|
||||
attachedParts.add(new InnerBodyTubeDTO(innerTube, this));
|
||||
addAttachedPart(new InnerBodyTubeDTO(innerTube, this));
|
||||
}
|
||||
} else if (rocketComponents instanceof BodyTube) {
|
||||
attachedParts.add(new BodyTubeDTO((BodyTube) rocketComponents));
|
||||
addAttachedPart(new BodyTubeDTO((BodyTube) rocketComponents));
|
||||
} else if (rocketComponents instanceof Transition) {
|
||||
attachedParts.add(new TransitionDTO((Transition) rocketComponents));
|
||||
addAttachedPart(new TransitionDTO((Transition) rocketComponents));
|
||||
} else if (rocketComponents instanceof EngineBlock) {
|
||||
attachedParts.add(new EngineBlockDTO((EngineBlock) rocketComponents));
|
||||
addAttachedPart(new EngineBlockDTO((EngineBlock) rocketComponents));
|
||||
} else if (rocketComponents instanceof TubeCoupler) {
|
||||
attachedParts.add(new TubeCouplerDTO((TubeCoupler) rocketComponents));
|
||||
addAttachedPart(new TubeCouplerDTO((TubeCoupler) rocketComponents));
|
||||
} else if (rocketComponents instanceof CenteringRing) {
|
||||
attachedParts.add(new CenteringRingDTO((CenteringRing) rocketComponents));
|
||||
addAttachedPart(new CenteringRingDTO((CenteringRing) rocketComponents));
|
||||
} else if (rocketComponents instanceof Bulkhead) {
|
||||
attachedParts.add(new BulkheadDTO((Bulkhead) rocketComponents));
|
||||
addAttachedPart(new BulkheadDTO((Bulkhead) rocketComponents));
|
||||
} else if (rocketComponents instanceof Streamer) {
|
||||
attachedParts.add(new StreamerDTO((Streamer) rocketComponents));
|
||||
addAttachedPart(new StreamerDTO((Streamer) rocketComponents));
|
||||
} else if (rocketComponents instanceof Parachute) {
|
||||
attachedParts.add(new ParachuteDTO((Parachute) rocketComponents));
|
||||
addAttachedPart(new ParachuteDTO((Parachute) rocketComponents));
|
||||
} else if (rocketComponents instanceof MassObject) {
|
||||
attachedParts.add(new MassObjectDTO((MassObject) rocketComponents));
|
||||
addAttachedPart(new MassObjectDTO((MassObject) rocketComponents));
|
||||
}
|
||||
}
|
||||
//Do the cluster. For now this splits the cluster into separate tubes, which is how Rocksim represents it.
|
||||
@ -119,7 +119,9 @@ public class InnerBodyTubeDTO extends BodyTubeDTO implements AttachableParts {
|
||||
|
||||
@Override
|
||||
public void addAttachedPart(BasePartDTO part) {
|
||||
attachedParts.add(part);
|
||||
if (!attachedParts.contains(part)) {
|
||||
attachedParts.add(part);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,11 +1,26 @@
|
||||
package net.sf.openrocket.file.rocksim.export;
|
||||
|
||||
import net.sf.openrocket.file.rocksim.RockSimCommonConstants;
|
||||
import net.sf.openrocket.rocketcomponent.BodyTube;
|
||||
import net.sf.openrocket.rocketcomponent.Bulkhead;
|
||||
import net.sf.openrocket.rocketcomponent.CenteringRing;
|
||||
import net.sf.openrocket.rocketcomponent.EngineBlock;
|
||||
import net.sf.openrocket.rocketcomponent.FinSet;
|
||||
import net.sf.openrocket.rocketcomponent.FreeformFinSet;
|
||||
import net.sf.openrocket.rocketcomponent.InnerTube;
|
||||
import net.sf.openrocket.rocketcomponent.MassObject;
|
||||
import net.sf.openrocket.rocketcomponent.Parachute;
|
||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||
import net.sf.openrocket.rocketcomponent.Streamer;
|
||||
import net.sf.openrocket.rocketcomponent.Transition;
|
||||
import net.sf.openrocket.rocketcomponent.TubeCoupler;
|
||||
import net.sf.openrocket.rocketcomponent.position.AxialMethod;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Conversion DTO for a TubeCoupler. TubeCoupler's are represented as Rings in Rocksim.
|
||||
@ -23,4 +38,42 @@ public class TubeCouplerDTO extends CenteringRingDTO {
|
||||
super(tc);
|
||||
setUsageCode(UsageCode.TubeCoupler);
|
||||
}
|
||||
|
||||
/**
|
||||
* Full copy constructor.
|
||||
*
|
||||
* @param tc the corresponding OR tube coupler
|
||||
* @param parent the attached parts (subcomponents in RockSim speak) of the TubeCoupler's parent. This instance
|
||||
* is a member of those attached parts, as well as all sibling components. This is passed in the
|
||||
* event that the tube coupler is a cluster. In that situation this instance will be removed and
|
||||
* individual instances for each cluster member will be added.
|
||||
*/
|
||||
public TubeCouplerDTO(TubeCoupler tc, AttachableParts parent) {
|
||||
super(tc);
|
||||
setUsageCode(UsageCode.TubeCoupler);
|
||||
|
||||
// Add this component first, then the children
|
||||
parent.addAttachedPart(this);
|
||||
|
||||
for (RocketComponent component : tc.getChildren()) {
|
||||
component.setAxialMethod(AxialMethod.ABSOLUTE);
|
||||
if (component instanceof InnerTube) {
|
||||
parent.addAttachedPart(new InnerBodyTubeDTO((InnerTube) component, parent));
|
||||
} else if (component instanceof EngineBlock) {
|
||||
parent.addAttachedPart(new EngineBlockDTO((EngineBlock) component));
|
||||
} else if (component instanceof TubeCoupler) {
|
||||
new TubeCouplerDTO((TubeCoupler) component, parent);
|
||||
} else if (component instanceof CenteringRing) {
|
||||
parent.addAttachedPart(new CenteringRingDTO((CenteringRing) component));
|
||||
} else if (component instanceof Bulkhead) {
|
||||
parent.addAttachedPart(new BulkheadDTO((Bulkhead) component));
|
||||
} else if (component instanceof Parachute) {
|
||||
parent.addAttachedPart(new ParachuteDTO((Parachute) component));
|
||||
} else if (component instanceof Streamer) {
|
||||
parent.addAttachedPart(new StreamerDTO((Streamer) component));
|
||||
} else if (component instanceof MassObject) {
|
||||
parent.addAttachedPart(new MassObjectDTO((MassObject) component));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user