aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Input.cpp
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 21:50:44 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 21:50:44 +0800
commit5fa4418adb5076d9bd4f923817a36a8d78dffb5f (patch)
tree37d98f2a921c7383f6e8bbd8f64b00a5c16b4570 /Minecraft.Client/Input.cpp
parent71daf43d998ba998e66740c3266184a853eb2856 (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.cpp20
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