]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/JSBSim.hxx
Merge branch 'next' into attenuation
[flightgear.git] / src / FDM / JSBSim / JSBSim.hxx
index 1a80371677d69ec2927a9f8d63bed724244060e9..80b3f3c3aaac930a1d3174c7cdf6d663884dc50f 100644 (file)
@@ -38,7 +38,6 @@ INCLUDES
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
 #undef MAX_ENGINES
-#include "math/FGColumnVector3.h"
 
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 DEFINITIONS
@@ -59,6 +58,7 @@ FORWARD DECLARATIONS
 
 namespace JSBSim {
 class FGAtmosphere;
+class FGWinds;
 class FGFCS;
 class FGPropulsion;
 class FGMassBalance;
@@ -69,6 +69,8 @@ class FGPropagate;
 class FGAuxiliary;
 class FGOutput;
 class FGInitialCondition;
+class FGLocation;
+class FGAccelerations;
 }
 
 // Adding it here will cause a namespace clash in FlightGear -EMH-
@@ -110,6 +112,15 @@ public:
     /// Reset flight params to a specific position
     void init();
 
+    /// Unbind properties
+    void unbind();
+
+    /// Suspend integration
+    void suspend();
+
+    /// Resume integration
+    void resume();
+
     /// @name Position Parameter Set
     //@{
     /** Set geocentric latitude
@@ -200,10 +211,9 @@ public:
     /** Update the position based on inputs, positions, velocities, etc.
         @param dt delta time in seconds. */
     void update(double dt);
+
     bool ToggleDataLogging(bool state);
     bool ToggleDataLogging(void);
-    void do_trim(void);
-    void update_ic(void);
 
     bool get_agl_ft(double t, const double pt[3], double alt_off,
                     double contact[3], double normal[3], double vel[3],
@@ -213,16 +223,18 @@ private:
     JSBSim::FGInitialCondition *fgic;
     bool needTrim;
 
-    JSBSim::FGAtmosphere*   Atmosphere;
-    JSBSim::FGFCS*          FCS;
-    JSBSim::FGPropulsion*   Propulsion;
-    JSBSim::FGMassBalance*  MassBalance;
-    JSBSim::FGAircraft*     Aircraft;
-    JSBSim::FGPropagate*    Propagate;
-    JSBSim::FGAuxiliary*    Auxiliary;
-    JSBSim::FGAerodynamics* Aerodynamics;
+    JSBSim::FGAtmosphere*      Atmosphere;
+    JSBSim::FGWinds*           Winds;
+    JSBSim::FGFCS*             FCS;
+    JSBSim::FGPropulsion*      Propulsion;
+    JSBSim::FGMassBalance*     MassBalance;
+    JSBSim::FGAircraft*        Aircraft;
+    JSBSim::FGPropagate*       Propagate;
+    JSBSim::FGAuxiliary*       Auxiliary;
+    JSBSim::FGAerodynamics*    Aerodynamics;
     JSBSim::FGGroundReactions* GroundReactions;
-    JSBSim::FGInertial*     Inertial;
+    JSBSim::FGInertial*        Inertial;
+    JSBSim::FGAccelerations*   Accelerations;
 
     int runcount;
     double trim_elev;
@@ -261,9 +273,11 @@ private:
 
     SGPropertyNode_ptr temperature;
     SGPropertyNode_ptr pressure;
-    SGPropertyNode_ptr density;
+    SGPropertyNode_ptr pressureSL;
+    SGPropertyNode_ptr ground_wind;
     SGPropertyNode_ptr turbulence_gain;
     SGPropertyNode_ptr turbulence_rate;
+    SGPropertyNode_ptr turbulence_model;
 
     SGPropertyNode_ptr wind_from_north;
     SGPropertyNode_ptr wind_from_east;
@@ -271,6 +285,8 @@ private:
 
     SGPropertyNode_ptr slaved;
 
+    static std::map<std::string,int> TURBULENCE_TYPE_NAMES;
+
     double last_hook_tip[3];
     double last_hook_root[3];
     JSBSim::FGColumnVector3 hook_root_struct;
@@ -279,12 +295,13 @@ private:
 
     bool crashed;
 
+    void do_trim(void);
+
+    bool update_ground_cache(JSBSim::FGLocation cart, double* cart_pos, double dt);
     void init_gear(void);
     void update_gear(void);
 
     void update_external_forces(double t_off);
-
-    void resetPropertyState();
 };