X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2Fflight.hxx;h=c04b12b8a00bc7abec2e8d43b058110c876c1cc4;hb=b0b6c342492868c465417b0fd71c8752e69a8fe5;hp=cd8a2c705956df2664f9ed38c506ee16175263b1;hpb=26dca370280eff3dab0af3cb425dd2c2e94941bd;p=flightgear.git diff --git a/src/FDM/flight.hxx b/src/FDM/flight.hxx index cd8a2c705..c04b12b8a 100644 --- a/src/FDM/flight.hxx +++ b/src/FDM/flight.hxx @@ -94,9 +94,9 @@ #include
-FG_USING_STD(list); -FG_USING_STD(vector); -FG_USING_STD(string); +SG_USING_STD(list); +SG_USING_STD(vector); +SG_USING_STD(string); typedef double FG_VECTOR_3[3]; @@ -113,12 +113,13 @@ private: // outputs double RPM; - double Manifold_Pressure; + double Manifold_Pressure; //inches double MaxHP; - double Percentage_Power; - double EGT; - double CHT; - double prop_thrust; + double Percentage_Power; //HP + double EGT; //deg F + double CHT; //deg F + double prop_thrust; //lbs + double Fuel_Flow; //Gals/hr /* others... double PercentN1,N1; //GE,CFM @@ -145,6 +146,7 @@ public: inline double get_EGT() const { return EGT; } inline double get_CHT() const { return CHT; } inline double get_prop_thrust() const { return prop_thrust; } + inline double get_Fuel_Flow() const { return Fuel_Flow; } inline void set_Throttle( double t ) { Throttle = t; } inline void set_Mixture( double m ) { Mixture = m; } @@ -156,6 +158,7 @@ public: inline void set_EGT( double e ) { EGT = e; } inline void set_CHT( double c ) { CHT = c; } inline void set_prop_thrust( double t ) { prop_thrust = t; } + inline void set_Fuel_Flow( double f ) { Fuel_Flow = f; } }; @@ -269,6 +272,8 @@ private: double sin_longitude, cos_longitude; double sin_latitude, cos_latitude; double altitude_agl; + double Tank1Fuel; // Gals + double Tank2Fuel; // Gals // Engine list engine_list engines; @@ -277,6 +282,12 @@ private: // SGTimeStamp next_stamp; // time this record is valid protected: + + // deliberately not virtual so that + // FGInterface constructor will call + // the right version + void _setup(); + void _busdump(void); void _updatePosition( double lat_geoc, double lon, double alt ); void _updateWeather( void ); @@ -442,6 +453,8 @@ public: virtual void unbind (); virtual void update (); virtual bool update( int multi_loop ); + virtual bool ToggleDataLogging(bool state) { return false; } + virtual bool ToggleDataLogging(void) { return false; } // Define the various supported flight models (many not yet implemented) enum { @@ -491,10 +504,10 @@ public: virtual void set_Altitude(double alt); // triggers re-calc of AGL altitude virtual void set_AltitudeAGL(double altagl); // and vice-versa virtual void set_Latitude_deg (double lat) { - set_Latitude(lat * DEG_TO_RAD); + set_Latitude(lat * SGD_DEGREES_TO_RADIANS); } virtual void set_Longitude_deg (double lon) { - set_Longitude(lon * DEG_TO_RAD); + set_Longitude(lon * SGD_DEGREES_TO_RADIANS); } // Speeds -- setting any of these will trigger a re-calc of the rest @@ -520,11 +533,11 @@ public: virtual void set_Psi (double psi) { set_Euler_Angles(get_Phi(), get_Theta(), psi); } - virtual void set_Phi_deg (double phi) { set_Phi(phi * DEG_TO_RAD); } + virtual void set_Phi_deg (double phi) { set_Phi(phi * SGD_DEGREES_TO_RADIANS); } virtual void set_Theta_deg (double theta) { - set_Theta(theta * DEG_TO_RAD); + set_Theta(theta * SGD_DEGREES_TO_RADIANS); } - virtual void set_Psi_deg (double psi) { set_Psi(psi * DEG_TO_RAD); } + virtual void set_Psi_deg (double psi) { set_Psi(psi * SGD_DEGREES_TO_RADIANS); } // Flight Path virtual void set_Climb_Rate( double roc); @@ -541,7 +554,22 @@ public: virtual void set_Velocities_Local_Airmass (double wnorth, double weast, double wdown ); - + + // Consumables + inline void set_Tank1Fuel( double f ) { Tank1Fuel = f; } + inline void set_Tank2Fuel( double f ) { Tank2Fuel = f; } + + inline void reduce_Tank1Fuel( double f ) { + Tank1Fuel -= f; + if(Tank1Fuel < 0) + Tank1Fuel = 0; + } + inline void reduce_Tank2Fuel( double f ) { + Tank2Fuel -= f; + if(Tank2Fuel < 0) + Tank2Fuel = 0; + } + // ========== Mass properties and geometry values ========== @@ -871,19 +899,19 @@ public: inline double get_Altitude_AGL(void) const { return altitude_agl; } inline double get_Latitude_deg () const { - return get_Latitude() * RAD_TO_DEG; + return get_Latitude() * SGD_RADIANS_TO_DEGREES; } inline double get_Longitude_deg () const { - return get_Longitude() * RAD_TO_DEG; + return get_Longitude() * SGD_RADIANS_TO_DEGREES; } // inline double * get_Euler_angles_v() { return euler_angles_v; } inline double get_Phi() const { return euler_angles_v[0]; } inline double get_Theta() const { return euler_angles_v[1]; } inline double get_Psi() const { return euler_angles_v[2]; } - inline double get_Phi_deg () const { return get_Phi() * RAD_TO_DEG; } - inline double get_Theta_deg () const { return get_Theta() * RAD_TO_DEG; } - inline double get_Psi_deg () const { return get_Psi() * RAD_TO_DEG; } + inline double get_Phi_deg () const { return get_Phi() * SGD_RADIANS_TO_DEGREES; } + inline double get_Theta_deg () const { return get_Theta() * SGD_RADIANS_TO_DEGREES; } + inline double get_Psi_deg () const { return get_Psi() * SGD_RADIANS_TO_DEGREES; } // ========== Miscellaneous quantities ========== @@ -1079,6 +1107,10 @@ public: return cos_latitude; } + // Consumables + inline double get_Tank1Fuel() const { return Tank1Fuel; } + inline double get_Tank2Fuel() const { return Tank2Fuel; } + // engines inline double get_num_engines() const { return engines.size(); @@ -1110,5 +1142,8 @@ void fgFDMForceAltitude(const string &model, double alt_meters); // Set the local ground elevation void fgFDMSetGroundElevation(const string &model, double alt_meters); +// Toggle data logging on/off +void fgToggleFDMdataLogging(void); + #endif // _FLIGHT_HXX