1 package net.sf.openrocket.simulation.listeners;
5 import net.sf.openrocket.aerodynamics.AerodynamicForces;
6 import net.sf.openrocket.aerodynamics.FlightConditions;
7 import net.sf.openrocket.models.atmosphere.AtmosphericConditions;
8 import net.sf.openrocket.motor.MotorId;
9 import net.sf.openrocket.motor.MotorInstance;
10 import net.sf.openrocket.rocketcomponent.MotorMount;
11 import net.sf.openrocket.rocketcomponent.RecoveryDevice;
12 import net.sf.openrocket.simulation.AccelerationData;
13 import net.sf.openrocket.simulation.FlightDataType;
14 import net.sf.openrocket.simulation.FlightEvent;
15 import net.sf.openrocket.simulation.MassData;
16 import net.sf.openrocket.simulation.SimulationStatus;
17 import net.sf.openrocket.simulation.exception.SimulationException;
18 import net.sf.openrocket.util.Coordinate;
22 * An abstract base class for implementing simulation listeners. This class implements all
23 * of the simulation listener interfaces using methods that have no effect on the simulation.
24 * The recommended way of implementing simulation listeners is to extend this class.
26 * @author Sampo Niskanen <sampo.niskanen@iki.fi>
28 public class AbstractSimulationListener implements SimulationListener, SimulationComputationListener,
29 SimulationEventListener {
31 //// SimulationListener ////
34 public String getName() {
35 return this.getClass().getSimpleName();
39 public String[] getMenuPosition() {
44 public void startSimulation(SimulationStatus status) throws SimulationException {
49 public void endSimulation(SimulationStatus status, SimulationException exception) {
54 public boolean preStep(SimulationStatus status) throws SimulationException {
59 public void postStep(SimulationStatus status) throws SimulationException {
66 * <em>This implementation of the method always returns <code>false</code>.</em>
69 public boolean isSystemListener() {
74 * Return an array of any flight data types this listener creates.
77 public FlightDataType[] getFlightDataTypes(){
78 return new FlightDataType[] {};
82 //// SimulationEventListener ////
85 public boolean addFlightEvent(SimulationStatus status, FlightEvent event) throws SimulationException {
90 public boolean handleFlightEvent(SimulationStatus status, FlightEvent event) throws SimulationException {
95 public boolean motorIgnition(SimulationStatus status, MotorId motorId, MotorMount mount, MotorInstance instance) throws SimulationException {
100 public boolean recoveryDeviceDeployment(SimulationStatus status, RecoveryDevice recoveryDevice) throws SimulationException {
106 //// SimulationComputationListener ////
109 public AccelerationData preAccelerationCalculation(SimulationStatus status) throws SimulationException {
114 public AerodynamicForces preAerodynamicCalculation(SimulationStatus status) throws SimulationException {
119 public AtmosphericConditions preAtmosphericModel(SimulationStatus status) throws SimulationException {
124 public FlightConditions preFlightConditions(SimulationStatus status) throws SimulationException {
129 public double preGravityModel(SimulationStatus status) throws SimulationException {
134 public MassData preMassCalculation(SimulationStatus status) throws SimulationException {
139 public double preSimpleThrustCalculation(SimulationStatus status) throws SimulationException {
144 public Coordinate preWindModel(SimulationStatus status) throws SimulationException {
149 public AccelerationData postAccelerationCalculation(SimulationStatus status, AccelerationData acceleration) throws SimulationException {
154 public AerodynamicForces postAerodynamicCalculation(SimulationStatus status, AerodynamicForces forces) throws SimulationException {
159 public AtmosphericConditions postAtmosphericModel(SimulationStatus status, AtmosphericConditions atmosphericConditions) throws SimulationException {
164 public FlightConditions postFlightConditions(SimulationStatus status, FlightConditions flightConditions) throws SimulationException {
169 public double postGravityModel(SimulationStatus status, double gravity) throws SimulationException {
174 public MassData postMassCalculation(SimulationStatus status, MassData massData) throws SimulationException {
179 public double postSimpleThrustCalculation(SimulationStatus status, double thrust) throws SimulationException {
184 public Coordinate postWindModel(SimulationStatus status, Coordinate wind) throws SimulationException {