MouseButtons.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include <GLFW/glfw3.h>
  2. #include "client/input/MouseButtons.h"
  3. bool MouseButtons::MouseButton::isDown() const {
  4. return down;
  5. }
  6. bool MouseButtons::MouseButton::isReleased() const {
  7. return shouldRelease;
  8. }
  9. u32 MouseButtons::MouseButton::getDownTime() const {
  10. return downTime;
  11. }
  12. std::ostream& operator<<(std::ostream& os, const MouseButtons::MouseButton& m) {
  13. os << "Mouse(down: " << m.isDown() << ", release: " << m.isReleased() <<
  14. ", time: " << m.getDownTime() << ")";
  15. return os;
  16. }
  17. MouseButtons::MouseButtons() : primary(buttons[0]), secondary(buttons[1]), middle(buttons[2]), oldX(0), oldY(0), x(0), y(0) {
  18. buttons[0].glfwButton = GLFW_MOUSE_BUTTON_1;
  19. buttons[1].glfwButton = GLFW_MOUSE_BUTTON_2;
  20. buttons[2].glfwButton = GLFW_MOUSE_BUTTON_3;
  21. }
  22. double MouseButtons::getOldX() const {
  23. return oldX;
  24. }
  25. double MouseButtons::getOldY() const {
  26. return oldY;
  27. }
  28. double MouseButtons::getX() const {
  29. return x;
  30. }
  31. double MouseButtons::getY() const {
  32. return y;
  33. }
  34. void MouseButtons::release(int button) {
  35. for(MouseButton& k : buttons) {
  36. if(k.glfwButton == button) {
  37. k.shouldRelease = true;
  38. }
  39. }
  40. }
  41. void MouseButtons::press(int button) {
  42. for(MouseButton& k : buttons) {
  43. if(k.glfwButton == button) {
  44. k.down = true;
  45. k.shouldRelease = false;
  46. }
  47. }
  48. }
  49. void MouseButtons::move(double x, double y) {
  50. MouseButtons::x = x;
  51. MouseButtons::y = y;
  52. }
  53. void MouseButtons::tick() {
  54. for(MouseButton& k : buttons) {
  55. k.downTime += k.down;
  56. k.down = k.down && !k.shouldRelease;
  57. k.downTime *= !k.shouldRelease;
  58. k.shouldRelease = false;
  59. }
  60. }
  61. void MouseButtons::postTick() {
  62. oldX = x;
  63. oldY = y;
  64. }