36 lines
1008 B
TypeScript
36 lines
1008 B
TypeScript
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);
|
|
});
|
|
});
|