package net.sf.openrocket.simulation.listeners; import net.sf.openrocket.aerodynamics.AerodynamicForces; import net.sf.openrocket.aerodynamics.FlightConditions; import net.sf.openrocket.models.atmosphere.AtmosphericConditions; import net.sf.openrocket.motor.MotorId; import net.sf.openrocket.motor.MotorInstance; import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.RecoveryDevice; import net.sf.openrocket.simulation.AccelerationData; import net.sf.openrocket.simulation.FlightEvent; import net.sf.openrocket.simulation.MassData; import net.sf.openrocket.simulation.SimulationStatus; import net.sf.openrocket.simulation.exception.SimulationException; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.Coordinate; /** * An abstract base class for implementing simulation listeners. This class implements all * of the simulation listener interfaces using methods that have no effect on the simulation. * The recommended way of implementing simulation listeners is to extend this class. * * @author Sampo Niskanen <sampo.niskanen@iki.fi> */ public class AbstractSimulationListener implements SimulationListener, SimulationComputationListener, SimulationEventListener, Cloneable { //// SimulationListener //// @Override public void startSimulation(SimulationStatus status) throws SimulationException { // No-op } @Override public void endSimulation(SimulationStatus status, SimulationException exception) { // No-op } @Override public boolean preStep(SimulationStatus status) throws SimulationException { return true; } @Override public void postStep(SimulationStatus status) throws SimulationException { // No-op } /** * {@inheritDoc} * <p> * <em>This implementation of the method always returns <code>false</code>.</em> */ @Override public boolean isSystemListener() { return false; } //// SimulationEventListener //// @Override public boolean addFlightEvent(SimulationStatus status, FlightEvent event) throws SimulationException { return true; } @Override public boolean handleFlightEvent(SimulationStatus status, FlightEvent event) throws SimulationException { return true; } @Override public boolean motorIgnition(SimulationStatus status, MotorId motorId, MotorMount mount, MotorInstance instance) throws SimulationException { return true; } @Override public boolean recoveryDeviceDeployment(SimulationStatus status, RecoveryDevice recoveryDevice) throws SimulationException { return true; } //// SimulationComputationListener //// @Override public AccelerationData preAccelerationCalculation(SimulationStatus status) throws SimulationException { return null; } @Override public AerodynamicForces preAerodynamicCalculation(SimulationStatus status) throws SimulationException { return null; } @Override public AtmosphericConditions preAtmosphericModel(SimulationStatus status) throws SimulationException { return null; } @Override public FlightConditions preFlightConditions(SimulationStatus status) throws SimulationException { return null; } @Override public double preGravityModel(SimulationStatus status) throws SimulationException { return Double.NaN; } @Override public MassData preMassCalculation(SimulationStatus status) throws SimulationException { return null; } @Override public double preSimpleThrustCalculation(SimulationStatus status) throws SimulationException { return Double.NaN; } @Override public Coordinate preWindModel(SimulationStatus status) throws SimulationException { return null; } @Override public AccelerationData postAccelerationCalculation(SimulationStatus status, AccelerationData acceleration) throws SimulationException { return null; } @Override public AerodynamicForces postAerodynamicCalculation(SimulationStatus status, AerodynamicForces forces) throws SimulationException { return null; } @Override public AtmosphericConditions postAtmosphericModel(SimulationStatus status, AtmosphericConditions atmosphericConditions) throws SimulationException { return null; } @Override public FlightConditions postFlightConditions(SimulationStatus status, FlightConditions flightConditions) throws SimulationException { return null; } @Override public double postGravityModel(SimulationStatus status, double gravity) throws SimulationException { return Double.NaN; } @Override public MassData postMassCalculation(SimulationStatus status, MassData massData) throws SimulationException { return null; } @Override public double postSimpleThrustCalculation(SimulationStatus status, double thrust) throws SimulationException { return Double.NaN; } @Override public Coordinate postWindModel(SimulationStatus status, Coordinate wind) throws SimulationException { return null; } @Override public AbstractSimulationListener clone() { try { return (AbstractSimulationListener) super.clone(); } catch (CloneNotSupportedException e) { throw new BugException(e); } } }