@speckle/viewer
Version:
A 3d viewer for Speckle, based on threejs.
78 lines (77 loc) • 3.33 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';
import { MeasurementData, MeasurementOptions } from '@speckle/shared/viewer/state';
export declare enum MeasurementEvent {
CountChanged = "measurement-count-changed",
MeasurementsChanged = "measurements-changed"
}
export interface MeasurementEventPayload {
[]: number;
[]: Measurement[];
}
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 _options: MeasurementOptions;
private _frameLock;
private _paused;
private _sceneHit;
protected raycaster: Raycaster;
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;
get measurementCount(): number;
get mesurements(): Measurement[];
private emitMeasurementCountChanged;
constructor(viewer: IViewer, cameraProvider: CameraController);
on<T extends MeasurementEvent>(eventType: T, listener: (arg: MeasurementEventPayload[T]) => void): void;
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;
protected pushMeasurement(measurement: Measurement): void;
protected findMeasurementFromData(measurementData: MeasurementData): Measurement | undefined;
removeMeasurement(measurementData?: MeasurementData): void;
/**
* Idempotent way of setting measurements
*/
setMeasurements(measurements: MeasurementData[]): 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;
addMeasurement(measurementData: MeasurementData): void;
toMeasurementData(): MeasurementData[];
}