@realsee/five
Version:
Realsee Renderer SDK
84 lines (83 loc) • 3.71 kB
TypeScript
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<PanoramaControllerCustomInitArgs, "maxLatitude" | "minLatitude"> {
}
type XRPanoramaControllerInitArgs = BaseControllerInitArgs & XRPanoramaControllerCustomInitArgs;
declare const defaultXRPanoramaControllerInitArgs: Required<XRPanoramaControllerCustomInitArgs>;
interface PanoResourceXR {
panoId: PanoId;
effect: MovePanoEffect;
effectEasing: EasingFunction;
leftPanoPicture: PBMPanoPicture | null;
position: THREE.Vector3;
fixCameraTransform: THREE.Matrix4;
}
declare class XRPanoramaController extends PanoramaController implements Required<XRPanoramaControllerInitArgs> {
panoResources: {
[]: 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<THREE.Texture, NetWorkMeta[]>): void;
onError(error: Error): void;
};
static parseArgs(args: XRPanoramaControllerInitArgs): Required<PanoramaControllerInitArgs>;
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<Pose>, duration: number, userAction: boolean): Promise<void>;
/** 通过帧动画转动摄像头 */
updateCameraWithKeyframes(keyframes: {
progress: number;
value: Pose;
key?: string;
}[], duration: number, userAction: boolean): Promise<void>;
/** 时间迭代 */
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, };