1
0
Fork 0
flightgear/src/FDM/YASim/PropEngine.hpp

65 lines
1.5 KiB
C++
Raw Normal View History

#ifndef _PROPENGINE_HPP
#define _PROPENGINE_HPP
#include "Thruster.hpp"
#include "Engine.hpp"
namespace yasim {
class Propeller;
class PropEngine : public Thruster {
public:
PropEngine(Propeller* prop, Engine* eng, float moment);
virtual ~PropEngine();
2001-12-06 18:13:24 +00:00
void setEngine(Engine* eng) { delete _eng; _eng = eng; }
void setMagnetos(int magnetos);
2001-12-06 18:13:24 +00:00
void setAdvance(float advance);
void setPropPitch(float proppitch);
2001-12-06 18:13:24 +00:00
void setVariableProp(float min, float max);
void setGearRatio(float ratio) { _gearRatio = ratio; }
2001-12-06 18:13:24 +00:00
virtual PropEngine* getPropEngine() { return this; }
virtual Engine* getEngine() { return _eng; }
2001-12-06 18:13:24 +00:00
virtual Propeller* getPropeller() { return _prop; }
// Dynamic output
virtual bool isRunning();
virtual bool isCranking();
virtual void getThrust(float* out);
virtual void getTorque(float* out);
virtual void getGyro(float* out);
virtual float getFuelFlow();
// Runtime instructions
virtual void init();
virtual void integrate(float dt);
2001-12-06 18:13:24 +00:00
virtual void stabilize();
float getOmega();
void setOmega (float omega);
private:
float _moment;
Propeller* _prop;
Engine* _eng;
2001-12-06 18:13:24 +00:00
bool _variable;
int _magnetos; // 0=off, 1=right, 2=left, 3=both
float _gearRatio;
2001-12-06 18:13:24 +00:00
float _advance; // control input, 0-1
float _maxOmega;
float _minOmega;
float _omega; // RPM, in radians/sec
float _thrust[3];
float _torque[3];
float _gyro[3];
float _fuelFlow;
};
}; // namespace yasim
#endif // _PROPENGINE_HPP