package net.sf.openrocket.simulation;
import net.sf.openrocket.simulation.exception.SimulationException;
public interface SimulationStepper {
/**
* Initialize a simulation using this simulation stepper based on the provided
* current simulation status and launch conditions.
*
* @param status the current simulation status.
* @return a SimulationStatus suitable for simulating with this simulation stepper.
*/
public SimulationStatus initialize(SimulationStatus status);
/**
* Perform one simulation time step.
*
* @param status the current simulation status, of a type returned by {@link #initialize(SimulationStatus)}.
* @param maxTimeStep the maximum time step to take. This is an upper bound and can be used to limit a stepper
* from stepping over upcoming flight events (motor ignition etc).
*/
public void step(SimulationStatus status, double maxTimeStep) throws SimulationException;
}