import { Extension } from './Extension.js'; import { NodeRenderView } from '../tree/NodeRenderView.js'; import { Material, Vector2 } from 'three'; import { type IViewer, type SelectionEvent } from '../../IViewer.js'; import { type DisplayStyle, type RenderMaterial } from '../materials/Materials.js'; import { type MaterialOptions } from '../materials/MaterialOptions.js'; import { type TreeNode } from '../tree/WorldTree.js'; import { CameraController } from './CameraController.js'; export interface SelectionExtensionOptions { selectionMaterialData: RenderMaterial & DisplayStyle & MaterialOptions; hoverMaterialData?: RenderMaterial & DisplayStyle & MaterialOptions; } export declare const DefaultSelectionExtensionOptions: SelectionExtensionOptions; export declare class SelectionExtension extends Extension { protected cameraProvider: CameraController; get inject(): (typeof CameraController)[]; protected selectedNodes: Array; protected selectionRvs: { [id: string]: NodeRenderView; }; protected selectionMaterials: { [id: string]: Material; }; protected hoverRv: NodeRenderView | null; protected hoverMaterial: Material | null; protected selectionMaterialData: RenderMaterial & DisplayStyle & MaterialOptions; protected hoverMaterialData: RenderMaterial & DisplayStyle & MaterialOptions; protected transparentSelectionMaterialData: RenderMaterial & DisplayStyle & MaterialOptions; protected transparentHoverMaterialData: RenderMaterial & DisplayStyle & MaterialOptions; protected hiddenSelectionMaterialData: RenderMaterial & DisplayStyle & MaterialOptions; protected _enabled: boolean; protected _options: SelectionExtensionOptions; get enabled(): boolean; set enabled(value: boolean); get options(): SelectionExtensionOptions; set options(value: SelectionExtensionOptions); constructor(viewer: IViewer, cameraProvider: CameraController); getSelectedObjects(): Array>; getSelectedNodes(): Array; selectObjects(ids: Array, multiSelect?: boolean): void; /**TO DO: This is redundant */ unselectObjects(ids: Array): void; clearSelection(nodes?: Array): void; protected onObjectClicked(selection: SelectionEvent | null): void; protected onObjectDoubleClick(selectionInfo: SelectionEvent | null): void; protected onPointerMove(e: Vector2 & { event: Event; }): void; protected applySelection(): void; protected removeSelection(rvs?: Array): void; protected applyHover(renderView: NodeRenderView | null): void; protected removeHover(): void; }