package net.sf.openrocket.simulation.customexpression;
import java.util.List;
import net.sf.openrocket.simulation.FlightDataBranch;
import net.sf.openrocket.simulation.SimulationStatus;
import net.sf.openrocket.simulation.exception.SimulationException;
import net.sf.openrocket.simulation.listeners.AbstractSimulationListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CustomExpressionSimulationListener extends AbstractSimulationListener {
private static final Logger log = LoggerFactory.getLogger(CustomExpressionSimulationListener.class);
private final List<CustomExpression> expressions;
public CustomExpressionSimulationListener(List<CustomExpression> expressions) {
super();
this.expressions = expressions;
}
@Override
public void postStep(SimulationStatus status) throws SimulationException {
if (expressions == null || expressions.size() == 0) {
return;
}
// Calculate values for custom expressions
FlightDataBranch data = status.getFlightData();
for (CustomExpression expression : expressions) {
double value = expression.evaluateDouble(status);
//log.debug("Setting value of custom expression "+expression.toString()+" = "+value);
data.setValue(expression.getType(), value);
}
}
@Override
public boolean isSystemListener() {
return true;
}
}