X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FYASim%2FControlMap.hpp;h=07d15f3014d915a0dfbe230d11c4907b4d833f41;hb=c62048d5e26a2931f2a0f5fa7e94b3f7203e4762;hp=627e5e484f42c73568e88c45144d18b391e7d7e0;hpb=f0e6716953604730579a5e45f785fd063737dce4;p=flightgear.git diff --git a/src/FDM/YASim/ControlMap.hpp b/src/FDM/YASim/ControlMap.hpp index 627e5e484..07d15f301 100644 --- a/src/FDM/YASim/ControlMap.hpp +++ b/src/FDM/YASim/ControlMap.hpp @@ -9,10 +9,13 @@ class ControlMap { public: ~ControlMap(); - enum OutputType { THROTTLE, MIXTURE, ADVANCE, REHEAT, PROP, + enum OutputType { THROTTLE, MIXTURE, STARTER, MAGNETOS, + ADVANCE, REHEAT, PROP, BRAKE, STEER, EXTEND, INCIDENCE, FLAP0, FLAP1, SLAT, SPOILER, VECTOR, - BOOST }; + BOOST, CASTERING, PROPPITCH, + COLLECTIVE, CYCLICAIL, CYCLICELE, ROTORENGINEON, + REVERSE_THRUST }; enum { OPT_SPLIT = 0x01, OPT_INVERT = 0x02, @@ -42,10 +45,31 @@ public: void setInput(int input, float value); // Calculates and applies the settings received since the last reset(). - void applyControls(); + void applyControls(float dt); + + // Returns the input/output range appropriate for the given + // control. Ailerons go from -1 to 1, while throttles are never + // lower than zero, etc... + static float rangeMin(int type); + static float rangeMax(int type); + + // Each output record is identified by both an object/type tuple + // and a numeric handle. + int getOutputHandle(void* obj, int type); + + // Sets the transition time for the control output to swing + // through its full range. + void setTransitionTime(int handle, float time); + + // Retrieves the current value of the control output. Controls + // with OPT_SPLIT settable on inputs will have a separately + // computed "right side" value. + float getOutput(int handle); + float getOutputR(int handle); private: - struct OutRec { int type; void* object; Vector maps; }; + struct OutRec { int type; void* object; Vector maps; + float oldL, oldR, time; }; struct MapRec { OutRec* out; int idx; int opt; float val; float src0; float src1; float dst0; float dst1; };