import type { THREE } from "@x-viewer/core"; /** Per-mesh geometry + local TRS captured for undo/redo of mesh-level edits. */ export interface MeshGeometrySnapshot { meshUuid: string; geometry: THREE.BufferGeometry | null; position: THREE.Vector3; rotation: THREE.Euler; scale: THREE.Vector3; } /** Snapshot of all drawable meshes under a subtree root. */ export interface SceneMeshSnapshot { rootUuid: string; meshes: MeshGeometrySnapshot[]; } /** Per-mesh material assignment for undo/redo. */ export interface MeshMaterialSnapshot { meshUuid: string; material: THREE.Material | THREE.Material[]; } export interface SceneMaterialSnapshot { rootUuid: string; meshes: MeshMaterialSnapshot[]; }