UNPKG

@speckle/viewer

Version:

A 3d viewer for Speckle, based on threejs.

54 lines (53 loc) 2.7 kB
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<TreeNode>; 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<Record<string, unknown>>; getSelectedNodes(): Array<TreeNode>; selectObjects(ids: Array<string>, multiSelect?: boolean): void; /**TO DO: This is redundant */ unselectObjects(ids: Array<string>): void; clearSelection(nodes?: Array<TreeNode>): 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<NodeRenderView>): void; protected applyHover(renderView: NodeRenderView | null): void; protected removeHover(): void; }