Add unit test to release third-person pointer lock on Escape key press
This commit is contained in:
@@ -142,6 +142,32 @@ describe("ThirdPersonNavigationController", () => {
|
|||||||
controller.deactivate(context);
|
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);
|
||||||
|
window.dispatchEvent(new KeyboardEvent("keydown", { code: "Escape" }));
|
||||||
|
|
||||||
|
expect(exitPointerLock).toHaveBeenCalledTimes(1);
|
||||||
|
|
||||||
|
controller.deactivate(context);
|
||||||
|
});
|
||||||
|
|
||||||
it("uses the gamepad right stick for third-person camera orbit", () => {
|
it("uses the gamepad right stick for third-person camera orbit", () => {
|
||||||
const { context } = createRuntimeControllerContext();
|
const { context } = createRuntimeControllerContext();
|
||||||
const controller = new ThirdPersonNavigationController();
|
const controller = new ThirdPersonNavigationController();
|
||||||
|
|||||||
Reference in New Issue
Block a user