import { describe, expect, it } from "vitest"; import { DEFAULT_CAMERA_PITCH, MAX_CAMERA_PITCH, MIN_CAMERA_PITCH, setCameraRelativeMovement, updateCameraOrbit, } from "./cameraOrbit"; describe("third-person camera orbit", () => { it("rotates horizontal movement with camera yaw", () => { const movement = { x: 0, z: 0 }; setCameraRelativeMovement(movement, 0, -1, 0); expect(movement.x).toBeCloseTo(0); expect(movement.z).toBeCloseTo(-1); setCameraRelativeMovement(movement, 0, -1, Math.PI / 2); expect(movement.x).toBeCloseTo(-1); expect(movement.z).toBeCloseTo(0); }); it("applies look input and clamps vertical orbit", () => { const orbit = { yaw: 0, pitch: DEFAULT_CAMERA_PITCH }; updateCameraOrbit(orbit, 1, 0, 1); expect(orbit.yaw).toBeCloseTo(-2.25); updateCameraOrbit(orbit, 0, 1, 10); expect(orbit.pitch).toBe(MAX_CAMERA_PITCH); updateCameraOrbit(orbit, 0, -1, 10); expect(orbit.pitch).toBe(MIN_CAMERA_PITCH); }); });