1 package net.sf.openrocket.simulation.listeners;
3 import net.sf.openrocket.aerodynamics.AerodynamicForces;
4 import net.sf.openrocket.aerodynamics.FlightConditions;
5 import net.sf.openrocket.models.atmosphere.AtmosphericConditions;
6 import net.sf.openrocket.motor.MotorId;
7 import net.sf.openrocket.motor.MotorInstance;
8 import net.sf.openrocket.rocketcomponent.MotorMount;
9 import net.sf.openrocket.rocketcomponent.RecoveryDevice;
10 import net.sf.openrocket.simulation.AccelerationData;
11 import net.sf.openrocket.simulation.FlightEvent;
12 import net.sf.openrocket.simulation.MassData;
13 import net.sf.openrocket.simulation.SimulationStatus;
14 import net.sf.openrocket.simulation.exception.SimulationException;
15 import net.sf.openrocket.util.Coordinate;
19 * An abstract base class for implementing simulation listeners. This class implements all
20 * of the simulation listener interfaces using methods that have no effect on the simulation.
21 * The recommended way of implementing simulation listeners is to extend this class.
23 * @author Sampo Niskanen <sampo.niskanen@iki.fi>
25 public class AbstractSimulationListener implements SimulationListener, SimulationComputationListener,
26 SimulationEventListener {
28 //// SimulationListener ////
31 public void startSimulation(SimulationStatus status) throws SimulationException {
36 public void endSimulation(SimulationStatus status, SimulationException exception) {
41 public boolean preStep(SimulationStatus status) throws SimulationException {
46 public void postStep(SimulationStatus status) throws SimulationException {
53 * <em>This implementation of the method always returns <code>false</code>.</em>
56 public boolean isSystemListener() {
63 //// SimulationEventListener ////
66 public boolean addFlightEvent(SimulationStatus status, FlightEvent event) throws SimulationException {
71 public boolean handleFlightEvent(SimulationStatus status, FlightEvent event) throws SimulationException {
76 public boolean motorIgnition(SimulationStatus status, MotorId motorId, MotorMount mount, MotorInstance instance) throws SimulationException {
81 public boolean recoveryDeviceDeployment(SimulationStatus status, RecoveryDevice recoveryDevice) throws SimulationException {
87 //// SimulationComputationListener ////
90 public AccelerationData preAccelerationCalculation(SimulationStatus status) throws SimulationException {
95 public AerodynamicForces preAerodynamicCalculation(SimulationStatus status) throws SimulationException {
100 public AtmosphericConditions preAtmosphericModel(SimulationStatus status) throws SimulationException {
105 public FlightConditions preFlightConditions(SimulationStatus status) throws SimulationException {
110 public double preGravityModel(SimulationStatus status) throws SimulationException {
115 public MassData preMassCalculation(SimulationStatus status) throws SimulationException {
120 public double preSimpleThrustCalculation(SimulationStatus status) throws SimulationException {
125 public Coordinate preWindModel(SimulationStatus status) throws SimulationException {
130 public AccelerationData postAccelerationCalculation(SimulationStatus status, AccelerationData acceleration) throws SimulationException {
135 public AerodynamicForces postAerodynamicCalculation(SimulationStatus status, AerodynamicForces forces) throws SimulationException {
140 public AtmosphericConditions postAtmosphericModel(SimulationStatus status, AtmosphericConditions atmosphericConditions) throws SimulationException {
145 public FlightConditions postFlightConditions(SimulationStatus status, FlightConditions flightConditions) throws SimulationException {
150 public double postGravityModel(SimulationStatus status, double gravity) throws SimulationException {
155 public MassData postMassCalculation(SimulationStatus status, MassData massData) throws SimulationException {
160 public double postSimpleThrustCalculation(SimulationStatus status, double thrust) throws SimulationException {
165 public Coordinate postWindModel(SimulationStatus status, Coordinate wind) throws SimulationException {