Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

Comlete initial version of MouseAPI
remove compile errors

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