]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/YASim/FGFDM.hpp
Add support for a turbo prop condition lever.
[flightgear.git] / src / FDM / YASim / FGFDM.hpp
index 1df02b65371d28fab4bed26954ac538288b6e2b6..66a842ba1350d640589b4725e76fc2b95687b146 100644 (file)
@@ -1,10 +1,11 @@
 #ifndef _FGFDM_HPP
 #define _FGFDM_HPP
 
-#include <simgear/easyxml.hxx>
+#include <simgear/xml/easyxml.hxx>
+#include <simgear/props/props.hxx>
 
 #include "Airplane.hpp"
-#include "util/Vector.hpp"
+#include "Vector.hpp"
 
 namespace yasim {
 
@@ -19,6 +20,7 @@ public:
     ~FGFDM();
     void init();
     void iterate(float dt);
+    void getExternalInput(float dt=1e6);
 
     Airplane* getAirplane();
 
@@ -27,27 +29,36 @@ public:
 
 private:
     struct AxisRec { char* name; int handle; };
-    struct EngRec { char* prefix; void* eng; };
+    struct EngRec { char* prefix; Thruster* eng; };
     struct WeightRec { char* prop; float size; int handle; };
+    struct PropOut { SGPropertyNode* prop; int handle, type; bool left;
+                     float min, max; };
 
-    void getExternalInput(float dt);
     void setOutputProperties();
 
+    Rotor* parseRotor(XMLAttributes* a, const char* name);
     Wing* parseWing(XMLAttributes* a, const char* name);
     int parseAxis(const char* name);
     int parseOutput(const char* name);
     void parseWeight(XMLAttributes* a);
+    void parseTurbineEngine(XMLAttributes* a);
+    void parsePistonEngine(XMLAttributes* a);
     void parsePropeller(XMLAttributes* a);
     bool eq(const char* a, const char* b);
+    bool caseeq(const char* a, const char* b);
     char* dup(const char* s);
     int attri(XMLAttributes* atts, char* attr);
     int attri(XMLAttributes* atts, char* attr, int def); 
     float attrf(XMLAttributes* atts, char* attr);
     float attrf(XMLAttributes* atts, char* attr, float def); 
+    bool attrb(XMLAttributes* atts, char* attr);
 
     // The core Airplane object we manage.
     Airplane _airplane;
 
+    // Aerodynamic turbulence model
+    Turbulence* _turb;
+
     // The list of "axes" that we expect to find as input.  These are
     // typically property names.
     Vector _axes;
@@ -56,8 +67,10 @@ private:
     Vector _weights;
 
     // Engine types.  Contains an EngRec structure.
-    Vector _jets;
-    Vector _pistons;
+    Vector _thrusters;
+
+    // Output properties for the ControlMap
+    Vector _controlProps;
 
     // Parsing temporaries
     void* _currObj;