import * as THREE from "three"; import { Pano } from "../utils/pano"; import { Works } from "../work"; import { MovePanoOptions } from "../types/movePanoOptions"; import { State } from "../types/state"; import { Pose } from "../types/pose"; import { MovePanoEffect } from "../types/movePanoEffect"; import { GestureEvent } from "../utils/event"; import { BaseControllerInitArgs } from "./base"; import { PanoramaLikeController, PanoramaLikeControllerCustomInitArgs } from "./panoramaLike"; import { Motion } from "../utils/motion"; type LocationMotion = Motion<"x" | "y" | "z" | "distance">; type ModelAlphaMotion = Motion<"modelAlpha">; type PerspToOrthoMotion = Motion<"perspToOrtho">; interface ModelControllerCustomInitArgs extends PanoramaLikeControllerCustomInitArgs { } declare const defaultModelControllerCustomInitArgs: Required; type ModelControllerInitArgs = BaseControllerInitArgs & ModelControllerCustomInitArgs; declare class ModelController extends PanoramaLikeController implements Required { static parseArgs(args: ModelControllerInitArgs): Required; static initAnimationEndState(args: ModelControllerInitArgs): State; locationMotion: LocationMotion; modelAlphaMotion: ModelAlphaMotion; perspToOrthoMotion: PerspToOrthoMotion; constructor(args: ModelControllerInitArgs); updateConfiguration(args: ModelControllerCustomInitArgs): boolean; /** 析构函数 */ destroy(): void; /** 是否准备好,即不在用户操作中,并且不再动画中 */ isReady(): boolean; /** 生命周期:更新模型 */ updateWork(works: Works, state: Partial, options: { duration: number; effect: MovePanoEffect; }, userAction: boolean): boolean; /** 转动摄像头 */ updateCamera(pose: Partial, duration: number, userAction: boolean): Promise; /** 通过帧动画转动摄像头 */ updateCameraWithKeyframes(keyframes: { progress: number; value: Pose; key?: string; }[], duration: number, userAction: boolean): Promise; /** 生命周期:时间迭代 */ updateTime(time: number, deltaTime: number, ...args: any[]): void; /** 初始化动画 */ protected initAnimation(): Promise; /** 获取目标姿态 */ getTargetState(): State; /** 移动点位 */ moveToPano(pano: Pano, options: MovePanoOptions | undefined, userAction: boolean): void; /** 移动相机位置 */ moveToPosition(position: THREE.Vector3, options: MovePanoOptions | undefined, userAction: boolean): void; /** 触摸 点击屏幕 */ protected onTapGesture(event: GestureEvent): void; } export { ModelController, ModelControllerInitArgs, ModelControllerCustomInitArgs, defaultModelControllerCustomInitArgs, };