Merge pull request #669 from teyrana/666-fix-oob
Resolves #666 -- fix the "Exception loading stream" error while loading certain rockets.
This commit is contained in:
commit
93e34c47d8
@ -299,7 +299,7 @@ public abstract class FinSet extends ExternalComponent implements RingInstanceab
|
|||||||
/**
|
/**
|
||||||
* internally, set the internal offset and optionally validate tab
|
* internally, set the internal offset and optionally validate tab
|
||||||
*
|
*
|
||||||
* @param offsetRequest new requested tob offset
|
* @param offsetRequest new requested tab offset
|
||||||
*/
|
*/
|
||||||
public void setTabOffset( final double offsetRequest) {
|
public void setTabOffset( final double offsetRequest) {
|
||||||
tabOffset = offsetRequest;
|
tabOffset = offsetRequest;
|
||||||
|
@ -570,21 +570,21 @@ public abstract class SymmetricComponent extends BodyComponent implements Radial
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// might be: (a) Rocket -- for centerline stages
|
final ComponentAssembly assembly = this.getAssembly();
|
||||||
// (b) BodyTube -- for Parallel Stages
|
// might be: (a) Rocket -- for Centerline/Axial stages
|
||||||
final AxialStage stage = this.getStage();
|
// (b) BodyTube -- for Parallel Stages & PodSets
|
||||||
final RocketComponent stageParent = stage.getParent();
|
final RocketComponent assemblyParent = assembly.getParent();
|
||||||
|
|
||||||
// note: this is not guaranteed to _contain_ a stage... but that we're _searching_ for one.
|
// note: this is not guaranteed to _contain_ a stage... but that we're _searching_ for one.
|
||||||
int stageIndex = stageParent.getChildPosition(stage);
|
int assemblyIndex = assemblyParent.getChildPosition(assembly); // position of stage w/in parent
|
||||||
int symmetricIndex = this.parent.getChildPosition(this)-1;
|
int symmetricIndex = this.parent.getChildPosition(this)-1; // guess at index of previous stage
|
||||||
|
|
||||||
while( 0 <= stageIndex ) {
|
while( 0 <= assemblyIndex ) {
|
||||||
final RocketComponent prevStage = stageParent.getChild(stageIndex);
|
final RocketComponent searchAssembly = assemblyParent.getChild(assemblyIndex);
|
||||||
|
|
||||||
if(prevStage instanceof AxialStage){
|
if(searchAssembly instanceof ComponentAssembly){
|
||||||
while (0 <= symmetricIndex) {
|
while (0 <= symmetricIndex) {
|
||||||
final RocketComponent previousSymmetric = prevStage.getChild(symmetricIndex);
|
final RocketComponent previousSymmetric = searchAssembly.getChild(symmetricIndex);
|
||||||
|
|
||||||
if (previousSymmetric instanceof SymmetricComponent) {
|
if (previousSymmetric instanceof SymmetricComponent) {
|
||||||
return (SymmetricComponent) previousSymmetric;
|
return (SymmetricComponent) previousSymmetric;
|
||||||
@ -592,8 +592,8 @@ public abstract class SymmetricComponent extends BodyComponent implements Radial
|
|||||||
--symmetricIndex;
|
--symmetricIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
--stageIndex;
|
--assemblyIndex;
|
||||||
symmetricIndex = prevStage.getChildCount() - 1;
|
symmetricIndex = searchAssembly.getChildCount() - 1;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -608,21 +608,21 @@ public abstract class SymmetricComponent extends BodyComponent implements Radial
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final ComponentAssembly assembly = this.getAssembly();
|
||||||
// might be: (a) Rocket -- for centerline stages
|
// might be: (a) Rocket -- for centerline stages
|
||||||
// (b) BodyTube -- for Parallel Stages
|
// (b) BodyTube -- for Parallel Stages
|
||||||
final AxialStage stage = this.getStage();
|
final RocketComponent assemblyParent = assembly.getParent();
|
||||||
final RocketComponent stageParent = stage.getParent();
|
|
||||||
|
|
||||||
// note: this is not guaranteed to _contain_ a stage... but that we're _searching_ for one.
|
// note: this is not guaranteed to _contain_ a stage... but that we're _searching_ for one.
|
||||||
int stageIndex = stageParent.getChildPosition(stage);
|
int assemblyIndex = assemblyParent.getChildPosition(assembly);
|
||||||
int symmetricIndex = this.parent.getChildPosition(this) + 1;
|
int symmetricIndex = this.parent.getChildPosition(this) + 1;
|
||||||
|
|
||||||
while(stageIndex < stageParent.getChildCount()) {
|
while(assemblyIndex < assemblyParent.getChildCount()) {
|
||||||
final RocketComponent nextStage = stageParent.getChild(stageIndex);
|
final RocketComponent searchAssembly = assemblyParent.getChild(assemblyIndex);
|
||||||
|
|
||||||
if(nextStage instanceof AxialStage){
|
if(searchAssembly instanceof ComponentAssembly){
|
||||||
while (symmetricIndex < nextStage.getChildCount()) {
|
while (symmetricIndex < searchAssembly.getChildCount()) {
|
||||||
final RocketComponent nextSymmetric = nextStage.getChild(symmetricIndex);
|
final RocketComponent nextSymmetric = searchAssembly.getChild(symmetricIndex);
|
||||||
|
|
||||||
if (nextSymmetric instanceof SymmetricComponent) {
|
if (nextSymmetric instanceof SymmetricComponent) {
|
||||||
return (SymmetricComponent) nextSymmetric;
|
return (SymmetricComponent) nextSymmetric;
|
||||||
@ -630,8 +630,8 @@ public abstract class SymmetricComponent extends BodyComponent implements Radial
|
|||||||
++symmetricIndex;
|
++symmetricIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
++stageIndex;
|
++assemblyIndex;
|
||||||
symmetricIndex = nextStage.getChildCount() - 1;
|
symmetricIndex = searchAssembly.getChildCount() - 1;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user