From 552af93d729f98eed1a8a41f1d88cb08847f1f8a Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 27 Apr 2026 19:00:38 +0200 Subject: [PATCH] Refactor pointer lock detection and simplify event listeners in navigation controller --- src/app/App.tsx | 2 +- .../third-person-navigation-controller.ts | 18 ++---------------- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/app/App.tsx b/src/app/App.tsx index c04f94ea..e2d82b8b 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -4899,7 +4899,7 @@ export function App({ store, initialStatusMessage }: AppProps) { return; } - const pointerCaptured = firstPersonTelemetry?.pointerLocked === true; + const pointerCaptured = document.pointerLockElement !== null; if (pointerCaptured) { return; diff --git a/src/runtime-three/third-person-navigation-controller.ts b/src/runtime-three/third-person-navigation-controller.ts index d8af3646..2b4a3780 100644 --- a/src/runtime-three/third-person-navigation-controller.ts +++ b/src/runtime-three/third-person-navigation-controller.ts @@ -234,7 +234,7 @@ export class ThirdPersonNavigationController implements NavigationController { this.initializedFromSpawn = true; } - window.addEventListener("keydown", this.handleKeyDown, true); + window.addEventListener("keydown", this.handleKeyDown); window.addEventListener("keyup", this.handleKeyUp); window.addEventListener("blur", this.handleBlur); document.addEventListener("mousemove", this.handleMouseMove); @@ -279,7 +279,7 @@ export class ThirdPersonNavigationController implements NavigationController { ctx: RuntimeControllerContext, options: NavigationControllerDeactivateOptions = {} ): void { - window.removeEventListener("keydown", this.handleKeyDown, true); + window.removeEventListener("keydown", this.handleKeyDown); window.removeEventListener("keyup", this.handleKeyUp); window.removeEventListener("blur", this.handleBlur); document.removeEventListener("mousemove", this.handleMouseMove); @@ -854,20 +854,6 @@ export class ThirdPersonNavigationController implements NavigationController { private handleKeyDown = (event: KeyboardEvent) => { this.pressedKeys.add(event.code); - - if ( - event.code === "Escape" && - this.context !== null && - (this.pointerLocked || - document.pointerLockElement === this.context.domElement) - ) { - event.preventDefault(); - event.stopImmediatePropagation(); - - if (document.pointerLockElement === this.context.domElement) { - document.exitPointerLock(); - } - } }; private handleKeyUp = (event: KeyboardEvent) => {