1
0
Fork 0
flightgear/src/FDM/YASim/Thruster.hpp
andy b1c964030d Refactoring in preparation to add a turbine engine to YASim. The
PistonEngine class has grown an "Engine" superclass.  Some other stuff
moved around too, and I cleaned up some property naming while I was in
there.  This hasn't been tested very thorougly, hopefully I didn't
break anything.
2004-04-30 19:06:29 +00:00

67 lines
1.7 KiB
C++

#ifndef _THRUSTER_HPP
#define _THRUSTER_HPP
namespace yasim {
class Jet;
class PropEngine;
class Propeller;
class Engine;
class Thruster {
public:
Thruster();
virtual ~Thruster();
// Typing info, these are the possible sub-type (or sub-parts)
// that a thruster might have. Any might return null. A little
// clumsy, but much simpler than an RTTI-based implementation.
virtual Jet* getJet() { return 0; }
virtual PropEngine* getPropEngine() { return 0; }
virtual Propeller* getPropeller() { return 0; }
virtual Engine* getEngine() { return 0; }
// Static data
void getPosition(float* out);
void setPosition(float* pos);
void getDirection(float* out);
void setDirection(float* dir);
// Controls
void setThrottle(float throttle);
void setMixture(float mixture);
void setStarter(bool starter);
void setFuelState(bool hasFuel) { _fuel = hasFuel; }
// Dynamic output
virtual bool isRunning()=0;
virtual bool isCranking()=0;
virtual void getThrust(float* out)=0;
virtual void getTorque(float* out)=0;
virtual void getGyro(float* out)=0;
virtual float getFuelFlow()=0; // in kg/s
// Runtime instructions
void setWind(float* wind);
void setAir(float pressure, float temp, float density);
virtual void init() {}
virtual void integrate(float dt)=0;
virtual void stabilize()=0;
protected:
float _pos[3];
float _dir[3];
float _throttle;
float _mixture;
bool _starter; // true=engaged, false=disengaged
bool _fuel; // true=available, false=out
float _wind[3];
float _pressure;
float _temp;
float _rho;
};
}; // namespace yasim
#endif // _THRUSTER_HPP