import { BufferGeometry, InstancedMesh, LineSegments, Matrix4, Mesh } from 'three'; import { InstancedLods } from '../render/lods/InstancedLods'; /** * Function signatures for using with SceneManager callbacks. */ export declare namespace SceneCallbacks { /** * Callback function for models load progress event. * @param progress - progress of loaded models in percent. */ type ProgressCallbackFunction = (progress: number) => void; /** * Callback function for load model event. * @param modelId - GUID for loaded model. */ type LoadedCallbackFunction = (modelId: string, isLastModel: boolean) => void; /** * Callback function for notFound model event. * @param modelId - GUID for loaded model. */ type NotFoundCallbackFunction = (modelId: string) => void; /** * Callback function for error model event. * @param modelId - GUID for loaded model. * @param error - error message. */ type ErrorCallbackFunction = (modelId: string, error: string) => void; /** * Callback function called for each buffer vertex with custom value. * @param geometry - Current BufferGeometry instance. * @param elNum - Current element number. * @param idx - Current buffer index in BufferGeometry instance. * @param val - Current custom value. */ type TraverseMeshValCallbackFunction = (geometry: BufferGeometry, elNum: number, idx: number, val: any) => void; /** * Callback function called for each buffer vertex. * @param geometry - Current BufferGeometry instance. * @param elNum - Current element number. * @param idx - Current buffer index in BufferGeometry instance. */ type TraverseMeshCallbackFunction = (geometry: BufferGeometry, elNum: number, idx: number, val?: any) => void; /** * Callback function called at the end of each buffer traversing. * @param geometry - Current BufferGeometry instance. * @param isMesh - Is buffer mesh or line. */ type EndTraverseMeshCallbackFunction = (geometry: BufferGeometry, isMesh: boolean, object: Mesh | LineSegments) => void; /** * Callback function called at the start of each buffer before traversing. * @param geometry - Current BufferGeometry instance. * @param objIdx - Current mesh index. * @param isMesh - Is buffer mesh or line. */ type StartTraverseMeshCallbackFunction = (geometry: BufferGeometry, objIdx: number, isMesh: boolean, object: Mesh | LineSegments) => void; /** * Callback function called for each mesh instance item. * @param child - Current BufferGeometry instance. * @param objIdx - Current mesh index. * @param elNum - Current element number. * @param matrix - Transformation matrix for current item. * @param idx - Instance item number. * @param val - Current custom value. */ type TraverseInstanceMeshValCallbackFunction = (child: InstancedMesh, objIdx: number, elNum: number, matrix: Matrix4, idx: number, val: any) => void; /** * Callback function called for each instanced mesh item. * @param child - Current BufferGeometry instance. * @param objIdx - Current mesh index. * @param elNum - Current element number. * @param matrix - Transformation matrix for current item. * @param idx - Instance item number. */ type TraverseInstancedMeshCallbackFunction = (child: InstancedMesh, objIdx: number, elNum: number, matrix: Matrix4, idx: number, val?: any) => void; /** * Callback function called at the end of instanced mesh traversing. * @param child - Current BufferGeometry instance. * @param objIdx - Current mesh index. */ type EndTraverseInstancedMeshCallbackFunction = (child: InstancedMesh, objIdx: number) => void; /** * Callback function called at the start of instanced mesh traversing. * @param child - Current BufferGeometry instance. * @param objIdx - Current mesh index. */ type StartTraverseInstancedMeshCallbackFunction = (child: InstancedMesh, objIdx: number) => void; /** * Callback function called for each LOD instance item. * @param child - Current BufferGeometry instance. * @param objIdx - Current mesh index. * @param elNum - Current element number. * @param matrix - Transformation matrix for current item. * @param idx - Instance item number. */ type TraverseInstancedLodsCallbackFunction = (child: InstancedLods, objIdx: number, elNum: number, matrix: Matrix4, idx: number) => void; /** * Callback function called at the end of LOD traversing. * @param child - Current BufferGeometry instance. * @param objIdx - Current mesh index. */ type EndTraverseInstancedLodsCallbackFunction = (child: InstancedLods, objIdx: number) => void; /** * Callback function called at the start of LOD traversing. * @param child - Current BufferGeometry instance. * @param objIdx - Current mesh index. */ type StartTraverseInstancedLodsCallbackFunction = (child: InstancedLods, objIdx: number) => void; /** * Options with callbacks used in traverse functions of {@link SceneManager}. * Used for changing buffers data for particular elements in traversing loop. * @param meshCallback - See {@link TraverseMeshCallbackFunction} * @param endMeshCallback - See {@link EndTraverseMeshCallbackFunction} * @param startMeshCallback - See {@link StartTraverseMeshCallbackFunction} * @param instanceMeshCallback - See {@link TraverseInstancedMeshCallbackFunction} * @param startInstanceMeshCallback - See {@link StartTraverseInstancedMeshCallbackFunction} * @param endInstanceMeshCallback - See {@link EndTraverseInstancedMeshCallbackFunction} * @param instancedLodsCallback - See {@link TraverseInstancedLodsCallbackFunction} * @param startInstancedLodsCallback - See {@link StartTraverseInstancedLodsCallbackFunction} * @param endInstancedLodsCallback - See {@link EndTraverseInstancedLodsCallbackFunction} */ interface TraverseCallbackOptions { meshCallback?: SceneCallbacks.TraverseMeshCallbackFunction; endMeshCallback?: SceneCallbacks.EndTraverseMeshCallbackFunction; startMeshCallback?: SceneCallbacks.StartTraverseMeshCallbackFunction; instancedMeshCallback?: SceneCallbacks.TraverseInstancedMeshCallbackFunction; startInstancedMeshCallback?: SceneCallbacks.StartTraverseInstancedMeshCallbackFunction; endInstancedMeshCallback?: SceneCallbacks.EndTraverseInstancedMeshCallbackFunction; instancedLodsCallback?: SceneCallbacks.TraverseInstancedLodsCallbackFunction; startInstancedLodsCallback?: SceneCallbacks.StartTraverseInstancedLodsCallbackFunction; endInstancedLodsCallback?: SceneCallbacks.EndTraverseInstancedLodsCallbackFunction; } }