Handle Escape key exit from pointer lock and remove redundant test case in third-person controller

This commit is contained in:
2026-04-27 19:01:02 +02:00
parent 552af93d72
commit 1a6d207801
2 changed files with 7 additions and 30 deletions

View File

@@ -6731,6 +6731,13 @@ export class RuntimeHost {
return;
}
if (
document.pointerLockElement === this.domElement &&
event.code === "Escape"
) {
return;
}
const playerInputBindings = this.resolveRuntimePlayerInputBindings();
const interactKeyboardBinding = playerInputBindings.keyboard.interact;
if (

View File

@@ -142,36 +142,6 @@ describe("ThirdPersonNavigationController", () => {
controller.deactivate(context);
});
it("releases third-person pointer lock on Escape", () => {
const { context, domElement } = createRuntimeControllerContext();
const controller = new ThirdPersonNavigationController();
let pointerLockElement: Element | null = domElement;
const exitPointerLock = vi.fn(() => {
pointerLockElement = null;
document.dispatchEvent(new Event("pointerlockchange"));
});
Object.defineProperty(document, "pointerLockElement", {
configurable: true,
get: () => pointerLockElement
});
Object.defineProperty(document, "exitPointerLock", {
configurable: true,
value: exitPointerLock
});
controller.activate(context);
(
controller as unknown as {
handleKeyDown(event: KeyboardEvent): void;
}
).handleKeyDown(new KeyboardEvent("keydown", { code: "Escape" }));
expect(exitPointerLock).toHaveBeenCalledTimes(1);
controller.deactivate(context);
});
it("uses the gamepad right stick for third-person camera orbit", () => {
const { context } = createRuntimeControllerContext();
const controller = new ThirdPersonNavigationController();