Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 12253 was 12253, checked in by mkarpf, 5 years ago

Test Level created
ATTENTION: Level is buggy and freezes Screen!

File size: 2.7 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#include "CameraManager.h"
17#include <functional>
18
19namespace orxonox
20{
21
22class MouseAPI : public InputHandler
23{
24
25private:
26
27    struct clickableElement
28    {
29        Vector3 position;
30        float radius;
31        std::list<MouseButtonCode::ByEnum> buttons;
32        std::function<void(MouseButtonCode::ByEnum button)> onClickedFunction;
33        clickableElement(const Vector3& position,float radius,const std::list<MouseButtonCode::ByEnum>& buttons,std::function<void(MouseButtonCode::ByEnum button)> onClickedFunction):position(position),
34            radius(radius), buttons(buttons), onClickedFunction(onClickedFunction){}
35    };
36
37    struct scrollElement
38    {
39        bool considerPosition;
40        Vector3 position;
41        float radius;
42        void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos);
43        scrollElement(void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)):considerPosition(false),
44            onScrolledFunction(onScrolledFunction){}
45        scrollElement(const Vector3& position, float radius, void (*onScrolledFunction)(int abs,int rel,const IntVector2& mousePos)):considerPosition(true),
46            position(position), radius(radius), onScrolledFunction(onScrolledFunction){}
47    };
48
49
50    std::list<clickableElement> clickEvents;
51    std::list<scrollElement> scrollEvents;
52    Ogre::Camera *cam ;
53    IntVector2 mousePos;
54    InputState* state;
55
56
57public:
58
59    MouseAPI();
60    ~MouseAPI();
61    virtual void buttonPressed (MouseButtonCode::ByEnum button) override;
62    virtual void buttonReleased(MouseButtonCode::ByEnum button)  override{}
63    virtual void buttonHeld    (MouseButtonCode::ByEnum button) override{}
64    virtual void mouseMoved    (IntVector2 abs, IntVector2 rel, IntVector2 clippingSize) override;
65    virtual void mouseScrolled (int abs, int rel) override;
66
67    void addClickableObject(const Vector3& position,float radius,const std::list<MouseButtonCode::ByEnum>& buttons,std::function<void(MouseButtonCode::ByEnum button)>  onClickedFunction);
68    void addScrollElement(const Vector3& position,float radius,void (*onScrolledFunction)(int abs,int rel,const IntVector2&  mousePos));
69    void addScrollElement(void (*onScrolledFunction)(int abs,int rel,const IntVector2&  mousePos));
70
71    void changeCamera(Camera& camera);
72
73    void activate();
74    void deactivate();
75};
76}
77#endif // MOUSEAPI_H
Note: See TracBrowser for help on using the repository browser.