import * as THREE from 'three'; import type { Group, Mesh, Object3D } from 'three'; import { Vector3 } from 'three'; import type { Direction, PositionFrom } from '../typing'; import type { tipsDom } from '../utils/tipsDom'; export interface BaseHelperConfig { onRender?: () => any; /** * @description: helper 初始位置来源 * @default 'objectPosition' */ positionFrom?: PositionFrom; } export declare abstract class BaseHelper extends THREE.Object3D { protected originObject3D: OriginObject3D; protected onRender: () => any; private positionFrom; removeChildren(): this; add(...objects: Object3D[]): this; addIfNotExists(...objects: Object3D[]): this; remove(...objects: Object3D[]): this; removeFromParent(): this; get helperObject(): Object3D; constructor(originObject3D: OriginObject3D, config?: BaseHelperConfig); render(): void; enable(): void; disable(): void; show(): void; hide(): void; raycasterIntersectObject(raycaster: THREE.Raycaster, intersection?: THREE.Intersection[]): THREE.Intersection[]; initialPosition(offset?: THREE.Vector3): void; setScaleByCamera(camera: THREE.PerspectiveCamera | THREE.OrthographicCamera): void; initQuaternion(config?: { xAxis?: Vector3 | (() => Vector3); yAxis?: Vector3 | (() => Vector3); zAxis?: Vector3 | (() => Vector3); }): void; applyHelperScaleMatrix4(matrix: THREE.Matrix4, origin?: Vector3): void; setHelperQuaternion(quaternion: THREE.Quaternion, origin?: Vector3): void; applyHelperQuaternion(quaternion: THREE.Quaternion, origin?: Vector3): void; dispose(): void; } export declare abstract class MoveHelperAbstract extends BaseHelper { abstract xArrow?: Object3D & { arrow: Object3D; line?: Object3D; direction: Direction; }; abstract yArrow?: Object3D & { arrow: Object3D; line?: Object3D; direction: Direction; }; abstract zArrow?: Object3D & { arrow: Object3D; line?: Object3D; direction: Direction; }; abstract centerHandle?: Object3D & { direction: Direction; }; abstract xyPlane?: Object3D & { direction: Direction; }; abstract xzPlane?: Object3D & { direction: Direction; }; abstract yzPlane?: Object3D & { direction: Direction; }; abstract moveTips?: { element: HTMLElement; show: () => void; hide: () => void; setLeftTop: (left: string, top: string) => void; }; abstract showDraggingHelper(directions?: Direction[]): void; abstract update(camera: THREE.Camera): void; } export declare abstract class BoundingBoxHelperAbstract extends BaseHelper { } export type Circle = (Mesh | Group) & { direction: Direction; circle: Mesh; angleSector?: Mesh & { angleDirection: number; baseAxes: Vector3; }; }; export declare abstract class RotateHelperAbstract extends BaseHelper { abstract xCircle?: Circle; abstract yCircle?: Circle; abstract zCircle?: Circle; abstract angleTips?: ReturnType; abstract showDraggingHelper(directions: Direction[]): void; abstract update(camera: THREE.Camera): void; }