import { Euler, Group, InstancedMesh, Matrix4, Mesh, Quaternion, Vector3, Scene } from 'three'; /** * Transformation data for an instance */ export interface ITransformationData { position: Vector3; rotation: Euler; quaternion: Quaternion; scale: Vector3; } /** * Converts a Mesh or Group into InstancedMesh(es) * Preserves relative transforms within groups */ export declare class MeshToInstancedMeshConverter { private _sourceMesh; private _instanceCount; private _meshInfos; private _instanceTransforms; private _tempMatrix; private _tempPosition; private _tempQuaternion; private _tempScale; constructor(sourceMesh: Mesh | Group, instanceCount: number); private convertToInstancedMesh; private createInstancedMeshFromMesh; private resetAllInstances; private updateInstanceTransform; private applyTransformToMesh; /** * Set transform for a specific instance */ setInstanceTransform(instanceIndex: number, position: Vector3, rotation: Euler, scale: Vector3): void; setInstancePosition(instanceIndex: number, position: Vector3): void; setInstanceRotation(instanceIndex: number, rotation: Euler): void; setInstanceScale(instanceIndex: number, scale: Vector3): void; setInstanceMatrix(instanceIndex: number, matrix: Matrix4): void; /** * Batch update multiple instances */ setInstanceTransforms(transforms: Array<{ instanceIndex: number; position: Vector3; rotation: Euler; scale: Vector3; }>): void; /** * Hide an instance by scaling to zero */ hideInstance(instanceIndex: number): void; /** * Show a previously hidden instance */ showInstance(instanceIndex: number): void; /** * Add all instanced meshes to a scene */ addToScene(scene: Scene): void; /** * Remove all instanced meshes from a scene */ removeFromScene(scene: Scene): void; /** * Get all instanced meshes */ getInstancedMeshes(): InstancedMesh[]; getInstanceCount(): number; getInstanceTransform(instanceIndex: number): ITransformationData | null; getMeshCount(): number; /** * Update GPU render count without resizing internal instance capacity. */ setRenderCount(count: number): void; /** * Dynamically resize instance count */ setInstanceCount(newCount: number): void; /** * Dispose all resources */ dispose(): void; } //# sourceMappingURL=MeshToInstancedMeshConverter.d.ts.map