X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInput%2Finput.hxx;h=2ea4217e922a66fc13894244f66b298638120eba;hb=72fbb0f3f55570b07c4f2f322a5274d76c0318ee;hp=167f33daa4253209db1d43841066e36429210ccf;hpb=7821a45772e3ef02184252928a37d318af0e855e;p=flightgear.git diff --git a/src/Input/input.hxx b/src/Input/input.hxx index 167f33daa..2ea4217e9 100644 --- a/src/Input/input.hxx +++ b/src/Input/input.hxx @@ -44,6 +44,13 @@ SG_USING_STD(map); SG_USING_STD(vector); + + +//////////////////////////////////////////////////////////////////////// +// General binding support. +//////////////////////////////////////////////////////////////////////// + + /** * An input binding of some sort. * @@ -51,7 +58,7 @@ SG_USING_STD(vector); * keyboard key, a joystick button or axis, or even a panel * instrument.
*/ -class FGBinding +class FGBinding : public FGConditional { public: @@ -115,6 +122,12 @@ public: virtual void fire () const; + /** + * Fire a binding with a scaled movement (rather than absolute position). + */ + virtual void fire (double offset, double max) const; + + /** * Fire a binding with a setting (i.e. joystick axis). * @@ -126,13 +139,20 @@ public: private: - void _fire (const SGPropertyNode *arg) const; string _command_name; SGCommandMgr::command_t _command; - const SGPropertyNode * _arg; + mutable SGPropertyNode * _arg; + mutable SGPropertyNode * _setting; + mutable SGCommandState * _command_state; }; + +//////////////////////////////////////////////////////////////////////// +// General input mapping support. +//////////////////////////////////////////////////////////////////////// + + /** * Generic input module. * @@ -153,7 +173,16 @@ public: FG_MOD_MAX = 16 // enough to handle all combinations }; - FGInput(); + + /** + * Default constructor. + */ + FGInput (); + + + /** + * Destructor. + */ virtual ~FGInput(); // @@ -162,7 +191,7 @@ public: virtual void init (); virtual void bind (); virtual void unbind (); - virtual void update (); + virtual void update (double dt); /** @@ -182,29 +211,54 @@ public: virtual void doKey (int k, int modifiers, int x, int y); -private: + /** + * Handle a mouse click event. + * + * @param button The mouse button selected. + * @param updown Button status. + * @param x The X position of the mouse event, in screen coordinates. + * @param y The Y position of the mouse event, in screen coordinates. + */ + virtual void doMouseClick (int button, int updown, int x, int y); - typedef vectorPass the value on to the FGInput module unless PUI wants it.
+ * + * @param k The integer value for the key pressed. + * @param x (unused) + * @param y (unused) + */ +void GLUTkey (unsigned char k, int x, int y); + + +/** + * Key-up event handler for GLUT. + * + *PUI doesn't use this, so always pass it to the input manager.
+ * + * @param k The integer value for the key pressed. + * @param x (unused) + * @param y (unused) + */ +void GLUTkeyup (unsigned char k, int x, int y); + + +/** + * Special key-down handler for Glut. + * + *Pass the value on to the FGInput module unless PUI wants it. + * The key value will have 256 added to it.
+ * + * @param k The integer value for the key pressed (will have 256 added + * to it). + * @param x (unused) + * @param y (unused) + */ +void GLUTspecialkey (int k, int x, int y); + + +/** + * Special key-up handler for Glut. + * + * @param k The integer value for the key pressed (will have 256 added + * to it). + * @param x (unused) + * @param y (unused) + */ +void GLUTspecialkeyup (int k, int x, int y); + + +/** + * Mouse click handler for Glut. + * + * @param button The mouse button pressed. + * @param updown Press or release flag. + * @param x The x-location of the click. + * @param y The y-location of the click. + */ +void GLUTmouse (int button, int updown, int x, int y); + + +/** + * Mouse motion handler for Glut. + * + * @param x The new x-location of the mouse. + * @param y The new y-location of the mouse. + */ +void GLUTmotion (int x, int y); + +} // extern "C" + +#endif // _INPUT_HXX