Remove validation when modifying fin tab
This commit is contained in:
parent
f51ce5e931
commit
d635ed4c74
@ -253,9 +253,9 @@ class DocumentConfig {
|
|||||||
setters.put("FinSet:cant", new DoubleSetter(
|
setters.put("FinSet:cant", new DoubleSetter(
|
||||||
Reflection.findMethod(FinSet.class, "setCantAngle", double.class), Math.PI / 180.0));
|
Reflection.findMethod(FinSet.class, "setCantAngle", double.class), Math.PI / 180.0));
|
||||||
setters.put("FinSet:tabheight", new DoubleSetter(
|
setters.put("FinSet:tabheight", new DoubleSetter(
|
||||||
Reflection.findMethod(FinSet.class, "setTabHeightNoValidate", double.class)));
|
Reflection.findMethod(FinSet.class, "setTabHeight", double.class)));
|
||||||
setters.put("FinSet:tablength", new DoubleSetter(
|
setters.put("FinSet:tablength", new DoubleSetter(
|
||||||
Reflection.findMethod(FinSet.class, "setTabLengthNoValidate", double.class)));
|
Reflection.findMethod(FinSet.class, "setTabLength", double.class)));
|
||||||
setters.put("FinSet:tabposition", new FinTabPositionSetter());
|
setters.put("FinSet:tabposition", new FinTabPositionSetter());
|
||||||
setters.put("FinSet:filletradius", new DoubleSetter(
|
setters.put("FinSet:filletradius", new DoubleSetter(
|
||||||
Reflection.findMethod(FinSet.class, "setFilletRadius", double.class)));
|
Reflection.findMethod(FinSet.class, "setFilletRadius", double.class)));
|
||||||
|
@ -11,7 +11,7 @@ import net.sf.openrocket.util.Reflection;
|
|||||||
class FinTabPositionSetter extends DoubleSetter {
|
class FinTabPositionSetter extends DoubleSetter {
|
||||||
|
|
||||||
public FinTabPositionSetter() {
|
public FinTabPositionSetter() {
|
||||||
super(Reflection.findMethod(FinSet.class, "setTabOffsetNoValidate", double.class));
|
super(Reflection.findMethod(FinSet.class, "setTabOffset", double.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -315,9 +315,9 @@ class FinSetHandler extends AbstractElementHandler {
|
|||||||
result.setFinish(finish);
|
result.setFinish(finish);
|
||||||
//All TTW tabs in Rocksim are relative to the front of the fin.
|
//All TTW tabs in Rocksim are relative to the front of the fin.
|
||||||
result.setTabOffsetMethod( AxialMethod.TOP);
|
result.setTabOffsetMethod( AxialMethod.TOP);
|
||||||
result.setTabHeightNoValidate(tabDepth);
|
result.setTabHeight(tabDepth);
|
||||||
result.setTabLengthNoValidate(tabLength);
|
result.setTabLength(tabLength);
|
||||||
result.setTabOffsetNoValidate(taboffset);
|
result.setTabOffset(taboffset);
|
||||||
result.setBaseRotation(radialAngle);
|
result.setBaseRotation(radialAngle);
|
||||||
result.setCrossSection(convertTipShapeCode(tipShapeCode));
|
result.setCrossSection(convertTipShapeCode(tipShapeCode));
|
||||||
result.setAxialMethod(axialMethod);
|
result.setAxialMethod(axialMethod);
|
||||||
|
@ -247,45 +247,30 @@ public abstract class FinSet extends ExternalComponent implements RingInstanceab
|
|||||||
public double getTabHeight() {
|
public double getTabHeight() {
|
||||||
return tabHeight;
|
return tabHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* wrapper to call setTabHeight without validating tab.
|
|
||||||
* This is intended to be used when reading a rocket from a file,
|
|
||||||
* since if the fin tab is read before the fin, validation will
|
|
||||||
* reduce the tab length to the default fin length
|
|
||||||
*/
|
|
||||||
public void setTabHeightNoValidate(final double heightRequest) {
|
|
||||||
setTabHeight(heightRequest, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* wrapper to call setTabHeight and validate tab.
|
|
||||||
* This is intended to be used from the GUI
|
|
||||||
*/
|
|
||||||
public void setTabHeight(final double heightRequest) {
|
|
||||||
setTabHeight(heightRequest, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the height from the fin's base at the reference point -- i.e. where the tab is located from. If the tab is located via BOTTOM, then the back edge will be
|
* Set the height from the fin's base at the reference point --
|
||||||
* <code>height</code> deep, and the bottom edge of the tab will be parallel to the stage centerline. If the tab is located via TOP, the the front edge will have corresponding height/depth.
|
* i.e. where the tab is located from. If the tab is located via
|
||||||
|
* BOTTOM, then the back edge will be <code>height</code> deep,
|
||||||
|
* and the bottom edge of the tab will be parallel to the stage
|
||||||
|
* centerline. If the tab is located via TOP, the the front edge
|
||||||
|
* will have corresponding height/depth.
|
||||||
* If the tab is located via MIDDLE, the tab's midpoint is used.
|
* If the tab is located via MIDDLE, the tab's midpoint is used.
|
||||||
*
|
*
|
||||||
* Note this function also does bounds checking, and will not set a tab height that passes through it's parent's midpoint.
|
* Note this function also does bounds checking, and will not set
|
||||||
|
* a tab height that passes through it's parent's midpoint.
|
||||||
*
|
*
|
||||||
* @param newHeightRequest how deep the fin tab should project from the fin root, at the reference point
|
* @param newHeightRequest how deep the fin tab should project
|
||||||
|
* from the fin root, at the reference point
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private void setTabHeight(final double heightRequest, final boolean validate) {
|
public void setTabHeight(final double heightRequest) {
|
||||||
if (MathUtil.equals(this.tabHeight, MathUtil.max(heightRequest, 0))){
|
if (MathUtil.equals(this.tabHeight, MathUtil.max(heightRequest, 0))){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
tabHeight = heightRequest;
|
tabHeight = heightRequest;
|
||||||
|
|
||||||
if (validate)
|
|
||||||
validateFinTab();
|
|
||||||
|
|
||||||
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
|
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,58 +280,17 @@ public abstract class FinSet extends ExternalComponent implements RingInstanceab
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapper to call setTabLength with no validation
|
* set tab length
|
||||||
* This is only intended to be used when reading a
|
|
||||||
* rocket from a file. If the fin tab is read before
|
|
||||||
* the fin, validation will reduce the length of the tab
|
|
||||||
* to the default length of the fin
|
|
||||||
*/
|
|
||||||
public void setTabLengthNoValidate(final double lengthRequest) {
|
|
||||||
setTabLength(lengthRequest, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Wrapper to call full setTabLength function, and validate
|
|
||||||
* tab length
|
|
||||||
*/
|
*/
|
||||||
public void setTabLength(final double lengthRequest) {
|
public void setTabLength(final double lengthRequest) {
|
||||||
setTabLength(lengthRequest, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* set tab length and optionally validate parameters
|
|
||||||
*/
|
|
||||||
private void setTabLength(final double lengthRequest, final boolean validate) {
|
|
||||||
if (MathUtil.equals(tabLength, MathUtil.max(lengthRequest, 0))) {
|
if (MathUtil.equals(tabLength, MathUtil.max(lengthRequest, 0))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
tabLength = lengthRequest;
|
tabLength = lengthRequest;
|
||||||
|
|
||||||
if (validate) {
|
|
||||||
validateFinTab();
|
|
||||||
}
|
|
||||||
|
|
||||||
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
|
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* wrapper to call setTabOffset without validating tab.
|
|
||||||
* This is intended to be used when reading a rocket from a file,
|
|
||||||
* since if the fin tab is read before the fin, validation will
|
|
||||||
* reduce the tab length to the default fin length
|
|
||||||
*/
|
|
||||||
public void setTabOffsetNoValidate(final double offsetRequest) {
|
|
||||||
setTabOffset(offsetRequest, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* wrapper to call setTabOffset and validate tab.
|
|
||||||
* This is intended to be used in the gui
|
|
||||||
*/
|
|
||||||
public void setTabOffset(final double offsetRequest) {
|
|
||||||
setTabOffset(offsetRequest, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* internally, set the internal offset and optionally validate tab
|
* internally, set the internal offset and optionally validate tab
|
||||||
@ -354,13 +298,10 @@ public abstract class FinSet extends ExternalComponent implements RingInstanceab
|
|||||||
* @param offsetRequest new requested shift of tab -- from
|
* @param offsetRequest new requested shift of tab -- from
|
||||||
* @param validate wehther or not to validate
|
* @param validate wehther or not to validate
|
||||||
*/
|
*/
|
||||||
private void setTabOffset( final double offsetRequest, final boolean validate) {
|
public void setTabOffset( final double offsetRequest) {
|
||||||
tabOffset = offsetRequest;
|
tabOffset = offsetRequest;
|
||||||
tabPosition = tabOffsetMethod.getAsPosition( tabOffset, tabLength, length);
|
tabPosition = tabOffsetMethod.getAsPosition( tabOffset, tabLength, length);
|
||||||
|
|
||||||
if (validate) {
|
|
||||||
validateFinTab();
|
|
||||||
}
|
|
||||||
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
|
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user