Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jul 20, 2008, 6:49:24 PM (16 years ago)
Author:
rgrieder
Message:

Finally! The InputManager is now working like I imagined it to. And it's even easier to use it as well.
A little explanation: Every time you change something about the input distribution, it is a change of 'state' represented by the class 'InputState'.
That can be for instance: "console", "game", "gui", etc. Every state has a name and a priority which describes who comes first. Now if one state doesn't handle mouse input or instance, then the one with the next lower priority gets it. To prevent that, you can add the 'EmptyHandler' to the state with setMouseHandler.
InputState is just an abstract base class. There are two classes implementing it: SimpleInputState and ExtendedInputState. The latter allows for multiple input handlers for one single device.

Basically, what you need to know is what you see in Orxonox.cc, InGameConsole.cc and Shell.cc.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/input/src/core/input/InputInterfaces.h

    r1630 r1637  
    3838#include "core/CorePrereqs.h"
    3939
    40 #include "src/ois/OISKeyboard.h"
    41 #include "src/ois/OISMouse.h"
    42 #include "src/ois/OISJoyStick.h"
     40#include "ois/OISKeyboard.h"
     41#include "ois/OISMouse.h"
     42#include "ois/OISJoyStick.h"
    4343#include "util/Math.h"
    4444
     
    222222        };
    223223    }
     224   
     225    namespace InputDevice
     226    {
     227        enum Enum
     228        {
     229            Keyboard,
     230            Mouse,
     231            JoyStick0,
     232            JoyStick1,
     233            JoyStick2,
     234            JoyStick3,
     235            // note: No problem if there are more joy sticks. This enum is just for convenience.
     236        };
     237    }
    224238
    225239    struct _CoreExport Key
     
    265279        multiple handlers) are active.
    266280    */
    267     struct HandlerState
    268     {
    269         HandlerState() : key(false), mouse(false), joyStick(false) { }
    270         bool key;
    271         bool mouse;
    272         bool joyStick;
    273     };
     281    //struct HandlerState
     282    //{
     283    //    HandlerState() : keyboard(false), mouse(false) { }
     284    //    bool keyboard;
     285    //    bool mouse;
     286    //    std::vector<bool> joySticks;
     287    //};
    274288
    275289    class _CoreExport InputTickable
     
    277291    public:
    278292        virtual ~InputTickable() { }
    279         virtual void tickInput(float dt, const HandlerState& state) = 0;
     293        virtual void tickInput(float dt) = 0;
     294        //virtual void tickInput(float dt, unsigned int device) = 0;
    280295    };
    281296
     
    291306        virtual void keyReleased(const KeyEvent& evt) = 0;
    292307        virtual void keyHeld    (const KeyEvent& evt) = 0;
    293         //virtual void tickKey    (float dt) { }
     308        virtual void tickKey    (float dt) { }
    294309    };
    295310
     
    307322        virtual void mouseMoved         (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize) = 0;
    308323        virtual void mouseScrolled      (int abs, int rel)     = 0;
    309         //virtual void tickMouse          (float dt) { }
     324        virtual void tickMouse          (float dt) { }
    310325    };
    311326
     
    319334    public:
    320335        virtual ~JoyStickHandler() { }
    321         virtual void joyStickButtonPressed (int joyStickID, int button) = 0;
    322         virtual void joyStickButtonReleased(int joyStickID, int button) = 0;
    323         virtual void joyStickButtonHeld    (int joyStickID, int button) = 0;
    324         virtual void joyStickAxisMoved     (int joyStickID, int axis, float value) = 0;
    325         //virtual bool joyStickVector3Moved  (int joyStickID, int index /*, fill list*/) {return true;}
    326         //virtual void tickJoyStick          (float dt) { }
     336        virtual void joyStickButtonPressed (unsigned int joyStickID, unsigned int button) = 0;
     337        virtual void joyStickButtonReleased(unsigned int joyStickID, unsigned int button) = 0;
     338        virtual void joyStickButtonHeld    (unsigned int joyStickID, unsigned int button) = 0;
     339        virtual void joyStickAxisMoved     (unsigned int joyStickID, unsigned int axis, float value) = 0;
     340        //virtual bool joyStickVector3Moved  (unsigned int joyStickID, unsigned int index /*, fill list*/) {return true;}
     341        virtual void tickJoyStick          (float dt, unsigned int device) { }
     342    };
     343
     344    class _CoreExport EmptyHandler : public KeyHandler, public MouseHandler, public JoyStickHandler
     345    {
     346    private:
     347        void tickInput(float dt) { }
     348        void tickInput(float dt, unsigned int device) { }
     349
     350        void keyPressed (const KeyEvent& evt) { }
     351        void keyReleased(const KeyEvent& evt) { }
     352        void keyHeld    (const KeyEvent& evt) { }
     353
     354        void mouseButtonPressed (MouseButton::Enum id) { }
     355        void mouseButtonReleased(MouseButton::Enum id) { }
     356        void mouseButtonHeld    (MouseButton::Enum id) { }
     357        void mouseMoved         (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize) { }
     358        void mouseScrolled      (int abs, int rel) { }
     359
     360        void joyStickButtonPressed (unsigned int joyStickID, unsigned int button) { }
     361        void joyStickButtonReleased(unsigned int joyStickID, unsigned int button) { }
     362        void joyStickButtonHeld    (unsigned int joyStickID, unsigned int button) { }
     363        void joyStickAxisMoved     (unsigned int joyStickID, unsigned int axis, float value) { }
    327364    };
    328365
Note: See TracChangeset for help on using the changeset viewer.