@speckle/viewer
Version:
A 3d viewer for Speckle, based on threejs.
72 lines (71 loc) • 2.69 kB
TypeScript
import SpeckleRenderer from '../../SpeckleRenderer.js';
import { type IViewer } from '../../../IViewer.js';
import { Plane, Raycaster, Vector2, Vector3 } from 'three';
import { Measurement } from './Measurement.js';
import { ExtendedMeshIntersection } from '../../objects/SpeckleRaycaster.js';
import { Extension } from '../Extension.js';
import { CameraController } from '../CameraController.js';
export declare enum MeasurementType {
PERPENDICULAR = 0,
POINTTOPOINT = 1,
AREA = 2,
POINT = 3
}
export interface MeasurementOptions {
visible: boolean;
type?: MeasurementType;
vertexSnap?: boolean;
units?: string;
precision?: number;
chain?: boolean;
}
export declare class MeasurementsExtension extends Extension {
protected cameraProvider: CameraController;
get inject(): (typeof CameraController)[];
protected renderer: SpeckleRenderer;
protected measurements: Measurement[];
protected _activeMeasurement: Measurement | null;
protected _selectedMeasurement: Measurement | null;
protected raycaster: Raycaster;
protected _options: MeasurementOptions;
private _frameLock;
private _paused;
private _sceneHit;
private pointBuff;
private normalBuff;
private screenBuff0;
private screenBuff1;
get enabled(): boolean;
set enabled(value: boolean);
get options(): MeasurementOptions;
set options(options: MeasurementOptions);
get selectedMeasurement(): Measurement | null;
get activeMeasurement(): Measurement | null;
constructor(viewer: IViewer, cameraProvider: CameraController);
onLateUpdate(): void;
onResize(): void;
protected onPointerMove(data: Vector2 & {
event: Event;
}): void;
protected onPointerClick(data: {
event: PointerEvent;
multiSelect: boolean;
} & Vector2): void;
protected onPointerDoubleClick(data: Vector2 & {
event: PointerEvent;
multiSelect: boolean;
}): void;
protected autoLazerMeasure(data: Vector2): void;
protected startMeasurement(): Measurement;
protected cancelMeasurement(): void;
protected finishMeasurement(): void;
removeMeasurement(): void;
clearMeasurements(): void;
protected flashMeasurement(): void;
protected pickMeasurement(data: Vector2): Measurement | null;
protected selectMeasurement(measurement: Measurement, value: boolean): void;
protected snap(intersection: ExtendedMeshIntersection, outPoint: Vector3, outNormal: Vector3): void;
protected updateClippingPlanes(planes: Plane[]): void;
protected applyOptions(): void;
fromMeasurementData(startPoint: Vector3, endPoint: Vector3): Promise<void>;
}