X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FAircraft%2Fcontrols.hxx;h=980233e5ad3ffcba3984674301e79c625fb23a1f;hb=f04d5f8758ef4b5524a9396a84351bf86db6763e;hp=d9ea286f7ebf6946917643aaa91ff1f172ec10f4;hpb=429f2530de08f922d62fcfeade85740569e04768;p=flightgear.git diff --git a/src/Aircraft/controls.hxx b/src/Aircraft/controls.hxx index d9ea286f7..980233e5a 100644 --- a/src/Aircraft/controls.hxx +++ b/src/Aircraft/controls.hxx @@ -25,6 +25,7 @@ #define _CONTROLS_HXX #include +#include // Define a structure containing the control parameters @@ -34,65 +35,65 @@ class FGControls : public SGSubsystem public: enum { - ALL_ENGINES = -1, - MAX_ENGINES = 12 + ALL_ENGINES = -1, + MAX_ENGINES = 12 }; enum { - ALL_WHEELS = -1, - MAX_WHEELS = 3 + ALL_WHEELS = -1, + MAX_WHEELS = 3 }; enum { - ALL_TANKS = -1, - MAX_TANKS = 8 + ALL_TANKS = -1, + MAX_TANKS = 8 }; enum { - ALL_BOOSTPUMPS = -1, - MAX_BOOSTPUMPS = 2 + ALL_BOOSTPUMPS = -1, + MAX_BOOSTPUMPS = 2 }; enum { - ALL_HYD_SYSTEMS = -1, - MAX_HYD_SYSTEMS = 4 + ALL_HYD_SYSTEMS = -1, + MAX_HYD_SYSTEMS = 4 }; enum { - ALL_PACKS = -1, - MAX_PACKS = 4 + ALL_PACKS = -1, + MAX_PACKS = 4 }; enum { - ALL_LIGHTS = -1, - MAX_LIGHTS = 4 + ALL_LIGHTS = -1, + MAX_LIGHTS = 4 }; enum { - ALL_STATIONS = -1, - MAX_STATIONS = 12 + ALL_STATIONS = -1, + MAX_STATIONS = 12 }; enum { - ALL_AUTOPILOTS = -1, - MAX_AUTOPILOTS = 3 + ALL_AUTOPILOTS = -1, + MAX_AUTOPILOTS = 3 }; enum { - ALL_EJECTION_SEATS = -1, - MAX_EJECTION_SEATS = 10 + ALL_EJECTION_SEATS = -1, + MAX_EJECTION_SEATS = 10 }; enum { - SEAT_SAFED = -1, - SEAT_ARMED = 0, - SEAT_FAIL = 1 + SEAT_SAFED = -1, + SEAT_ARMED = 0, + SEAT_FAIL = 1 }; enum { - CMD_SEL_NORM = -1, - CMD_SEL_AFT = 0, - CMD_SEL_SOLO = 1 + CMD_SEL_NORM = -1, + CMD_SEL_AFT = 0, + CMD_SEL_SOLO = 1 }; private: @@ -252,7 +253,8 @@ private: SGPropertyNode_ptr auto_coordination; - + SGPropertyNode_ptr auto_coordination_factor; + simgear::TiedPropertyList _tiedProperties; public: FGControls(); @@ -263,10 +265,11 @@ public: void bind (); void unbind (); void update (double dt); - + virtual void reinit(); + // Reset function void reset_all(void); - + // Query functions // controls/flight/ inline double get_aileron() const { return aileron; } @@ -298,7 +301,7 @@ public: inline bool get_cutoff(int engine) const { return cutoff[engine]; } inline double get_mixture(int engine) const { return mixture[engine]; } inline double get_prop_advance(int engine) const { - return prop_advance[engine]; + return prop_advance[engine]; } inline int get_magnetos(int engine) const { return magnetos[engine]; } inline int get_feed_tank(int engine) const { return feed_tank[engine]; } @@ -636,6 +639,14 @@ public: // controls/autoflight/autopilot[n]/ void set_autopilot_engage( int ap, bool val ); +private: + inline void do_autocoordination() { + // check for autocoordination + if ( auto_coordination->getBoolValue() ) { + double factor = auto_coordination_factor->getDoubleValue(); + if( factor > 0.0 ) set_rudder( aileron * factor ); + } + } };