Improve pointer lock handling and update unit tests for third-person navigation

This commit is contained in:
2026-04-27 18:59:13 +02:00
parent 5280e1e5fa
commit daf7d69eee
2 changed files with 13 additions and 3 deletions

View File

@@ -858,9 +858,15 @@ export class ThirdPersonNavigationController implements NavigationController {
if (
event.code === "Escape" &&
this.context !== null &&
document.pointerLockElement === this.context.domElement
(this.pointerLocked ||
document.pointerLockElement === this.context.domElement)
) {
document.exitPointerLock();
event.preventDefault();
event.stopImmediatePropagation();
if (document.pointerLockElement === this.context.domElement) {
document.exitPointerLock();
}
}
};

View File

@@ -161,7 +161,11 @@ describe("ThirdPersonNavigationController", () => {
});
controller.activate(context);
window.dispatchEvent(new KeyboardEvent("keydown", { code: "Escape" }));
(
controller as unknown as {
handleKeyDown(event: KeyboardEvent): void;
}
).handleKeyDown(new KeyboardEvent("keydown", { code: "Escape" }));
expect(exitPointerLock).toHaveBeenCalledTimes(1);