5#define GLFW_INCLUDE_NONE
9#include "events/GLFWEventSource.h"
23 template <KeyState state>
24 bool isKey(GLFWKey k)
const {
25 static_assert(
false,
"Invalid key state");
28 KeyState getKeyState(GLFWKey k)
const;
29 float getAxis(InputAxis axis);
31 template <KeyState state>
32 bool isMouse(GLFWKey k)
const {
33 static_assert(
false,
"Invalid key state");
38 GLFWwindow* m_window =
nullptr;
40 std::array<KeyState, GLFW_KEY_LAST + 1> m_keyStates{KeyState::None};
41 std::array<KeyState, GLFW_MOUSE_BUTTON_LAST + 1> m_mouseButtonStates{KeyState::None};
42 std::array<float, static_cast<int>(InputAxis::End)> m_axisStates{0.0f};
44 float m_mouseX = 0.0f;
45 float m_mouseY = 0.0f;
47 void setAxis(InputAxis axis,
float value);
49 void registerCallbacks();
50 int keyIndex(GLFWKey k)
const;
55 inline bool InputSystem::isKey<KeyState::Pressed>(GLFWKey k)
const {
56 return m_keyStates[keyIndex(k)] == KeyState::Pressed;
60 inline bool InputSystem::isKey<KeyState::Released>(GLFWKey k)
const {
61 return m_keyStates[keyIndex(k)] == KeyState::Released;
65 inline bool InputSystem::isKey<KeyState::Held>(GLFWKey k)
const {
66 return m_keyStates[keyIndex(k)] == KeyState::Held;
70 inline bool InputSystem::isKey<KeyState::Down>(GLFWKey k)
const {
71 KeyState state = m_keyStates[keyIndex(k)];
72 return state & KeyState::Pressed || state & KeyState::Held;
76 inline bool InputSystem::isKey<KeyState::Up>(GLFWKey k)
const {
77 KeyState state = m_keyStates[keyIndex(k)];
78 return state & KeyState::Released || state & KeyState::None;
83 inline bool InputSystem::isMouse<KeyState::Pressed>(GLFWKey k)
const {
84 return m_mouseButtonStates[keyIndex(k)] == KeyState::Pressed;
88 inline bool InputSystem::isMouse<KeyState::Released>(GLFWKey k)
const {
89 return m_mouseButtonStates[keyIndex(k)] == KeyState::Released;
93 inline bool InputSystem::isMouse<KeyState::Held>(GLFWKey k)
const {
94 return m_mouseButtonStates[keyIndex(k)] == KeyState::Held;
98 inline bool InputSystem::isMouse<KeyState::Down>(GLFWKey k)
const {
99 KeyState state = m_mouseButtonStates[keyIndex(k)];
100 return state & KeyState::Pressed || state & KeyState::Held;
104 inline bool InputSystem::isMouse<KeyState::Up>(GLFWKey k)
const {
105 KeyState state = m_mouseButtonStates[keyIndex(k)];
106 return state & KeyState::Released || state & KeyState::None;
Definition GLFWEventSource.h:10