import type { CameraOptionsEx, spec } from '@galacean/effects'; export interface CameraGestureHandler { getCurrentTarget(): string; getCurrentType(): CameraGestureType; /** * 通过按键事件对相机进行平移 * @param event - 键盘事件信息 * @returns 当前的相机参数 */ onKeyEvent(event: CameraKeyEvent): CameraOptionsEx; /** * 在 XY 方向上平移相机开始函数,在鼠标按下时调用 * @param x - 鼠标在 x 坐标上的值 * @param y - 鼠标在 y 坐标上的值 * @param width - 当前画布的宽度 * @param height - 当前画布的高度 * @param cameraID - 要控制的相机 item id * @returns 当前的相机参数 */ onXYMoveBegin(x: number, y: number, width: number, height: number, cameraID: string): CameraOptionsEx; /** * 在 XY 方向上平移相机开始函数,在鼠标按下拖拽时调用 * @param x - 鼠标在 x 坐标上的值 * @param y - 鼠标在 y 坐标上的值 * @param speed - 移动速度,默认是 0.015 * @returns 更新后的相机参数 */ onXYMoving(x: number, y: number, speed?: number): CameraOptionsEx; /** * 结束在 XY 方向上平移相机 */ onXYMoveEnd(): void; /** * 在 Z 方向上平移相机开始函数,类似缩放 3D 模型,在鼠标按下时调用 * @param x - 鼠标在 x 坐标上的值 * @param y - 鼠标在 y 坐标上的值 * @param width - 当前画布的宽度 * @param height - 当前画布的高度 * @param cameraID - 要控制的相机 item id * @returns 当前的相机参数 */ onZMoveBegin(x: number, y: number, width: number, height: number, cameraID: string): CameraOptionsEx; /** * 在 Z 方向上平移相机开始函数,类似缩放 3D 模型,在鼠标按下拖拽时调用 * @param x - 鼠标在 x 坐标上的值 * @param y - 鼠标在 y 坐标上的值 * @param speed - 移动速度,默认是 0.015 * @returns 更新后的相机参数 */ onZMoving(x: number, y: number, speed?: number): CameraOptionsEx; /** * 结束在 Z 方向上平移相机 */ onZMoveEnd(): void; /** * 相机的自旋转,就是镜头漫游的效果,在鼠标按下时调用 * @param x - 鼠标在 x 坐标上的值 * @param y - 鼠标在 y 坐标上的值 * @param width - 当前画布的宽度 * @param height - 当前画布的高度 * @param cameraID - 要控制的相机 item id * @returns 当前的相机参数 */ onRotateBegin(x: number, y: number, width: number, height: number, cameraID: string): CameraOptionsEx; /** * 相机的自旋转,在鼠标按下拖拽时调用 * @param x - 鼠标在 x坐标上的值 * @param y - 鼠标在y坐标上的值 * @param speed - 移动速度,默认是 1 * @returns 更新后的相机参数 */ onRotating(x: number, y: number, speed?: number): CameraOptionsEx; /** * 相机的自旋转 */ onRotateEnd(): void; /** * 相机绕某个点旋转,就是拖拽模型的效果,在鼠标按下时调用 * @param x - 鼠标在 x 坐标上的值 * @param y - 鼠标在 y 坐标上的值 * @param width - 当前画布的宽度 * @param height - 当前画布的高度 * @param cameraID - 要控制的相机 item id * @returns 当前的相机参数 */ onRotatePointBegin(x: number, y: number, width: number, height: number, point: spec.vec3, cameraID: string): CameraOptionsEx; /** * 相机绕某个点旋转,在鼠标按下拖拽时调用 * @param x - 鼠标在 x 坐标上的值 * @param y - 鼠标在 y 坐标上的值 * @param speed - 移动速度,默认是 1 * @returns 更新后的相机参数 */ onRotatingPoint(x: number, y: number, speed?: number): CameraOptionsEx; /** * 相机绕某个点旋转 */ onRotatePointEnd(): void; /** * 相机移动到指定点 * @param cameraID -相机 ID * @param position - 指定位置 */ moveTo(cameraID: string, position: spec.vec3): void; /** * 相机旋转到指定方向 * @param cameraID - 相机ID * @param quat - 指定旋转 */ rotateTo(cameraID: string, quat: spec.vec4): void; /** * 相机对中心点进行聚焦,先从当前位置 LookAt 过去,然后移到距离中心点给定距离(默认是 5)的位置 * @param cameraID - 相机 ID * @param point - 聚焦的中心点 * @param distance - 聚焦的距离,默认是 5 */ onFocusPoint(cameraID: string, point: spec.vec3, distance?: number): void; } export declare enum CameraGestureType { none = 0, translate = 1, rotate_focus = 2, rotate_self = 3, scale = 4 } export interface CameraGestureHandlerParams { type: CameraGestureType; mouseEvent: boolean; clientX: number; clientY: number; clientWidth: number; clientHeight: number; target: string; focusPoint?: spec.vec3; speed?: number; } export interface CameraKeyEvent { cameraID: string; xAxis?: -1 | 1; yAxis?: -1 | 1; zAxis?: -1 | 1; speed?: number; }