Improve pointer lock handling and update unit tests for third-person navigation
This commit is contained in:
@@ -858,9 +858,15 @@ export class ThirdPersonNavigationController implements NavigationController {
|
|||||||
if (
|
if (
|
||||||
event.code === "Escape" &&
|
event.code === "Escape" &&
|
||||||
this.context !== null &&
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -161,7 +161,11 @@ describe("ThirdPersonNavigationController", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
controller.activate(context);
|
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);
|
expect(exitPointerLock).toHaveBeenCalledTimes(1);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user