22 static void Initialize();
26 static bool IsKeyPressed(
const EKey Key);
27 static bool IsKeyHeld(
const EKey Key);
28 static bool IsKeyDown(
const EKey Key);
29 static bool IsKeyReleased(
const EKey Key);
31 static bool IsMouseButtonPressed(
const EMouseButton Button);
32 static bool IsMouseButtonHeld(
const EMouseButton Button);
33 static bool IsMouseButtonDown(
const EMouseButton Button);
34 static bool IsMouseButtonReleased(
const EMouseButton Button);
35 static bool IsAnyMouseButtonPressed();
37 static void SetCursorMode(
const ECursorMode CursorMode);
50 static void TransitionPressedKeys();
51 static void TransitionPressedButtons();
58 template<
typename TDuration>
59 static TDuration GetKeyHeldTime(
const EKey Key)
61 using namespace std::chrono;
65 LK_CORE_ASSERT(KeyHeldMap.contains(Key),
"Key '{}' is not held down", Enum::ToString(Key));
67 if (!KeyHeldMap.contains(Key))
72 return duration_cast<TDuration>(KeyHeldMap.at(Key).second - KeyHeldMap.at(Key).first);
77 LK_CORE_ASSERT(MouseDataMap.contains(MouseButton));
78 return (MouseDataMap.at(MouseButton));
81 FORCEINLINE
static EMouseButton GetLastMouseButton() {
return LastMouseButton; }
83 static std::size_t GetPressedKeys(std::vector<EKey>& InKeys);
85 FORCEINLINE
static float GetMouseX() {
return LMouse::GetMouseX(); }
86 FORCEINLINE
static float GetMouseY() {
return LMouse::GetMouseY(); }
89 inline static EMouseButton LastMouseButton = EMouseButton::None;
91 inline static std::map<EKey, FKeyData> KeyDataMap{};
92 inline static std::map<EMouseButton, FMouseButtonData> MouseDataMap{};
94 using FKeyHeldData = std::pair<std::chrono::steady_clock::time_point, std::chrono::steady_clock::time_point>;
95 inline static std::map<EKey, FKeyHeldData> KeyHeldMap{};