diff options
Diffstat (limited to 'Minecraft.Client/Windows64/KeyboardMouseInput.cpp')
| -rw-r--r-- | Minecraft.Client/Windows64/KeyboardMouseInput.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Minecraft.Client/Windows64/KeyboardMouseInput.cpp b/Minecraft.Client/Windows64/KeyboardMouseInput.cpp index 791eb272..fc763394 100644 --- a/Minecraft.Client/Windows64/KeyboardMouseInput.cpp +++ b/Minecraft.Client/Windows64/KeyboardMouseInput.cpp @@ -13,6 +13,8 @@ KeyboardMouseInput::KeyboardMouseInput() , m_captured(false) , m_hWnd(NULL) , m_initialized(false) + , m_mouseX(0) + , m_mouseY(0) { memset(m_keyState, 0, sizeof(m_keyState)); memset(m_keyStatePrev, 0, sizeof(m_keyStatePrev)); @@ -20,6 +22,7 @@ KeyboardMouseInput::KeyboardMouseInput() memset(m_mouseButtonsPrev, 0, sizeof(m_mouseButtonsPrev)); memset(m_keyPressedAccum, 0, sizeof(m_keyPressedAccum)); memset(m_mousePressedAccum, 0, sizeof(m_mousePressedAccum)); + memset(m_mouseReleasedAccum, 0, sizeof(m_mouseReleasedAccum)); } KeyboardMouseInput::~KeyboardMouseInput() @@ -103,6 +106,7 @@ void KeyboardMouseInput::OnMouseButton(int button, bool down) if (button >= 0 && button < 3) { if (down && !m_mouseButtons[button]) m_mousePressedAccum[button] = true; + if (!down && m_mouseButtons[button]) m_mouseReleasedAccum[button] = true; m_mouseButtons[button] = down; } } @@ -112,12 +116,23 @@ void KeyboardMouseInput::OnMouseWheel(int delta) m_scrollDeltaAccum += delta; } +void KeyboardMouseInput::OnMouseMove(int x, int y) +{ + m_mouseX = x; + m_mouseY = y; +} + +int KeyboardMouseInput::GetMouseX() const { return m_mouseX; } +int KeyboardMouseInput::GetMouseY() const { return m_mouseY; } +HWND KeyboardMouseInput::GetHWnd() const { return m_hWnd; } + void KeyboardMouseInput::ClearAllState() { memset(m_keyState, 0, sizeof(m_keyState)); memset(m_mouseButtons, 0, sizeof(m_mouseButtons)); memset(m_keyPressedAccum, 0, sizeof(m_keyPressedAccum)); memset(m_mousePressedAccum, 0, sizeof(m_mousePressedAccum)); + memset(m_mouseReleasedAccum, 0, sizeof(m_mouseReleasedAccum)); m_mouseDeltaXAccum = 0.0f; m_mouseDeltaYAccum = 0.0f; m_scrollDeltaAccum = 0; @@ -178,6 +193,14 @@ bool KeyboardMouseInput::ConsumeMousePress(int btn) return pressed; } +bool KeyboardMouseInput::ConsumeMouseRelease(int btn) +{ + if (btn < 0 || btn >= 3) return false; + bool released = m_mouseReleasedAccum[btn]; + m_mouseReleasedAccum[btn] = false; + return released; +} + void KeyboardMouseInput::ConsumeMouseDelta(float &dx, float &dy) { dx = m_mouseDeltaXAccum; |
