22 [[nodiscard]]
bool IsKeyDown(KeyCode key)
const;
23 [[nodiscard]]
bool IsKeyPressed(KeyCode key)
const;
24 [[nodiscard]]
bool IsKeyReleased(KeyCode key)
const;
25 [[nodiscard]]
bool IsMouseButtonDown(MouseCode button)
const;
26 [[nodiscard]]
bool IsMouseButtonPressed(MouseCode button)
const;
27 [[nodiscard]]
bool IsMouseButtonReleased(MouseCode button)
const;
28 [[nodiscard]] glm::vec2 GetMousePosition()
const noexcept
30 return mouse_position_;
32 [[nodiscard]]
float GetMouseX()
const noexcept
34 return mouse_position_.x;
36 [[nodiscard]]
float GetMouseY()
const noexcept
38 return mouse_position_.y;
40 [[nodiscard]] glm::vec2 GetMouseDelta()
const noexcept
44 [[nodiscard]]
float GetMouseDeltaX()
const noexcept
46 return mouse_delta_.x;
48 [[nodiscard]]
float GetMouseDeltaY()
const noexcept
50 return mouse_delta_.y;
52 [[nodiscard]] glm::vec2 GetMouseScrollDelta()
const noexcept
54 return mouse_scroll_delta_;
56 [[nodiscard]]
float GetMouseScrollDeltaX()
const noexcept
58 return mouse_scroll_delta_.x;
60 [[nodiscard]]
float GetMouseScrollDeltaY()
const noexcept
62 return mouse_scroll_delta_.y;
66 static constexpr std::size_t kMaxTrackedKeys = 512;
67 static constexpr std::size_t kMaxTrackedMouseButtons = 8;
69 void SetKeyDown(KeyCode key,
bool is_down);
70 void SetMouseButtonDown(MouseCode button,
bool is_down);
71 void SetMousePosition(glm::vec2 mouse_position)
noexcept
73 mouse_delta_ += mouse_position - mouse_position_;
74 mouse_position_ = mouse_position;
76 void SyncMousePosition(glm::vec2 mouse_position)
noexcept
78 mouse_position_ = mouse_position;
80 void ResetMouseDelta()
noexcept
82 mouse_delta_ = glm::vec2(0.0f);
84 void ResetTransientInputs()
noexcept
87 key_released_.reset();
88 mouse_button_pressed_.reset();
89 mouse_button_released_.reset();
90 mouse_delta_ = glm::vec2(0.0f);
91 mouse_scroll_delta_ = glm::vec2(0.0f);
93 void ClearInputState()
noexcept
96 mouse_button_down_.reset();
97 ResetTransientInputs();
100 friend struct pixelbullet::input_internal::InputStateAccess;
102 std::bitset<kMaxTrackedKeys> key_down_;
103 std::bitset<kMaxTrackedKeys> key_pressed_;
104 std::bitset<kMaxTrackedKeys> key_released_;
105 std::bitset<kMaxTrackedMouseButtons> mouse_button_down_;
106 std::bitset<kMaxTrackedMouseButtons> mouse_button_pressed_;
107 std::bitset<kMaxTrackedMouseButtons> mouse_button_released_;
108 glm::vec2 mouse_position_ = glm::vec2(0.0f);
109 glm::vec2 mouse_delta_ = glm::vec2(0.0f);
110 glm::vec2 mouse_scroll_delta_ = glm::vec2(0.0f);