UNPKG

threepipe

Version:

A modern 3D viewer framework built on top of three.js, written in TypeScript, designed to make creating high-quality, modular, and extensible 3D experiences on the web simple and enjoyable.

114 lines 4.7 kB
import { EventDispatcher, Intersection, Object3D, Raycaster, Vector2 } from 'three'; import { JSUndoManager } from 'ts-browser-helpers'; import { ICamera, IMaterial, IObject3D, ITexture, IGeometry, IWidget } from '../../core'; export type SelectionObject = IObject3D | IMaterial | ITexture | IGeometry | null; export type SelectionObjectArr = IObject3D[] | IMaterial[] | ITexture[] | IGeometry[]; export type SelectionModeType = 'object' | 'material' | 'texture' | 'geometry'; export type PickingModeType = 'auto' | SelectionModeType; export interface HitIntersects { selectedObject: IObject3D | null; intersect: Intersection<IObject3D> | null; intersects: Intersection<IObject3D>[]; mouse: Vector2; selectedWidget?: (IWidget & IObject3D) | null; selectedHandle?: Object3D | null; } export interface ObjectPickerEventMap { hoverObjectChanged: { object: IObject3D | null; material: IMaterial | null; value: SelectionObject; intersects?: HitIntersects; }; selectedObjectChanged: { object: IObject3D | null; material: IMaterial | null; value: SelectionObject; lastValue: SelectionObject; intersects?: HitIntersects; }; hitObject: { time: number; intersects: HitIntersects; }; selectionModeChanged: { detail: { key: 'selectionMode'; value: SelectionModeType; oldValue: SelectionModeType; }; }; pickingModeChanged: { detail: { key: 'pickingMode'; value: PickingModeType; oldValue: PickingModeType; }; }; } export declare class ObjectPicker extends EventDispatcher<ObjectPickerEventMap> { private _firstHit; hoverEnabled: boolean; selectionMode: SelectionModeType; pickingMode: PickingModeType; /** * Time threshold for a pointer click event */ static PointerClickMaxTime: number; /** * Distance threshold for a pointer click event */ static PointerClickMaxDistance: number; undoManager?: JSUndoManager; private _root; extraObjects: IObject3D[]; private _camera; private _mouseDownTime; private _mouseDownPos; private _mouseUpTime; private _time; selectionCondition: (o: IObject3D) => boolean; raycaster: Raycaster; mouse: Vector2; private _selected; private _selectedIntersects; private _hovering; private _hoveringIntersects; cursorStyles: { default: string; down: string; }; domElement: HTMLElement; constructor(root: IObject3D, domElement: HTMLElement, camera: ICamera, selectionCondition?: (o: IObject3D) => boolean); dispose(): void; get camera(): ICamera<import('../../core').ICameraEventMap>; set camera(value: ICamera<import('../../core').ICameraEventMap>); get selectedObject(): SelectionObject; protected _onSelectedRemoved: (e: { target: IObject3D | IMaterial; }) => void; setSelected(object: SelectionObject, record?: boolean, intersects?: HitIntersects): void; get hoverObject(): SelectionObject; setHoverObject(object: SelectionObject, _record?: boolean, intersects?: HitIntersects): void; get time(): number; get isMouseDown(): boolean; get mouseDownDeltaTime(): number; private _onPointerMove; private _onPointerLeave; private _onPointerEnter; private _onPointerCancel; updateMouseFromEvent(event: PointerEvent): void; private _onPointerDown; private _onPointerUp; private _onPointerClick; private _hitObject; checkIntersection(): { selectedObject: IObject3D<import('../../core').IObject3DEventMap, IGeometry<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap> | undefined, IMaterial<import('../../core').IMaterialEventMap> | IMaterial<import('../../core').IMaterialEventMap>[] | undefined>; intersect: Intersection<IObject3D<import('../../core').IObject3DEventMap, IGeometry<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap> | undefined, IMaterial<import('../../core').IMaterialEventMap> | IMaterial<import('../../core').IMaterialEventMap>[] | undefined>>; intersects: Intersection<IObject3D<import('../../core').IObject3DEventMap, IGeometry<import('three').NormalBufferAttributes, import('three').BufferGeometryEventMap> | undefined, IMaterial<import('../../core').IMaterialEventMap> | IMaterial<import('../../core').IMaterialEventMap>[] | undefined>>[]; mouse: Vector2; } | null; isHovering(): boolean; isSelected(): boolean; } //# sourceMappingURL=../../src/three/utils/ObjectPicker.d.ts.map