import { Box3, InstancedMesh, LineSegments, OrthographicCamera, PerspectiveCamera, Plane, Scene, WebGLRenderer } from 'three'; import { SceneManager } from '../scene/SceneManager'; import { ElementData } from '../scene/ElementData'; import { ClippingEvents } from './ClippingEvents'; /** * Functions for clipping planes management in scene. * See {@link SceneManager.clippingTools} property in {@link SceneManager} class. */ export declare class ClippingTools extends EventTarget { /** * Color for generated cap faces of cropped elements. */ capsColor: string; /** * Color for generated cap outlines of cropped elements. */ capOutlinesColor: string; /** * The scene for storing elements caps. */ scene: Scene; private readonly sceneManager; private planes; private planeSize; private planesGroup; private outlinesGroup; outlinesThin: LineSegments; private outlinesFatGeometry; private outlinesFat; private outlineMaterial; private backMat; private frontMat; /** * @param sceneManager - {@link SceneManager} instance. */ constructor(sceneManager: SceneManager); private initOutlines; private initLights; /** * Add event listener with automatic dispose. * @param eventType - event type. * @param eventListener - event listener. * @param signal - optional abort signal for manual aborting event listener. */ addAutoEventListener(eventType: ClippingEvents, eventListener: EventListenerOrEventListenerObject, signal: AbortSignal): void; /** * Sets clipping planes for scene. * @param planes - Array of clipping planes. * @param isReplace - Replace current planes set or only add/modify. */ setPlanes(planes: Map, isReplace?: boolean): void; private updateMaterials; /** * Deletes clipping planes by its names. * @param names - array of plane names. */ deletePlanes(names: string[]): void; /** * Get all clipping planes as array of Plane objects. */ getPlanes(): Array; /** * Get only active clipping planes as array of Plane objects. */ getActivePlanes(): Array; /** * Update cap planes size for proper visibility in scene by scene bounding box. * @param bbox - Scene bounding box. */ updatePlanes(bbox: Box3): void; /** * Test instance mesh item visibility. * @param mesh - instance mesh object. * @param idx - instance item index. */ isInstanceMeshVisible(mesh: InstancedMesh, idx: number): boolean; /** * Test scene element visibility by its bounding sphere. * @param elementData - element data. See {@link SceneManager.elementDatas} in {@link SceneManager} class. */ isElementVisible(elementData: ElementData): boolean; private updatePlanesStatus; private getPlanesExceptKey; /** * render cap faces. * @param renderer - web GL renderer instance. * @param camera - perspective camera. * @param generateIntersectionCaps - is it necessary to generate cap faces at the intersection of volumes. */ render(renderer: WebGLRenderer, camera: PerspectiveCamera | OrthographicCamera, generateIntersectionCaps?: boolean): void; /** * Clear outlines geometry. */ clearOutlines(): void; /** * Generates new outlines geometry. */ generateOutlines(): void; /** * Render generated outlines. * @param renderer - current renderer. * @param camera - current camera. */ renderOutlines(renderer: WebGLRenderer, camera: PerspectiveCamera | OrthographicCamera): void; /** * Update clipping plane sizes for new bounding box. * @param bbox - bounding box. */ updatePlaneSizes(bbox: Box3): void; /** * Destroy clipping planes tool and release all resources. */ dispose(): void; setSize(width: number, height: number): void; /** * Hook when planes has been updated internally or externally. */ updated(): void; }