@realsee/dnalogel
Version:
74 lines (73 loc) • 2.15 kB
TypeScript
import * as THREE from 'three';
import type { Five } from '@realsee/five';
import { Magnifier } from '../..';
import type { Intersection } from '../../../../typings/typings';
import { Subscribe } from '../../../Subscribe';
import type { PointHelperAbstract } from './typing';
export interface PointSelectorHelperConfig {
magnifier?: Magnifier | null;
magnifierParams?: ConstructorParameters<typeof Magnifier>[1];
pointHelper?: PointHelperAbstract | 'default' | 'highlight' | null;
container?: Element;
skipPanorama?: boolean;
}
type EventMap = {
intersectionUpdate: (intersection: PointIntersection) => void;
/** 功能开启 */
enabled: () => void;
/** 功能关闭 */
disabled: () => void;
};
export interface PointIntersection extends Intersection {
/**
* @description 被吸附
*/
isAdsorbed?: boolean;
/**
* @description 原始焦点
*/
originalPoint?: THREE.Vector3;
/**
* @description 虚拟生成的点
*/
isVirtual?: boolean;
/**
* @description 射线
*/
raycaster?: THREE.Raycaster;
/**
* @description 如果开启了吸附并且吸附到了平面,这里会有吸附的平面
*/
adherePlane?: THREE.Plane;
/**
* @description 如果开启了吸附并且吸附到了点,这里会有吸附的点
*/
adherePoint?: THREE.Vector3;
/**
* @description 如果开启了吸附并且吸附到了线,这里会有吸附的线
*/
adhereLine?: THREE.Line3;
}
export declare class PointSelectorHelper {
five: Five;
hooks: Subscribe<EventMap>;
position: PointIntersection | null;
magnifier: Magnifier | null;
pointHelper: PointHelperAbstract | null;
state: {
enabled: boolean;
visible: boolean;
};
private group;
constructor(five: Five, options?: PointSelectorHelperConfig);
show: () => void;
hide: () => void;
enable(): void;
disable(): void;
dispose(): void;
updateWithIntersect: (intersect?: Intersection, config?: {
emitEvent: boolean;
}) => void;
private abortUpdateMagnifier;
}
export {};