Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 12213 was 12213, checked in by tkuonen, 5 years ago

Define MouseAPI

File size: 2.1 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
8namespace orxonox
9{
10
11class MouseAPI : public InputHandler
12{
13
14private:
15
16    struct clickableElement
17    {
18        Vector3 position;
19        float radius;
20        list<ClickEvent> events;
21        void (*onClickedFunction)();
22        clickableElement(const Vector3& position,float radius,const list<ClickEvent>& events,void (*onClickedFunction)()):position(position),
23            radius(radius), events(events), onClickedFunction(onClickedFunction){}
24    };
25
26    struct scrollElement
27    {
28        bool considerPosition;
29        Vector3 position;
30        float radius;
31        void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos);
32        scrollEvents(void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)):considerPosition(false),
33            onScrolledFunction(onScrolledFunction){}
34        scrollEvents(Vector3& position, float radius, void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)):considerPosition(true),
35            position(position), radius(radius), onScrolledFunction(onScrolledFunction){}
36    };
37
38
39    std::list<clickableElement> clickEvents;
40    std::list<scrollElement> scrollEvents;
41
42
43public:
44    enum ClickEvent
45    {
46        rightClick,leftClick,middleCLick
47    };
48
49    MouseAPI();
50    ~MouseAPI();
51    virtual void buttonPressed (MouseButtonCode::ByEnum button);
52    virtual void buttonReleased(MouseButtonCode::ByEnum button){}
53    virtual void buttonHeld    (MouseButtonCode::ByEnum button){}
54    virtual void mouseMoved    (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize);
55    virtual void mouseScrolled (int abs, int rel);
56
57    void addClickableObject(const Vector3& position,float radius,const list<ClickEvent>& events,void (*onClickedFunction)());
58    void addScrollElement(const Vector3& position,float radius,void (*onScrolledFunction)(int abs,int rel,const IntVector2&  mousePos));
59    void addScrollElement(void (*onScrolledFunction)(int abs,int rel,const IntVector2&  mousePos));
60};
61}
62#endif // MOUSEAPI_H
Note: See TracBrowser for help on using the repository browser.