- Implemented a DampingMoment simulation listener example
[debian/openrocket] / core / src / net / sf / openrocket / simulation / customexpression / CustomExpressionSimulationListener.java
1 package net.sf.openrocket.simulation.customexpression;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import net.sf.openrocket.logging.LogHelper;
7 import net.sf.openrocket.simulation.FlightDataBranch;
8 import net.sf.openrocket.simulation.SimulationStatus;
9 import net.sf.openrocket.simulation.exception.SimulationException;
10 import net.sf.openrocket.simulation.listeners.AbstractSimulationListener;
11 import net.sf.openrocket.startup.Application;
12
13 public class CustomExpressionSimulationListener extends AbstractSimulationListener {
14
15         private static final LogHelper log = Application.getLogger();
16         private final List<CustomExpression> expressions;
17         
18         public CustomExpressionSimulationListener(List<CustomExpression> expressions) {
19                 super();
20                 this.expressions = expressions;
21         }
22
23         @Override
24         public void postStep(SimulationStatus status) throws SimulationException {
25                 if ( expressions == null || expressions.size() == 0 ) {
26                         return;
27                 }
28                 // Calculate values for custom expressions
29                 FlightDataBranch data = status.getFlightData();
30                 for (CustomExpression expression : expressions ) {
31                         double value = expression.evaluateDouble(status);
32                         //log.debug("Setting value of custom expression "+expression.toString()+" = "+value);
33                         data.setValue(expression.getType(), value);
34                 }
35                 
36
37         }
38
39         @Override
40         public boolean isSystemListener(){
41                 return true;
42         }
43         
44 }