#include "FGModel.h"
#include "FGInitialCondition.h"
+#include "FGJSBBase.h"
#include <vector>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
class FGMassBalance;
class FGAerodynamics;
class FGInertial;
+class FGGroundReactions;
class FGAircraft;
class FGTranslation;
class FGRotation;
class FGOutput;
class FGInitialCondition;
-struct condition {
- vector <eParam> TestParam;
- vector <eParam> SetParam;
- vector <float> TestValue;
- vector <float> SetValue;
- vector <string> Comparison;
- vector <float> TC;
- vector <bool> Persistent;
- vector <eAction> Action;
- vector <eType> Type;
- vector <bool> Triggered;
- vector <float> newValue;
- vector <float> OriginalValue;
- vector <float> StartTime;
- vector <float> EndTime;
-
- condition() {
- }
-};
-
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
CLASS DECLARATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-class FGFDMExec
+class FGFDMExec : public FGJSBBase
{
public:
/// Default constructor
inline FGAerodynamics* GetAerodynamics(void){return Aerodynamics;}
/// Returns the FGInertial pointer.
inline FGInertial* GetInertial(void) {return Inertial;}
+ /// Returns the FGGroundReactions pointer.
+ inline FGGroundReactions* GetGroundReactions(void) {return GroundReactions;}
/// Returns the FGAircraft pointer.
inline FGAircraft* GetAircraft(void) {return Aircraft;}
/// Returns the FGTranslation pointer.
inline string GetAircraftPath(void) {return AircraftPath;}
private:
+ enum eAction {
+ FG_RAMP = 1,
+ FG_STEP = 2,
+ FG_EXP = 3
+ };
+
+ enum eType {
+ FG_VALUE = 1,
+ FG_DELTA = 2,
+ FG_BOOL = 3
+ };
+
+ struct condition {
+ vector <eParam> TestParam;
+ vector <eParam> SetParam;
+ vector <double> TestValue;
+ vector <double> SetValue;
+ vector <string> Comparison;
+ vector <double> TC;
+ vector <bool> Persistent;
+ vector <eAction> Action;
+ vector <eType> Type;
+ vector <bool> Triggered;
+ vector <double> newValue;
+ vector <double> OriginalValue;
+ vector <double> StartTime;
+ vector <double> EndTime;
+
+ condition() {
+ }
+ };
+
FGModel* FirstModel;
bool frozen;
bool terminate;
int Error;
- int Frame;
+ unsigned int Frame;
+ unsigned int IdFDM;
+ static unsigned int FDMctr;
bool modelLoaded;
bool Scripted;
string EnginePath;
string ScriptPath;
string ScriptName;
- float StartTime;
- float EndTime;
+ double StartTime;
+ double EndTime;
vector <struct condition> Conditions;
- FGState* State;
- FGAtmosphere* Atmosphere;
- FGFCS* FCS;
- FGPropulsion* Propulsion;
- FGMassBalance* MassBalance;
- FGAerodynamics* Aerodynamics;
- FGInertial* Inertial;
- FGAircraft* Aircraft;
- FGTranslation* Translation;
- FGRotation* Rotation;
- FGPosition* Position;
- FGAuxiliary* Auxiliary;
- FGOutput* Output;
+ FGState* State;
+ FGAtmosphere* Atmosphere;
+ FGFCS* FCS;
+ FGPropulsion* Propulsion;
+ FGMassBalance* MassBalance;
+ FGAerodynamics* Aerodynamics;
+ FGInertial* Inertial;
+ FGGroundReactions* GroundReactions;
+ FGAircraft* Aircraft;
+ FGTranslation* Translation;
+ FGRotation* Rotation;
+ FGPosition* Position;
+ FGAuxiliary* Auxiliary;
+ FGOutput* Output;
bool Allocate(void);
bool DeAllocate(void);
- void Debug(void);
+ void Debug(int from);
};
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%