diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-02 00:04:54 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-02 00:43:04 +0800 |
| commit | 47e00f7b62b0717d09504d63e9d53404250609de (patch) | |
| tree | d0024d39bea490bfca6f35df58c39f23e5d1c21d /Minecraft.Client/Windows64/KeyboardMouseInput.h | |
| parent | e16600a3e6b497f520178a7cb8be7a06b5c6efad (diff) | |
feat: improve mouse input handling
Diffstat (limited to 'Minecraft.Client/Windows64/KeyboardMouseInput.h')
| -rw-r--r-- | Minecraft.Client/Windows64/KeyboardMouseInput.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/Minecraft.Client/Windows64/KeyboardMouseInput.h b/Minecraft.Client/Windows64/KeyboardMouseInput.h index 4d272f91..a09843f9 100644 --- a/Minecraft.Client/Windows64/KeyboardMouseInput.h +++ b/Minecraft.Client/Windows64/KeyboardMouseInput.h @@ -42,9 +42,16 @@ public: // Use these from code that runs at game tick rate (20Hz). bool ConsumeKeyPress(int vk); bool ConsumeMousePress(int btn); + bool ConsumeMouseRelease(int btn); void ConsumeMouseDelta(float &dx, float &dy); int ConsumeScrollDelta(); + // Absolute cursor position (client-area coordinates, for GUI when not captured) + void OnMouseMove(int x, int y); + int GetMouseX() const; + int GetMouseY() const; + HWND GetHWnd() const; + // Mouse capture for FPS look void SetCapture(bool capture); bool IsCaptured() const; @@ -61,6 +68,7 @@ private: // Sticky press accumulators (persist until consumed by game tick) bool m_keyPressedAccum[256]; bool m_mousePressedAccum[3]; + bool m_mouseReleasedAccum[3]; // Mouse delta accumulators (persist until consumed by game tick) float m_mouseDeltaXAccum; @@ -72,6 +80,10 @@ private: bool m_captured; HWND m_hWnd; bool m_initialized; + + // Absolute cursor position in client coordinates + int m_mouseX; + int m_mouseY; }; extern KeyboardMouseInput KMInput; |
