12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #ifndef MOUSEBUTTONS_H
- #define MOUSEBUTTONS_H
- #include <iostream>
- #include <array>
- class MouseButtons final {
- public:
- class MouseButton final {
- public:
- friend class MouseButtons;
- bool isDown() const;
- bool isReleased() const;
- int getDownTime() const;
- private:
- MouseButton();
- MouseButton(const MouseButton&) = delete;
- MouseButton(MouseButton&&) = delete;
- MouseButton& operator=(const MouseButton&) = delete;
- MouseButton& operator=(MouseButton&&) = delete;
- int glfwButton;
- bool down;
- bool shouldRelease;
- int downTime;
- };
- private:
- MouseButton buttons[3];
- public:
- MouseButtons();
- double getLastX() const;
- double getLastY() const;
- double getX() const;
- double getY() const;
- const MouseButton& primary;
- const MouseButton& secondary;
- const MouseButton& middle;
- void release(int button);
- void press(int button);
- void move(double x, double y);
- void tick();
- private:
- MouseButtons(const MouseButtons&) = delete;
- MouseButtons& operator=(const MouseButtons&) = delete;
- MouseButtons(MouseButtons&&) = delete;
- MouseButtons& operator=(MouseButtons&&) = delete;
- double lastX;
- double lastY;
- double x;
- double y;
- bool updateLast;
- };
- std::ostream& operator<<(std::ostream& os, const MouseButtons::MouseButton& m);
- #endif
|