@realsee/five
Version:
Realsee Renderer SDK
98 lines (97 loc) • 3.51 kB
TypeScript
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<OriginObject3D extends Object3D = Object3D> 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<OriginObject3D extends Object3D = Object3D> extends BaseHelper<OriginObject3D> {
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<OriginObject3D extends Object3D = Object3D> extends BaseHelper<OriginObject3D> {
}
export type Circle = (Mesh | Group) & {
direction: Direction;
circle: Mesh;
angleSector?: Mesh & {
angleDirection: number;
baseAxes: Vector3;
};
};
export declare abstract class RotateHelperAbstract<OriginObject3D extends Object3D = Object3D> extends BaseHelper<OriginObject3D> {
abstract xCircle?: Circle;
abstract yCircle?: Circle;
abstract zCircle?: Circle;
abstract angleTips?: ReturnType<typeof tipsDom>;
abstract showDraggingHelper(directions: Direction[]): void;
abstract update(camera: THREE.Camera): void;
}