Handle Escape key exit from pointer lock and remove redundant test case in third-person controller
This commit is contained in:
@@ -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 (
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user