UNPKG

@speckle/viewer

Version:

A 3d viewer for Speckle, based on threejs.

58 lines (57 loc) 2.23 kB
import { Group, Box3, BufferGeometry, MeshStandardMaterial, Mesh, Box3Helper, LineBasicMaterial, PlaneGeometry, Vector3, Plane, Raycaster } from 'three'; import { TransformControls } from 'three/examples/jsm/controls/TransformControls.js'; import { type IViewer } from '../../IViewer.js'; import { Extension } from './Extension.js'; import { CameraController } from './CameraController.js'; export declare enum SectionToolEvent { DragStart = "section-box-drag-start", DragEnd = "section-box-drag-end", Updated = "section-box-changed" } export interface SectionToolEventPayload { [SectionToolEvent.DragStart]: void; [SectionToolEvent.DragEnd]: void; [SectionToolEvent.Updated]: Plane[]; } export declare class SectionTool extends Extension { protected cameraProvider: CameraController; get inject(): (typeof CameraController)[]; protected dragging: boolean; protected display: Group; protected boxGeometry: BufferGeometry; protected boxMaterial: MeshStandardMaterial; protected boxMesh: Mesh; protected boxMeshHelper: Box3Helper; protected boxMeshHelperMaterial: LineBasicMaterial; protected plane: PlaneGeometry; protected hoverPlane: Mesh; protected sphere: Mesh; protected sidesSimple: { [id: string]: { verts: number[]; axis: string; }; }; protected currentRange: number[] | null; protected planes: Plane[]; protected prevPosition: Vector3 | null; protected attachedToBox: boolean; protected controls: TransformControls; protected allowSelection: boolean; protected raycaster: Raycaster; get enabled(): boolean; set enabled(value: boolean); get visible(): boolean; set visible(value: boolean); constructor(viewer: IViewer, cameraProvider: CameraController); on<T extends SectionToolEvent>(eventType: T, listener: (arg: SectionToolEventPayload[T]) => void): void; private _setupControls; private _draggingChangeHandler; private clickHandler; private _generateSimpleCube; private _generateOrUpdatePlanes; private _attachControlsToBox; getBox(): Box3; setBox(targetBox: Box3, offset?: number): void; toggle(): void; }