14 lines
411 B
TypeScript
14 lines
411 B
TypeScript
import { z } from 'zod'
|
|
|
|
const Vector3Schema = z.tuple([z.number(), z.number(), z.number()])
|
|
|
|
export const CameraSchema = z.object({
|
|
position: Vector3Schema,
|
|
target: Vector3Schema,
|
|
mode: z.enum(['perspective', 'orthographic']).default('perspective'),
|
|
fov: z.number().optional(), // For perspective
|
|
zoom: z.number().optional(), // For orthographic
|
|
})
|
|
|
|
export type Camera = z.infer<typeof CameraSchema>
|