diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 21:50:44 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 21:50:44 +0800 |
| commit | 5fa4418adb5076d9bd4f923817a36a8d78dffb5f (patch) | |
| tree | 37d98f2a921c7383f6e8bbd8f64b00a5c16b4570 /Minecraft.Client/Input.cpp | |
| parent | 71daf43d998ba998e66740c3266184a853eb2856 (diff) | |
feat: implement per-frame mouse look for reduced input latency on Windows
Diffstat (limited to 'Minecraft.Client/Input.cpp')
| -rw-r--r-- | Minecraft.Client/Input.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/Minecraft.Client/Input.cpp b/Minecraft.Client/Input.cpp index 6996192c..7fce9360 100644 --- a/Minecraft.Client/Input.cpp +++ b/Minecraft.Client/Input.cpp @@ -128,17 +128,23 @@ void Input::tick(LocalPlayer *player) player->interpolateTurn(tx * abs(tx) * turnSpeed, ty * abs(ty) * turnSpeed); #ifdef _WINDOWS64 - // Mouse look (added after stick-based turn) + // Mouse look is now handled per-frame in Minecraft::applyFrameMouseLook() + // to eliminate the 20Hz tick delay. Only flush any remaining delta here + // as a safety measure. if (iPad == 0 && KMInput.IsCaptured()) { - float mouseSensitivity = 0.5f; float rawDx, rawDy; KMInput.ConsumeMouseDelta(rawDx, rawDy); - float mdx = rawDx * mouseSensitivity; - float mdy = -rawDy * mouseSensitivity; - if (app.GetGameSettings(iPad, eGameSetting_ControlInvertLook)) - mdy = -mdy; - player->interpolateTurn(mdx, mdy); + // Delta should normally be 0 since applyFrameMouseLook() already consumed it + if (rawDx != 0.0f || rawDy != 0.0f) + { + float mouseSensitivity = 0.5f; + float mdx = rawDx * mouseSensitivity; + float mdy = -rawDy * mouseSensitivity; + if (app.GetGameSettings(iPad, eGameSetting_ControlInvertLook)) + mdy = -mdy; + player->interpolateTurn(mdx, mdy); + } } #endif |
