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; }
25 void getPosition(float* out);
26 void setPosition(float* pos);
27 void getDirection(float* out);
28 void setDirection(float* dir);
31 void setThrottle(float throttle);
32 void setMixture(float mixture);
33 void setStarter(bool starter);
34 void setFuelState(bool hasFuel) { _fuel = hasFuel; }
37 virtual bool isRunning()=0;
38 virtual bool isCranking()=0;
39 virtual void getThrust(float* out)=0;
40 virtual void getTorque(float* out)=0;
41 virtual void getGyro(float* out)=0;
42 virtual float getFuelFlow()=0; // in kg/s
44 // Runtime instructions
45 void setWind(float* wind);
46 void setAir(float pressure, float temp, float density);
47 virtual void init() {}
48 virtual void integrate(float dt)=0;
49 virtual void stabilize()=0;
56 bool _starter; // true=engaged, false=disengaged
57 bool _fuel; // true=available, false=out
66 #endif // _THRUSTER_HPP