export interface Vec3 { x: number; y: number; z: number; } export interface Quat { x: number; y: number; z: number; w: number; } export interface ColliderInfo { handle: number; /** Lowercased Rapier shape name: 'cuboid', 'trimesh', 'ball', 'capsule', … */ shape: string; halfExtents?: Vec3; radius?: number; halfHeight?: number; position: Vec3; rotation: Quat; } export interface SnapshotObject { path: string; type: string; geometry: string | null; position: Vec3; rotation: Quat; scale: Vec3; aabb: { min: Vec3; max: Vec3; } | null; obb: { center: Vec3; half: Vec3; } | null; visible: boolean; triangles: number; color: string | null; nonFinite?: true; } export type ColliderSource = 'ok' | 'unsupported' | 'absent'; export interface WorldSnapshot { snapshotVersion: 1; spawn: Vec3 | null; objects: SnapshotObject[]; colliders: ColliderInfo[]; sources: { scene: true; colliders: ColliderSource; }; truncated?: { emitted: number; total: number; }; } export interface SnapshotOptions { maxObjects?: number; }