[#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++) {
|
for (int i = 0; i < children.size(); i++) {
|
||||||
RocketComponent rocketComponents = children.get(i);
|
RocketComponent rocketComponents = children.get(i);
|
||||||
if (rocketComponents instanceof InnerTube) {
|
if (rocketComponents instanceof InnerTube) {
|
||||||
attachedParts.add(new InnerBodyTubeDTO((InnerTube) rocketComponents, this));
|
addAttachedPart(new InnerBodyTubeDTO((InnerTube) rocketComponents, this));
|
||||||
} else if (rocketComponents instanceof BodyTube) {
|
} else if (rocketComponents instanceof BodyTube) {
|
||||||
attachedParts.add(new BodyTubeDTO((BodyTube) rocketComponents));
|
addAttachedPart(new BodyTubeDTO((BodyTube) rocketComponents));
|
||||||
} else if (rocketComponents instanceof Transition) {
|
} else if (rocketComponents instanceof Transition) {
|
||||||
attachedParts.add(new TransitionDTO((Transition) rocketComponents));
|
addAttachedPart(new TransitionDTO((Transition) rocketComponents));
|
||||||
} else if (rocketComponents instanceof EngineBlock) {
|
} else if (rocketComponents instanceof EngineBlock) {
|
||||||
attachedParts.add(new EngineBlockDTO((EngineBlock) rocketComponents));
|
addAttachedPart(new EngineBlockDTO((EngineBlock) rocketComponents));
|
||||||
} else if (rocketComponents instanceof TubeCoupler) {
|
} else if (rocketComponents instanceof TubeCoupler) {
|
||||||
attachedParts.add(new TubeCouplerDTO((TubeCoupler) rocketComponents));
|
addAttachedPart(new TubeCouplerDTO((TubeCoupler) rocketComponents, this));
|
||||||
} else if (rocketComponents instanceof CenteringRing) {
|
} else if (rocketComponents instanceof CenteringRing) {
|
||||||
attachedParts.add(new CenteringRingDTO((CenteringRing) rocketComponents));
|
addAttachedPart(new CenteringRingDTO((CenteringRing) rocketComponents));
|
||||||
} else if (rocketComponents instanceof Bulkhead) {
|
} else if (rocketComponents instanceof Bulkhead) {
|
||||||
attachedParts.add(new BulkheadDTO((Bulkhead) rocketComponents));
|
addAttachedPart(new BulkheadDTO((Bulkhead) rocketComponents));
|
||||||
} else if (rocketComponents instanceof Parachute) {
|
} else if (rocketComponents instanceof Parachute) {
|
||||||
attachedParts.add(new ParachuteDTO((Parachute) rocketComponents));
|
addAttachedPart(new ParachuteDTO((Parachute) rocketComponents));
|
||||||
} else if (rocketComponents instanceof MassObject) {
|
} else if (rocketComponents instanceof MassObject) {
|
||||||
attachedParts.add(new MassObjectDTO((MassObject) rocketComponents));
|
addAttachedPart(new MassObjectDTO((MassObject) rocketComponents));
|
||||||
} else if (rocketComponents instanceof FreeformFinSet) {
|
} else if (rocketComponents instanceof FreeformFinSet) {
|
||||||
attachedParts.add(new CustomFinSetDTO((FreeformFinSet) rocketComponents));
|
addAttachedPart(new CustomFinSetDTO((FreeformFinSet) rocketComponents));
|
||||||
} else if (rocketComponents instanceof FinSet) {
|
} 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
|
@Override
|
||||||
public void addAttachedPart(BasePartDTO part) {
|
public void addAttachedPart(BasePartDTO part) {
|
||||||
attachedParts.add(part);
|
if (!attachedParts.contains(part)) {
|
||||||
|
attachedParts.add(part);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -97,34 +97,34 @@ public class BodyTubeDTO extends BasePartDTO implements AttachableParts {
|
|||||||
final InnerBodyTubeDTO innerBodyTubeDTO = new InnerBodyTubeDTO(innerTube, this);
|
final InnerBodyTubeDTO innerBodyTubeDTO = new InnerBodyTubeDTO(innerTube, this);
|
||||||
//Only add the inner tube if it is NOT a cluster.
|
//Only add the inner tube if it is NOT a cluster.
|
||||||
if (innerTube.getInstanceCount() == 1) {
|
if (innerTube.getInstanceCount() == 1) {
|
||||||
attachedParts.add(innerBodyTubeDTO);
|
addAttachedPart(innerBodyTubeDTO);
|
||||||
}
|
}
|
||||||
} else if (rocketComponents instanceof BodyTube) {
|
} else if (rocketComponents instanceof BodyTube) {
|
||||||
attachedParts.add(new BodyTubeDTO((BodyTube) rocketComponents));
|
addAttachedPart(new BodyTubeDTO((BodyTube) rocketComponents));
|
||||||
} else if (rocketComponents instanceof Transition) {
|
} else if (rocketComponents instanceof Transition) {
|
||||||
attachedParts.add(new TransitionDTO((Transition) rocketComponents));
|
addAttachedPart(new TransitionDTO((Transition) rocketComponents));
|
||||||
} else if (rocketComponents instanceof EngineBlock) {
|
} else if (rocketComponents instanceof EngineBlock) {
|
||||||
attachedParts.add(new EngineBlockDTO((EngineBlock) rocketComponents));
|
addAttachedPart(new EngineBlockDTO((EngineBlock) rocketComponents));
|
||||||
} else if (rocketComponents instanceof TubeCoupler) {
|
} else if (rocketComponents instanceof TubeCoupler) {
|
||||||
attachedParts.add(new TubeCouplerDTO((TubeCoupler) rocketComponents));
|
addAttachedPart(new TubeCouplerDTO((TubeCoupler) rocketComponents, this));
|
||||||
} else if (rocketComponents instanceof CenteringRing) {
|
} else if (rocketComponents instanceof CenteringRing) {
|
||||||
attachedParts.add(new CenteringRingDTO((CenteringRing) rocketComponents));
|
addAttachedPart(new CenteringRingDTO((CenteringRing) rocketComponents));
|
||||||
} else if (rocketComponents instanceof Bulkhead) {
|
} else if (rocketComponents instanceof Bulkhead) {
|
||||||
attachedParts.add(new BulkheadDTO((Bulkhead) rocketComponents));
|
addAttachedPart(new BulkheadDTO((Bulkhead) rocketComponents));
|
||||||
} else if (rocketComponents instanceof LaunchLug) {
|
} else if (rocketComponents instanceof LaunchLug) {
|
||||||
attachedParts.add(new LaunchLugDTO((LaunchLug) rocketComponents));
|
addAttachedPart(new LaunchLugDTO((LaunchLug) rocketComponents));
|
||||||
} else if (rocketComponents instanceof Streamer) {
|
} else if (rocketComponents instanceof Streamer) {
|
||||||
attachedParts.add(new StreamerDTO((Streamer) rocketComponents));
|
addAttachedPart(new StreamerDTO((Streamer) rocketComponents));
|
||||||
} else if (rocketComponents instanceof Parachute) {
|
} else if (rocketComponents instanceof Parachute) {
|
||||||
attachedParts.add(new ParachuteDTO((Parachute) rocketComponents));
|
addAttachedPart(new ParachuteDTO((Parachute) rocketComponents));
|
||||||
} else if (rocketComponents instanceof MassObject) {
|
} else if (rocketComponents instanceof MassObject) {
|
||||||
attachedParts.add(new MassObjectDTO((MassObject) rocketComponents));
|
addAttachedPart(new MassObjectDTO((MassObject) rocketComponents));
|
||||||
} else if (rocketComponents instanceof FreeformFinSet) {
|
} else if (rocketComponents instanceof FreeformFinSet) {
|
||||||
attachedParts.add(new CustomFinSetDTO((FreeformFinSet) rocketComponents));
|
addAttachedPart(new CustomFinSetDTO((FreeformFinSet) rocketComponents));
|
||||||
} else if (rocketComponents instanceof FinSet) {
|
} else if (rocketComponents instanceof FinSet) {
|
||||||
attachedParts.add(new FinSetDTO((FinSet) rocketComponents));
|
addAttachedPart(new FinSetDTO((FinSet) rocketComponents));
|
||||||
} else if (rocketComponents instanceof TubeFinSet) {
|
} 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
|
@Override
|
||||||
public void addAttachedPart(BasePartDTO thePart) {
|
public void addAttachedPart(BasePartDTO part) {
|
||||||
attachedParts.add(thePart);
|
if (!attachedParts.contains(part)) {
|
||||||
|
attachedParts.add(part);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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
|
//to the list of attached parts. If it is a cluster, then it is handled specially outside of this
|
||||||
//loop.
|
//loop.
|
||||||
if (innerTube.getInstanceCount() == 1) {
|
if (innerTube.getInstanceCount() == 1) {
|
||||||
attachedParts.add(new InnerBodyTubeDTO(innerTube, this));
|
addAttachedPart(new InnerBodyTubeDTO(innerTube, this));
|
||||||
}
|
}
|
||||||
} else if (rocketComponents instanceof BodyTube) {
|
} else if (rocketComponents instanceof BodyTube) {
|
||||||
attachedParts.add(new BodyTubeDTO((BodyTube) rocketComponents));
|
addAttachedPart(new BodyTubeDTO((BodyTube) rocketComponents));
|
||||||
} else if (rocketComponents instanceof Transition) {
|
} else if (rocketComponents instanceof Transition) {
|
||||||
attachedParts.add(new TransitionDTO((Transition) rocketComponents));
|
addAttachedPart(new TransitionDTO((Transition) rocketComponents));
|
||||||
} else if (rocketComponents instanceof EngineBlock) {
|
} else if (rocketComponents instanceof EngineBlock) {
|
||||||
attachedParts.add(new EngineBlockDTO((EngineBlock) rocketComponents));
|
addAttachedPart(new EngineBlockDTO((EngineBlock) rocketComponents));
|
||||||
} else if (rocketComponents instanceof TubeCoupler) {
|
} else if (rocketComponents instanceof TubeCoupler) {
|
||||||
attachedParts.add(new TubeCouplerDTO((TubeCoupler) rocketComponents));
|
addAttachedPart(new TubeCouplerDTO((TubeCoupler) rocketComponents));
|
||||||
} else if (rocketComponents instanceof CenteringRing) {
|
} else if (rocketComponents instanceof CenteringRing) {
|
||||||
attachedParts.add(new CenteringRingDTO((CenteringRing) rocketComponents));
|
addAttachedPart(new CenteringRingDTO((CenteringRing) rocketComponents));
|
||||||
} else if (rocketComponents instanceof Bulkhead) {
|
} else if (rocketComponents instanceof Bulkhead) {
|
||||||
attachedParts.add(new BulkheadDTO((Bulkhead) rocketComponents));
|
addAttachedPart(new BulkheadDTO((Bulkhead) rocketComponents));
|
||||||
} else if (rocketComponents instanceof Streamer) {
|
} else if (rocketComponents instanceof Streamer) {
|
||||||
attachedParts.add(new StreamerDTO((Streamer) rocketComponents));
|
addAttachedPart(new StreamerDTO((Streamer) rocketComponents));
|
||||||
} else if (rocketComponents instanceof Parachute) {
|
} else if (rocketComponents instanceof Parachute) {
|
||||||
attachedParts.add(new ParachuteDTO((Parachute) rocketComponents));
|
addAttachedPart(new ParachuteDTO((Parachute) rocketComponents));
|
||||||
} else if (rocketComponents instanceof MassObject) {
|
} 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.
|
//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
|
@Override
|
||||||
public void addAttachedPart(BasePartDTO part) {
|
public void addAttachedPart(BasePartDTO part) {
|
||||||
attachedParts.add(part);
|
if (!attachedParts.contains(part)) {
|
||||||
|
attachedParts.add(part);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,11 +1,26 @@
|
|||||||
package net.sf.openrocket.file.rocksim.export;
|
package net.sf.openrocket.file.rocksim.export;
|
||||||
|
|
||||||
import net.sf.openrocket.file.rocksim.RockSimCommonConstants;
|
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.TubeCoupler;
|
||||||
|
import net.sf.openrocket.rocketcomponent.position.AxialMethod;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlAccessType;
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
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.
|
* Conversion DTO for a TubeCoupler. TubeCoupler's are represented as Rings in Rocksim.
|
||||||
@ -23,4 +38,42 @@ public class TubeCouplerDTO extends CenteringRingDTO {
|
|||||||
super(tc);
|
super(tc);
|
||||||
setUsageCode(UsageCode.TubeCoupler);
|
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