Add test case to ignore mouse look while input is suspended

This commit is contained in:
2026-04-14 22:39:55 +02:00
parent fc2c8b8b24
commit 94a806c2e7

View File

@@ -104,6 +104,7 @@ function createRuntimeControllerContext(
) => ({
...desiredCameraPosition
}),
isInputSuspended: () => false,
setRuntimeMessage: vi.fn(),
setPlayerControllerTelemetry: vi.fn()
}
@@ -221,6 +222,34 @@ describe("FirstPersonNavigationController", () => {
});
});
it("ignores mouse look while input is suspended", () => {
const { context, domElement } = createRuntimeControllerContext();
const controller = new FirstPersonNavigationController();
context.isInputSuspended = () => true;
Object.defineProperty(document, "pointerLockElement", {
configurable: true,
get: () => domElement
});
controller.activate(context);
const initialQuaternion = context.camera.quaternion.clone();
document.dispatchEvent(
new MouseEvent("mousemove", {
movementX: 40,
movementY: 20
})
);
controller.update(0);
expect(context.camera.quaternion.equals(initialQuaternion)).toBe(true);
controller.deactivate(context, {
releasePointerLock: false
});
});
it("uses the authored movement template speed for first-person motion telemetry", () => {
const playerStart = createPlayerStartEntity({
id: "entity-player-start-custom-movement",