import type * as THREE from 'three'; import type { BaseHelper, MoveHelperAbstract, RotateHelperAbstract, Circle } from './Helper/BaseHelper'; import type { MoveController, UseFaceNormalInterface } from './Controllers/MoveController'; import type { Object3DHelper, AddObject3DHelperConfig } from './Controller'; import type { BaseController } from './Controllers/BaseController'; import type { RotateController } from './Controllers/RotateController'; import type { BoundingBoxController } from './Controllers/BoundingBoxController'; export interface Object3DHelperPluginState { enabled: boolean; visible: boolean; disposed: boolean; } export type HelperConfig = boolean | ({ enable: boolean; } & T); export type Object3DHelperPluginEventMap = { show: (options?: { userAction?: boolean; }) => void; hide: (options?: { userAction?: boolean; }) => void; enable: (options?: { userAction?: boolean; }) => void; disable: (options?: { userAction?: boolean; }) => void; dispose: () => void; stateChange: (params: { state: Object3DHelperPluginState; prevState?: Object3DHelperPluginState; }) => void; }; export type Direction = 'x' | 'y' | 'z' | 'xy' | 'xz' | 'yz' | 'plane'; export type Direction4 = 'nesw' | 'nwse' | 'ns' | 'ew'; export interface Scissor { left: number; bottom: number; width: number; height: number; } export type HelperEventMap = { wantToMove: (position: THREE.Vector3) => void; moveBefore: (position: THREE.Vector3) => void; wantToRotate: (quaternion: THREE.Quaternion) => void; wantToScale: (scale: THREE.Vector3) => void; move: (position: THREE.Vector3) => void; rotate: (quaternion: THREE.Quaternion) => void; scale: (scale: THREE.Vector3) => void; moveStart: (direction?: Direction) => void; rotateStart: (direction?: Direction) => void; scaleStart: (direction?: Direction | Direction4) => void; moveEnd: () => void; rotateEnd: () => void; scaleEnd: () => void; moveByMouseEnable: () => void; moveByMouseDisable: () => void; updateOtherHelpers: (params: { camera: THREE.Camera; }) => void; }; export type InternalHelperEventMap = { initialHelperPosition: () => void; setObjectPosition: (position: THREE.Vector3) => void; setObjectRotate: (quaternion: THREE.Quaternion, origin?: THREE.Vector3) => void; setObjectScale: (scale: THREE.Vector3) => void; applyObjectPosition: (position: { matrix: THREE.Matrix4; }) => void; applyObjectRotate: (rotate: { quaternion: THREE.Quaternion; origin: THREE.Vector3; }) => void; applyObjectScale: (scale: { matrix: THREE.Matrix4; origin?: THREE.Vector3; }) => void; }; export interface Object3DHelperState { enabled: boolean; visible: boolean; disposed: boolean; } export type Object3DHelperEventMap = HelperEventMap & { show: (options?: { userAction?: boolean; }) => void; hide: (options?: { userAction?: boolean; }) => void; enable: (options?: { userAction?: boolean; }) => void; disable: (options?: { userAction?: boolean; }) => void; dispose: () => void; stateChange: (params: { state: Object3DHelperState; prevState?: Object3DHelperState; }) => void; }; export interface HelperOffset { x: number | { percents: number; }; y: number | { percents: number; }; z: number | { percents: number; }; } export type Color = THREE.Color | string | number; export type PositionFrom = 'objectPosition' | 'boundingBox' | 'boundingSphere' | THREE.Vector3 | ((object: THREE.Object3D) => THREE.Vector3); export interface ObjectHelperControllers { moveController?: MoveController; rotateController?: RotateController; boundingBoxController?: BoundingBoxController; } export type ScaleCallback = (params: { intersectPoint: THREE.Vector3; scalePosition: ScalePosition; offset: THREE.Vector3; }) => any; export type ScalePosition = { id?: string; handlePosition: THREE.Vector3; basePosition: THREE.Vector3; }; export interface Vector3Position { x: number; y: number; z: number; } export type Vector3WithArray = [number, number, number]; export interface Vector2Position { x: number; y: number; } export type Vector2WithArray = [number, number]; export type { BaseController, BoundingBoxController, MoveController, UseFaceNormalInterface, RotateController, MoveHelperAbstract, RotateHelperAbstract, Circle, BaseHelper, Object3DHelper, AddObject3DHelperConfig, };