#endif
#include "FGJSBBase.h"
+#include "FGThruster.h"
#include "FGPropertyManager.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
class FGAtmosphere;
class FGFCS;
class FGAircraft;
-class FGTranslation;
-class FGRotation;
+class FGPropagate;
class FGPropulsion;
-class FGPosition;
class FGAuxiliary;
class FGOutput;
+class FGThruster;
+class FGConfigFile;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
This base class contains methods and members common to all engines, such as
logic to drain fuel from the appropriate tank, etc.
@author Jon S. Berndt
- @version $Id$
+ @version $Id$
*/
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
class FGEngine : public FGJSBBase
{
public:
- FGEngine(FGFDMExec* exec);
+ FGEngine(FGFDMExec* exec, int engine_number);
virtual ~FGEngine();
- enum EngineType {etUnknown, etRocket, etPiston, etTurbine, etSimTurbine};
+ enum EngineType {etUnknown, etRocket, etPiston, etTurbine, etElectric};
EngineType GetType(void) { return Type; }
virtual string GetName(void) { return Name; }
+ string GetThrusterFileName(void) {return thrusterFileName;}
+ void SetEngineFileName(string eng) {engineFileName = eng;}
+ string GetEngineFileName(void) {return engineFileName;}
// Engine controls
virtual double GetThrottleMin(void) { return MinThrottle; }
virtual void SetRunning(bool bb) { Running=bb; }
virtual void SetName(string name) { Name = name; }
virtual void AddFeedTank(int tkID);
+ virtual void SetFuelFreeze(bool f) { FuelFreeze = f; }
virtual void SetStarter(bool s) { Starter = s; }
/** Calculates the thrust of the engine, and other engine functions.
- @param PowerRequired this is the power required to run the thrusting device
- such as a propeller. This resisting effect must be provided to the
- engine model.
@return Thrust in pounds */
- virtual double Calculate(double PowerRequired) {return 0.0;};
+ virtual double Calculate(void) {return 0.0;}
/** Reduces the fuel in the active tanks by the amount required.
This function should be called from within the
/// Sets engine placement information
virtual void SetPlacement(double x, double y, double z, double pitch, double yaw);
-
- /// Sets the engine number
- virtual void SetEngineNumber(int nn) {EngineNumber = nn;}
+ double GetPlacementX(void) const {return X;}
+ double GetPlacementY(void) const {return Y;}
+ double GetPlacementZ(void) const {return Z;}
+ double GetPitch(void) const {return EnginePitch;}
+ double GetYaw(void) const {return EngineYaw;}
virtual double GetPowerAvailable(void) {return 0.0;};
virtual bool GetTrimMode(void) {return TrimMode;}
virtual void SetTrimMode(bool state) {TrimMode = state;}
+ virtual FGColumnVector3& GetBodyForces(void);
+ virtual FGColumnVector3& GetMoments(void);
+
+ bool LoadThruster(FGConfigFile* AC_cfg);
+ FGThruster* GetThruster(void) {return Thruster;}
+
+ virtual string GetEngineLabels(string delimeter) = 0;
+ virtual string GetEngineValues(string delimeter) = 0;
+ int GetNumSourceTanks(void) {return SourceTanks.size();}
+ int GetSourceTank(int t) {return SourceTanks[t];}
+
protected:
FGPropertyManager* PropertyManager;
string Name;
+ string thrusterFileName;
+ string engineFileName;
+ const int EngineNumber;
EngineType Type;
double X, Y, Z;
double EnginePitch;
double FuelNeed;
double OxidizerNeed;
double PctPower;
- int EngineNumber;
bool Starter;
bool Starved;
bool Running;
bool Cranking;
bool TrimMode;
+ bool FuelFreeze;
double FuelFlow_gph;
double FuelFlow_pph;
FGFCS* FCS;
FGPropulsion* Propulsion;
FGAircraft* Aircraft;
- FGTranslation* Translation;
- FGRotation* Rotation;
- FGPosition* Position;
+ FGPropagate* Propagate;
FGAuxiliary* Auxiliary;
FGOutput* Output;
+ FGThruster* Thruster;
vector <int> SourceTanks;
void Debug(int from);
#include "FGAtmosphere.h"
#include "FGFCS.h"
#include "FGAircraft.h"
-#include "FGTranslation.h"
-#include "FGRotation.h"
+#include "FGPropagate.h"
#include "FGPropulsion.h"
-#include "FGPosition.h"
#include "FGAuxiliary.h"
#include "FGOutput.h"
+#include "FGThruster.h"
+#include "FGConfigFile.h"
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#endif