Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h @ 12217

Last change on this file since 12217 was 12217, checked in by tkuonen, 5 years ago
File size: 2.4 KB
Line 
1#ifndef MOUSEAPI_H
2#define MOUSEAPI_H
3
4#include <util/Math.h>
5#include <list>
6#include <core/input/InputHandler.h>
7#include <graphics/Camera.h>
8#include <core/GraphicsManager.h>
9#include <core/input/InputState.h>
10
11namespace orxonox
12{
13
14class MouseAPI : public InputHandler
15{
16
17private:
18
19    struct clickableElement
20    {
21        Vector3 position;
22        float radius;
23        list<MouseButtonCode::ByEnum> buttons;
24        void (*onClickedFunction)(MouseButtonCode::ByEnum button);
25        clickableElement(const Vector3& position,float radius,const list<MouseButtonCode::ByEnum>& buttons,void (*onClickedFunction)()):position(position),
26            radius(radius), buttons(buttons), onClickedFunction(onClickedFunction){}
27    };
28
29    struct scrollElement
30    {
31        bool considerPosition;
32        Vector3 position;
33        float radius;
34        void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos);
35        scrollEvents(void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)):considerPosition(false),
36            onScrolledFunction(onScrolledFunction){}
37        scrollEvents(Vector3& position, float radius, void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)):considerPosition(true),
38            position(position), radius(radius), onScrolledFunction(onScrolledFunction){}
39    };
40
41
42    std::list<clickableElement> clickEvents;
43    std::list<scrollElement> scrollEvents;
44    Ogre::Camera cam;
45    IntVector2 mousePos;
46    InputState* state;
47
48
49public:
50
51    MouseAPI(Camera& cam);
52    ~MouseAPI();
53    virtual void buttonPressed (MouseButtonCode::ByEnum button) override;
54    virtual void buttonReleased(MouseButtonCode::ByEnum button)  override{}
55    virtual void buttonHeld    (MouseButtonCode::ByEnum button) override{}
56    virtual void mouseMoved    (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize) override;
57    virtual void mouseScrolled (int abs, int rel) override;
58
59    void addClickableObject(const Vector3& position,float radius,const list<MouseButtonCode::ByEnum>& buttons,void (*onClickedFunction)(MouseButtonCode::ByEnum button));
60    void addScrollElement(const Vector3& position,float radius,void (*onScrolledFunction)(int abs,int rel,const IntVector2&  mousePos));
61    void addScrollElement(void (*onScrolledFunction)(int abs,int rel,const IntVector2&  mousePos));
62
63    void changeCamera(Camera& camera);
64};
65}
66#endif // MOUSEAPI_H
Note: See TracBrowser for help on using the repository browser.