[fixes #1164] Account for different RockSim FinSet location directions
This commit is contained in:
parent
d614c77fa7
commit
d2acd0ed01
@ -146,6 +146,11 @@ class FinSetHandler extends AbstractElementHandler {
|
|||||||
|
|
||||||
private final RockSimAppearanceBuilder appearanceBuilder;
|
private final RockSimAppearanceBuilder appearanceBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the location is already loaded in or not
|
||||||
|
*/
|
||||||
|
private boolean locationLoaded = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*
|
*
|
||||||
@ -180,12 +185,27 @@ class FinSetHandler extends AbstractElementHandler {
|
|||||||
finish = RocksimFinishCode.fromCode(Integer.parseInt(content)).asOpenRocket();
|
finish = RocksimFinishCode.fromCode(Integer.parseInt(content)).asOpenRocket();
|
||||||
}
|
}
|
||||||
if (RocksimCommonConstants.XB.equals(element)) {
|
if (RocksimCommonConstants.XB.equals(element)) {
|
||||||
// Opposite value accounts for the different relative distance directions used
|
location = Double.parseDouble(content) / RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_LENGTH;
|
||||||
|
|
||||||
|
// Account for the different relative distance directions used
|
||||||
// Issue Ref: https://github.com/openrocket/openrocket/issues/881
|
// Issue Ref: https://github.com/openrocket/openrocket/issues/881
|
||||||
location = -Double.parseDouble(content) / RocksimCommonConstants.ROCKSIM_TO_OPENROCKET_LENGTH;
|
if (axialMethod != null) {
|
||||||
|
if (axialMethod == AxialMethod.BOTTOM) {
|
||||||
|
location = -location;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.locationLoaded = true;
|
||||||
}
|
}
|
||||||
if (RocksimCommonConstants.LOCATION_MODE.equals(element)) {
|
if (RocksimCommonConstants.LOCATION_MODE.equals(element)) {
|
||||||
axialMethod = RocksimLocationMode.fromCode(Integer.parseInt(content)).asOpenRocket();
|
axialMethod = RocksimLocationMode.fromCode(Integer.parseInt(content)).asOpenRocket();
|
||||||
|
|
||||||
|
// If the location is loaded before the axialMethod, we still need to correct for the different relative distance directions
|
||||||
|
if (locationLoaded) {
|
||||||
|
if (axialMethod == AxialMethod.BOTTOM) {
|
||||||
|
location = -location;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (RocksimCommonConstants.FIN_COUNT.equals(element)) {
|
if (RocksimCommonConstants.FIN_COUNT.equals(element)) {
|
||||||
finCount = Integer.parseInt(content);
|
finCount = Integer.parseInt(content);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user