]> git.mxchange.org Git - flightgear.git/blob - src/FDM/YASim/Thruster.hpp
Moved JSBSim.hxx to src/FDM/JSBSim/
[flightgear.git] / src / FDM / YASim / Thruster.hpp
1 #ifndef _THRUSTER_HPP
2 #define _THRUSTER_HPP
3
4 namespace yasim {
5
6 class Jet;
7 class PropEngine;
8 class Propeller;
9 class PistonEngine;
10
11 class Thruster {
12 public:
13     Thruster();
14     virtual ~Thruster();
15
16     // Typing info, these are the possible sub-type (or sub-parts)
17     // that a thruster might have.  Any might return null.  A little
18     // clumsy, but much simpler than an RTTI-based implementation.
19     virtual Jet* getJet() { return 0; }
20     virtual PropEngine* getPropEngine() { return 0; }
21     virtual Propeller* getPropeller() { return 0; }
22     virtual PistonEngine* getPistonEngine() { return 0; }
23     
24     // Static data
25     void getPosition(float* out);
26     void setPosition(float* pos);
27     void getDirection(float* out);
28     void setDirection(float* dir);
29
30     // Controls
31     void setThrottle(float throttle);
32     void setMixture(float mixture);
33     void setStarter(bool starter);
34
35     // Dynamic output
36     virtual bool isRunning()=0;
37     virtual bool isCranking()=0;
38     virtual void getThrust(float* out)=0;
39     virtual void getTorque(float* out)=0;
40     virtual void getGyro(float* out)=0;
41     virtual float getFuelFlow()=0;
42
43     // Runtime instructions
44     void setWind(float* wind);
45     void setAir(float pressure, float temp);
46     virtual void integrate(float dt)=0;
47     virtual void stabilize()=0;
48
49 protected:
50     float _pos[3];
51     float _dir[3];
52     float _throttle;
53     float _mixture;
54     bool _starter; // true=engaged, false=disengaged
55
56     float _wind[3];
57     float _pressure;
58     float _temp;
59     float _rho;
60 };
61
62 }; // namespace yasim
63 #endif // _THRUSTER_HPP
64