Input.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #include "Input.h"
  2. #include "App.h"
  3. #include "AppGLFW.h"
  4. #include "Window.h"
  5. namespace gameplay
  6. {
  7. Signal<int32_t, GamepadChangeEvent> Input::on_gamepad_changed;
  8. Input::Input()
  9. {
  10. }
  11. Input::~Input()
  12. {
  13. }
  14. void Input::set_cursor_pos(const Double2& pos)
  15. {
  16. static auto window = App::get_app()->get_window();
  17. window->set_cursor_pos(pos);
  18. }
  19. Double2 Input::get_cursor_pos()
  20. {
  21. static auto window = App::get_app()->get_window();
  22. return window->get_cursor_pos();
  23. }
  24. void Input::set_cursor_mode(CursorMode mode)
  25. {
  26. static auto window = App::get_app()->get_window();
  27. window->set_cursor_mode(mode);
  28. }
  29. CursorMode Input::get_cursor_mode()
  30. {
  31. static auto window = App::get_app()->get_window();
  32. return window->get_cursor_mode();
  33. }
  34. void Input::set_input_mode_enabled(InputMode mode, bool enabled)
  35. {
  36. static auto window = App::get_app()->get_window();
  37. window->set_input_mode_enabled(mode, enabled);
  38. }
  39. bool Input::is_input_mode_enabled(InputMode mode)
  40. {
  41. static auto window = App::get_app()->get_window();
  42. return window->is_input_mode_enabled(mode);
  43. }
  44. ButtonAction Input::get_mouse_button_action(MouseButton button)
  45. {
  46. static auto window = App::get_app()->get_window();
  47. return window->get_mouse_button_action(button);
  48. }
  49. KeyAction Input::get_key_action(Key key)
  50. {
  51. static auto window = App::get_app()->get_window();
  52. return window->get_key_action(key);
  53. }
  54. const char* Input::get_key_name(Key key)
  55. {
  56. return glfwGetKeyName(GLFWUtils::to_glfw_key(key), 0);
  57. }
  58. bool Input::is_gamepad_connected(int32_t gamepadIndex)
  59. {
  60. return glfwJoystickIsGamepad(gamepadIndex);
  61. }
  62. bool Input::has_gamepad_mappings_db(int32_t gamepadIndex)
  63. {
  64. return glfwJoystickIsGamepad(gamepadIndex);
  65. }
  66. bool Input::set_gamepad_mappings_db(const char* mappingsDb)
  67. {
  68. return (glfwUpdateGamepadMappings(mappingsDb) == GLFW_TRUE);
  69. }
  70. const char* Input::get_gamepad_name(int32_t gamepadIndex)
  71. {
  72. if (glfwJoystickIsGamepad(gamepadIndex))
  73. {
  74. return glfwGetGamepadName(gamepadIndex);
  75. }
  76. return glfwGetJoystickName(gamepadIndex);
  77. }
  78. const char* Input::get_gamepad_guid(int32_t gamepadIndex)
  79. {
  80. return glfwGetJoystickGUID(gamepadIndex);
  81. }
  82. void Input::get_gamepad_state(int32_t gamepadIndex, GamepadState* state)
  83. {
  84. glfwGetGamepadState(gamepadIndex, (GLFWgamepadstate*)state);
  85. }
  86. void Input::set_gamepad_user_ptr(int32_t gamepadIndex, void* userPtr)
  87. {
  88. glfwSetJoystickUserPointer(gamepadIndex, userPtr);
  89. }
  90. void* Input::get_gamepad_user_ptr(int32_t gamepadIndex)
  91. {
  92. return glfwGetJoystickUserPointer(gamepadIndex);
  93. }
  94. }
  95. GP_ASSERT_STRUCTS_MATCH(GLFWgamepadstate, gameplay::GamepadState);