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 String getName() {
32 return this.getClass().getSimpleName();
36 public String[] getMenuPosition() {
41 public void startSimulation(SimulationStatus status) throws SimulationException {
46 public void endSimulation(SimulationStatus status, SimulationException exception) {
51 public boolean preStep(SimulationStatus status) throws SimulationException {
56 public void postStep(SimulationStatus status) throws SimulationException {
63 * <em>This implementation of the method always returns <code>false</code>.</em>
66 public boolean isSystemListener() {
73 //// SimulationEventListener ////
76 public boolean addFlightEvent(SimulationStatus status, FlightEvent event) throws SimulationException {
81 public boolean handleFlightEvent(SimulationStatus status, FlightEvent event) throws SimulationException {
86 public boolean motorIgnition(SimulationStatus status, MotorId motorId, MotorMount mount, MotorInstance instance) throws SimulationException {
91 public boolean recoveryDeviceDeployment(SimulationStatus status, RecoveryDevice recoveryDevice) throws SimulationException {
97 //// SimulationComputationListener ////
100 public AccelerationData preAccelerationCalculation(SimulationStatus status) throws SimulationException {
105 public AerodynamicForces preAerodynamicCalculation(SimulationStatus status) throws SimulationException {
110 public AtmosphericConditions preAtmosphericModel(SimulationStatus status) throws SimulationException {
115 public FlightConditions preFlightConditions(SimulationStatus status) throws SimulationException {
120 public double preGravityModel(SimulationStatus status) throws SimulationException {
125 public MassData preMassCalculation(SimulationStatus status) throws SimulationException {
130 public double preSimpleThrustCalculation(SimulationStatus status) throws SimulationException {
135 public Coordinate preWindModel(SimulationStatus status) throws SimulationException {
140 public AccelerationData postAccelerationCalculation(SimulationStatus status, AccelerationData acceleration) throws SimulationException {
145 public AerodynamicForces postAerodynamicCalculation(SimulationStatus status, AerodynamicForces forces) throws SimulationException {
150 public AtmosphericConditions postAtmosphericModel(SimulationStatus status, AtmosphericConditions atmosphericConditions) throws SimulationException {
155 public FlightConditions postFlightConditions(SimulationStatus status, FlightConditions flightConditions) throws SimulationException {
160 public double postGravityModel(SimulationStatus status, double gravity) throws SimulationException {
165 public MassData postMassCalculation(SimulationStatus status, MassData massData) throws SimulationException {
170 public double postSimpleThrustCalculation(SimulationStatus status, double thrust) throws SimulationException {
175 public Coordinate postWindModel(SimulationStatus status, Coordinate wind) throws SimulationException {