Refactor pointer lock detection and simplify event listeners in navigation controller

This commit is contained in:
2026-04-27 19:00:38 +02:00
parent daf7d69eee
commit 552af93d72
2 changed files with 3 additions and 17 deletions

View File

@@ -4899,7 +4899,7 @@ export function App({ store, initialStatusMessage }: AppProps) {
return; return;
} }
const pointerCaptured = firstPersonTelemetry?.pointerLocked === true; const pointerCaptured = document.pointerLockElement !== null;
if (pointerCaptured) { if (pointerCaptured) {
return; return;

View File

@@ -234,7 +234,7 @@ export class ThirdPersonNavigationController implements NavigationController {
this.initializedFromSpawn = true; this.initializedFromSpawn = true;
} }
window.addEventListener("keydown", this.handleKeyDown, true); window.addEventListener("keydown", this.handleKeyDown);
window.addEventListener("keyup", this.handleKeyUp); window.addEventListener("keyup", this.handleKeyUp);
window.addEventListener("blur", this.handleBlur); window.addEventListener("blur", this.handleBlur);
document.addEventListener("mousemove", this.handleMouseMove); document.addEventListener("mousemove", this.handleMouseMove);
@@ -279,7 +279,7 @@ export class ThirdPersonNavigationController implements NavigationController {
ctx: RuntimeControllerContext, ctx: RuntimeControllerContext,
options: NavigationControllerDeactivateOptions = {} options: NavigationControllerDeactivateOptions = {}
): void { ): void {
window.removeEventListener("keydown", this.handleKeyDown, true); window.removeEventListener("keydown", this.handleKeyDown);
window.removeEventListener("keyup", this.handleKeyUp); window.removeEventListener("keyup", this.handleKeyUp);
window.removeEventListener("blur", this.handleBlur); window.removeEventListener("blur", this.handleBlur);
document.removeEventListener("mousemove", this.handleMouseMove); document.removeEventListener("mousemove", this.handleMouseMove);
@@ -854,20 +854,6 @@ export class ThirdPersonNavigationController implements NavigationController {
private handleKeyDown = (event: KeyboardEvent) => { private handleKeyDown = (event: KeyboardEvent) => {
this.pressedKeys.add(event.code); 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) => { private handleKeyUp = (event: KeyboardEvent) => {