import { SceneManager } from './SceneManager'; import { BufferGeometry, ColorRepresentation, InstancedMesh } from 'three'; import { ElementState } from './ElementState'; import { InstancedLods } from '../render/lods/InstancedLods'; import { MultiMesh2 } from '../render/multi-mesh/MultiMesh2.ts'; /** * Functions for elements management in scene. * See {@link SceneManager.tools} property in {@link SceneManager} class. */ export declare class SceneTools { private sceneManager; constructor(sceneManager: SceneManager); /** * Set new or default color for all elements. * @param color - New color for elements. * @param forceApply - Apply changes to render pipeline. */ setAllElementsColor(color?: ColorRepresentation, forceApply?: boolean): void; /** * Set new color for elements list. * @param elNums - Numbers for elements list. * @param color - - New color for elements list. * @param forceApply - Apply changes to render pipeline. */ setElementsColor(elNums: number[], color?: ColorRepresentation | ColorRepresentation[], forceApply?: boolean): void; /** * Set {@link ElementState} for all elements. * @param state - - New or default state for elements. * @param forceApply - Apply changes to render pipeline. * @param ignoreHidden - Exclude elements with Hidden state. */ setAllElementsState(state?: ElementState, forceApply?: boolean, ignoreHidden?: boolean): void; /** * Set {@link ElementState} for elements list. * @param elNums - Numbers for elements list. * @param state - - New state for elements list. * @param forceApply - Apply changes to render pipeline. */ setElementsState(elNums: number[], state?: ElementState | ElementState[], forceApply?: boolean): void; /** * Hide elements list in scene. * @param elNums - Numbers for elements list. */ hideElements(elNums: number[]): void; /** * Show (unhide) elements list in scene. * @param elNums - Numbers for elements list. */ showElements(elNums: number[]): void; /** * Isolate elements list in scene. * @param elNums - Numbers for elements list. */ isolateElements(elNums: number[]): void; /** * Inactivate (send to underlay) elements list in scene. * @param elNums - Numbers for elements list. */ inactivateElements(elNums: number[]): void; /** * Activate (send from underlay) elements list in scene. * @param elNums - Numbers for elements list. */ activateElements(elNums: number[]): void; private inactivateAllElements; /** * Activate all elements list in scene. */ activateAllElements(): void; /** * Inactivate all elements in scene excluding elements in list. */ inactivateUnselectedElements(elNums: number[]): void; private hideAllElements; /** * Show all elements in scene. */ showAllElements(): void; /** * Set all elements state and color to {@link SceneManager.elementDatas}. * @param state - - New state for all elements. * @param color - - New color for all elements. * @param forceApply - Apply changes to render pipeline. */ setAllElementsStateAndColor(state?: ElementState | undefined, color?: ColorRepresentation | undefined, forceApply?: boolean): void; /** * Set elements state and color to {@link SceneManager.elementDatas}. * @param elNums - Numbers for elements list. * @param state - - New state for elements list. * @param color - - New color for elements list. * @param forceApply - Apply changes to render pipeline. */ setElementsStateAndColor(elNums: number[], state?: ElementState | ElementState[] | undefined, color?: ColorRepresentation | ColorRepresentation[] | undefined, forceApply?: boolean): void; /** * Apply elements state and color from SceneManager.elementDatas. * @param elNums - Numbers for elements list. */ applyElementsStateAndColor(elNums: number[]): void; /** * Apply all elements state and color from {@link SceneManager.elementDatas}. */ applyAllElementsStateAndColor(): void; private applyLodsStateAndColor; private applyInstancesStateAndColor; private applySharedStateAndColor; /** * Apply elements visibility from SceneManager.elementDatas. */ applyAllElementsVisibility(): void; /** * Analyze instance mesh items visibility by several passes like element state and crop planes. * Used to increase performance and cut unnecessary elements from the rendering process. * @param mesh - Instance mesh object. */ applyInstancesVisibility(mesh: InstancedMesh): void; /** * Analyze instanced LODS items visibility by several passes like element state and crop planes. * Used to increase performance and cut unnecessary elements from the rendering process. * @param lod - InstancedLods object. */ applyInstancedLodsVisibility(lod: InstancedLods): void; applyMultiMeshVisibility(mesh: MultiMesh2): void; /** * Analyze a nd optimize shared mesh buffer indices by several passes like element state and crop planes. * Used to increase performance and cut unnecessary elements from the rendering process. * @param geometry - Buffer geometry object. * @param isLine - Whether buffers are lines or meshes. */ applySharedVisibility(geometry: BufferGeometry, isLine: boolean): void; }