package net.sf.openrocket.rocketcomponent;
/**
* A component internal to the rocket. Internal components have no effect on the
* the aerodynamics of a rocket, only its mass properties (though the location of the
* components is not enforced to be within external components). Internal components
* are always attached relative to the parent component, which can be internal or
* external, or absolutely.
*
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
*/
public abstract class InternalComponent extends RocketComponent {
public InternalComponent() {
super(RocketComponent.Position.BOTTOM);
}
@Override
public final void setRelativePosition(RocketComponent.Position position) {
super.setRelativePosition(position);
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
}
@Override
public final void setPositionValue(double value) {
super.setPositionValue(value);
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
}
/**
* Non-aerodynamic components.
* @return <code>false</code>
*/
@Override
public final boolean isAerodynamic() {
return false;
}
/**
* Is massive.
* @return <code>true</code>
*/
@Override
public final boolean isMassive() {
return true;
}
}