@speckle/viewer
Version:
A 3d viewer for Speckle, based on threejs.
54 lines (53 loc) • 2.7 kB
TypeScript
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;
}