import * as THREE from "three"; import { type EasingFunction } from "../utils/easing"; import { State } from "../types/state"; import { Pose } from "../types/pose"; import { BaseControllerInitArgs } from "./base"; import { PanoramaController, PanoramaControllerCustomInitArgs, PanoramaControllerInitArgs, LocationMotion } from "./panorama"; import { Pano, PanoId } from '../utils/pano'; import { MovePanoEffect } from '../types/movePanoEffect'; import { PBMPanoPicture } from "../model"; import { MovePanoOptions } from "../types/movePanoOptions"; import { NetworkResponse, NetWorkMeta } from "../utils/ajax"; interface XRPanoramaControllerCustomInitArgs extends Omit { } type XRPanoramaControllerInitArgs = BaseControllerInitArgs & XRPanoramaControllerCustomInitArgs; declare const defaultXRPanoramaControllerInitArgs: Required; interface PanoResourceXR { panoId: PanoId; effect: MovePanoEffect; effectEasing: EasingFunction; leftPanoPicture: PBMPanoPicture | null; position: THREE.Vector3; fixCameraTransform: THREE.Matrix4; } declare class XRPanoramaController extends PanoramaController implements Required { panoResources: { [key: string]: PanoResourceXR; }; /** XR管理器*/ private xrManager; /** 控制器选取方向线*/ private xrControllerRay; private gazeRay; /** 控制器选取方向模型*/ private pointerLines; /** 视差相机矩阵*/ private parallaxCameraMatrixs; /** xr手柄事件监测*/ private xrHandleState; private xrHandState; private controllerWrappers; protected pendingPanoTask?: { panoId: PanoId; hash: string; onLoad(colorLeftResponse: NetworkResponse): void; onError(error: Error): void; }; static parseArgs(args: XRPanoramaControllerInitArgs): Required; static initAnimationEndState(args: XRPanoramaControllerInitArgs): State; constructor(args: XRPanoramaControllerInitArgs); updateConfiguration(args: XRPanoramaControllerCustomInitArgs): boolean; /** 移动点位 */ moveToPano(pano: Pano, options: MovePanoOptions, userAction: boolean): void; /** 移动相机 */ protected doMoveToPano(pano: Pano, panoResource: PanoResourceXR, options?: MovePanoOptions): void; /** 触摸 点击屏幕 */ checkSelectedPano(raycaster: THREE.Raycaster): Pano | null; /** 析构函数 */ destroy(): void; /** 是否准备好,即不在用户操作中,并且不再动画中 */ isReady(): 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; /** 生命周期 渲染 */ render(): boolean; protected onPanGesture(): void; protected onTapGesture(): void; protected onPinchGesture(): void; protected onMouseMove(): void; protected onMouseOut(): void; protected panoResourceFromLocationMotionKeyframe(keyframe: LocationMotion["keyframes"][number]): PanoResourceXR; private updateControllerHelper; private emitHandleEvent; private initHandEvent; } export { XRPanoramaController, XRPanoramaControllerInitArgs, XRPanoramaControllerCustomInitArgs, defaultXRPanoramaControllerInitArgs, };