Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 4, 2019, 3:28:50 PM (5 years ago)
Author:
tkuonen
Message:

Begin extending MouseAPI

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/MouseAPI_FS19/src/modules/MouseAPI/mouseapi.h

    r12253 r12271  
    2020{
    2121
    22 class MouseAPI : public InputHandler
     22typedef uint ClickableObjectID;
     23typedef uint ScrollableElementID;
     24
     25class MouseAPI : public InputHandler, public Singleton<MouseAPI>
    2326{
    24 
     27friend class Singleton<MouseAPI>;
    2528private:
    2629
    2730    struct clickableElement
    2831    {
     32        //static ClickableObjectID lastClID;
     33        ClickableObjectID id;
    2934        Vector3 position;
    3035        float radius;
    3136        std::list<MouseButtonCode::ByEnum> buttons;
    3237        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){}
     38        clickableElement(ClickableObjectID id,const Vector3& position,float radius,const std::list<MouseButtonCode::ByEnum>& buttons,std::function<void(MouseButtonCode::ByEnum button)> onClickedFunction):position(position),
     39            radius(radius), buttons(buttons), onClickedFunction(onClickedFunction),id(id){}
    3540    };
    3641
    3742    struct scrollElement
    3843    {
     44        static ScrollableElementID lastScID;
     45        ScrollableElementID id;
    3946        bool considerPosition;
    4047        Vector3 position;
    4148        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){}
     49        std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction;
     50        scrollElement(ScrollableElementID id,std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction):considerPosition(false),
     51            onScrolledFunction(onScrolledFunction),id(id){}
     52        scrollElement(ScrollableElementID id,const Vector3& position, float radius, std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction):considerPosition(true),
     53            position(position), radius(radius), onScrolledFunction(onScrolledFunction),id(id){}
    4754    };
    4855
    49 
     56    static MouseAPI* singletonPtr_s;
    5057    std::list<clickableElement> clickEvents;
    5158    std::list<scrollElement> scrollEvents;
     
    5360    IntVector2 mousePos;
    5461    InputState* state;
     62    bool active = false;
     63
    5564
    5665
     
    6574    virtual void mouseScrolled (int abs, int rel) override;
    6675
    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));
     76    ClickableObjectID addClickableObject(const Vector3& position,float radius,const std::list<MouseButtonCode::ByEnum>& buttons,std::function<void(MouseButtonCode::ByEnum button)>  onClickedFunction);
     77    ScrollableElementID addScrollElement(const Vector3& position,float radius,std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction);
     78    ScrollableElementID addScrollElement(std::function<void(int abs,int rel,const IntVector2& mousePos)> onScrolledFunction);
    7079
    71     void changeCamera(Camera& camera);
     80    void changePositionOfClickableObject(ClickableObjectID id,const Vector3& position);
     81    void changePositionOfScrollableElement(ScrollableElementID id,const Vector3& position);
     82    void changeRadiusOfClickableObject(ClickableObjectID id,float radius);
     83    void changeRadiusOfScrollableElement(ScrollableElementID id,float radius);
     84    void deleteClickableObject(ClickableObjectID);
     85    void deleteScrollableElement(ScrollableElementID);
    7286
    7387    void activate();
     88    static bool isActive(){return singletonPtr_s != nullptr && getInstance().active;}
    7489    void deactivate();
    7590};
Note: See TracChangeset for help on using the changeset viewer.