Don't include inactive stages in Cp calculations
This commit is contained in:
parent
4a79581244
commit
77bad60155
@ -155,7 +155,7 @@ public class BarrowmanCalculator extends AbstractAerodynamicCalculator {
|
||||
for( RocketComponent child : comp.getChildren()) {
|
||||
// Ignore inactive stages
|
||||
if (child instanceof AxialStage &&
|
||||
!child.getRocket().getSelectedConfiguration().isStageActive(child.getStageNumber())) {
|
||||
!((AxialStage) child).isStageActive()) {
|
||||
continue;
|
||||
}
|
||||
// forces particular to each component
|
||||
@ -278,14 +278,28 @@ public class BarrowmanCalculator extends AbstractAerodynamicCalculator {
|
||||
|
||||
private boolean testIsContinuous( final RocketComponent treeRoot ){
|
||||
Queue<RocketComponent> queue = new LinkedList<>();
|
||||
queue.addAll(treeRoot.getChildren());
|
||||
for (RocketComponent child : treeRoot.getChildren()) {
|
||||
// Ignore inactive stages
|
||||
if (child instanceof AxialStage &&
|
||||
!((AxialStage) child).isStageActive()) {
|
||||
continue;
|
||||
}
|
||||
queue.add(child);
|
||||
}
|
||||
|
||||
boolean isContinuous = true;
|
||||
SymmetricComponent prevComp = null;
|
||||
while((isContinuous)&&( null != queue.peek())){
|
||||
RocketComponent comp = queue.poll();
|
||||
if( comp instanceof SymmetricComponent ){
|
||||
queue.addAll( comp.getChildren());
|
||||
for (RocketComponent child : comp.getChildren()) {
|
||||
// Ignore inactive stages
|
||||
if (child instanceof AxialStage &&
|
||||
!((AxialStage) child).isStageActive()) {
|
||||
continue;
|
||||
}
|
||||
queue.add(child);
|
||||
}
|
||||
|
||||
SymmetricComponent sym = (SymmetricComponent) comp;
|
||||
if( null == prevComp){
|
||||
|
@ -67,6 +67,23 @@ public class AxialStage extends ComponentAssembly implements FlightConfigurableC
|
||||
public boolean isCompatible(Class<? extends RocketComponent> type) {
|
||||
return BodyComponent.class.isAssignableFrom(type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the current stage is active in the currently selected configuration.
|
||||
* @return true if the stage is active, false if not
|
||||
*/
|
||||
public boolean isStageActive() {
|
||||
return getRocket().getSelectedConfiguration().isStageActive(getStageNumber());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the current stage is active in the flight configuration.
|
||||
* @param fc the flight configuration to check
|
||||
* @return true if the stage is active, false if not
|
||||
*/
|
||||
public boolean isStageActive(FlightConfiguration fc) {
|
||||
return fc.isStageActive(getStageNumber());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFlightConfiguration(FlightConfigurationId oldConfigId, FlightConfigurationId newConfigId) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user