MouseButtons.cpp 1.8 KB

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