import type { Object3D, PerspectiveCamera, Vector3 } from '@anov/3d-core'; export { PerspectiveCameraExpand } from './CameraExpand'; export type vector3Array = number[]; type FocusParams = { target: vector3Array | vector3Array[] | string; pitch?: number; yaw?: number; distance?: number; duration?: number; isTrigger?: boolean; distanceCoefficient?: number; onUpdate?: (args: { position: Vector3; target: Vector3; }) => void; }; export type FocusReturn = Promise<{ position: number[]; target: number[]; duration: number; userInput: boolean; pitch: number; }>; export type FollowParamsOption = Partial<{ relativeRotation: boolean; pitch: number; yaw: number; distance: number; }>; export interface CameraExpandInterface { isTransitionPeriod: boolean; isCameraChange: boolean; pitch: number; yaw: number; /** * 设置俯仰角 * @param deg */ setPitch(deg: number): void; /** * 设置偏航角 * @param deg */ setYaw(deg: number): void; /** * 相机聚焦 * @param params */ focus(params: FocusParams): FocusReturn; /** * 相机跟随 * @param params */ follow(target: Object3D, camera: PerspectiveCamera, option?: FollowParamsOption): number; /** * 取消单个相机跟随 * @param followId */ cancelFollow(followId: number): void; /** * 取消全部相机跟随 */ cancelAllFollow(): void; }