From 711d53969d6b76355bd2557952fff454cdb03242 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 27 Apr 2026 19:33:48 +0200 Subject: [PATCH] Reset navigation state when pointer lock is lost in first-person controller --- src/runtime-three/first-person-navigation-controller.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/runtime-three/first-person-navigation-controller.ts b/src/runtime-three/first-person-navigation-controller.ts index 4517b9d3..75cc31bd 100644 --- a/src/runtime-three/first-person-navigation-controller.ts +++ b/src/runtime-three/first-person-navigation-controller.ts @@ -486,8 +486,16 @@ export class FirstPersonNavigationController implements NavigationController { return; } + const wasPointerLocked = this.pointerLocked; const pointerLocked = document.pointerLockElement === this.context.domElement; + + if (wasPointerLocked && !pointerLocked) { + this.pressedKeys.clear(); + this.jumpPressed = false; + this.jumpHoldRemainingMs = 0; + } + this.pointerLocked = pointerLocked; this.context.setRuntimeMessage( pointerLocked