feat: improve mouse input handling

This commit is contained in:
daoge_cmd
2026-03-02 00:04:54 +08:00
parent e16600a3e6
commit 47e00f7b62
10 changed files with 284 additions and 12 deletions

View File

@@ -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;