@realsee/five
Version:
Realsee Renderer SDK
88 lines (87 loc) • 3.78 kB
TypeScript
import { BaseController, BaseControllerInitArgs } from "./base";
import { IntersectMeshInterface } from "../types/intersectMeshInterface";
import { State } from "../types/state";
import { GestureEvent } from "../utils/event";
import { MovePanoOptions } from "../types/movePanoOptions";
interface PanoramaLikeControllerCustomInitArgs {
/** 默认相机俯仰角 */
defaultLatitude?: number;
/** 最大相机俯仰角 */
maxLatitude?: number | ((fov: number) => number);
/** 最小相机俯仰角 */
minLatitude?: number | ((fov: number) => number);
/** 默认相机可视角度(垂直),可作为 `zoom` */
defaultFov?: number;
/** 最大默认相机可视角度(垂直) */
maxFov?: number;
/** 最小默认相机可视角度(垂直) */
minFov?: number;
/**
* 点位间移动动画速度 单位 m/s
* @description
* 这边设置的是速度,整体耗时会通过距离除速度计算得到
*/
moveSpeed?: number;
/** 鼠标焦点环自定义创建器 */
intersectMeshCreator?: () => IntersectMeshInterface;
/** 航拍点最小高度 */
aerialObserverMinHeight?: number;
}
declare const defaultPanoramaLikeControllerCustomInitArgs: Required<PanoramaLikeControllerCustomInitArgs>;
type PanoramaLikeControllerInitArgs = BaseControllerInitArgs & PanoramaLikeControllerCustomInitArgs;
declare class PanoramaLikeController extends BaseController implements Required<PanoramaLikeControllerInitArgs> {
maxLatitude: number | ((fov: number) => number);
minLatitude: number | ((fov: number) => number);
maxFov: number;
minFov: number;
defaultLatitude: number;
defaultFov: number;
moveSpeed: number;
intersectMeshCreator: () => IntersectMeshInterface;
aerialObserverMinHeight: number;
protected intersectMesh: IntersectMeshInterface;
protected pinchState?: {
x: number;
y: number;
fov: number;
};
static parseArgs(args: PanoramaLikeControllerInitArgs): Required<PanoramaLikeControllerInitArgs>;
static initAnimationEndState(args: PanoramaLikeControllerInitArgs): State;
constructor(args: PanoramaLikeControllerInitArgs);
/** 动态更新配置 */
updateConfiguration(args: PanoramaLikeControllerCustomInitArgs): boolean;
/** 析构函数 */
destroy(): void;
/** 是否准备好,即不在用户操作中,并且不再动画中 */
isReady(): boolean;
/** 计算动画时间 */
protected calculateMovingDuration(duration: MovePanoOptions["duration"], distance: number): number;
/** 隐藏焦点环 */
protected hideIntersectMesh(): void;
/** 计算 屏幕像素 offset 与 转动间的关系 */
protected coordinatesForOffset(offset: {
x: number;
y: number;
}): {
longitude: number;
latitude: number;
};
/** 相机拉风箱 */
protected cameraBounce(): void;
/** 惯性转动镜头 */
protected requestMomentumMovement(event: GestureEvent, isFirst: boolean, velocity: {
longitude: number;
latitude: number;
}, duration: number): void;
/** 触摸 Pan 事件,相机转动 */
protected onPanGesture(event: GestureEvent): void;
/** 触摸 Pinch 事件, 相机缩放 */
protected onPinchGesture(event: GestureEvent): void;
/** 鼠标滚轮事件 相机缩放 */
protected onMouseWheel(event: GestureEvent): void;
/** 鼠标移动事件 展示交点环 */
protected onMouseMove(event: GestureEvent): void;
/** 触摸 双点屏幕 */
protected onDblTapGesture(event: GestureEvent): void;
}
export { PanoramaLikeController, PanoramaLikeControllerInitArgs, PanoramaLikeControllerCustomInitArgs, defaultPanoramaLikeControllerCustomInitArgs, };