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