UNPKG

@realsee/dnalogel

Version:
61 lines (60 loc) 2.21 kB
import { BaseController } from '../Base/BaseController'; import * as THREE from 'three'; import type { MoveHelperAbstract } from '../Helper'; type UseFaceNormalInterface = { enable?: boolean; /** * @description: 期望对齐的方向,默认为Y轴对齐Face的法向向量,即 `{ x: 0, y: 1, z: 0 }` */ alignmentVector?: { x?: number; y?: number; z?: number; }; /** * @description: 修正后的face */ fixedFaceNormal?: (face: THREE.Vector3) => THREE.Vector3; } | boolean; export declare class MoveController<T extends MoveHelperAbstract = MoveHelperAbstract> extends BaseController<T> { get moveByMouseEnable(): boolean; protected name: string; private startInfo?; /** 拖拽时用于显示方向参考的直线(与 ScaleController 一致:Line + LineBasicMaterial) */ private dragGuideLine?; private solidGuide; private _moveByMouse; private mouseInfo?; private mousedownEventListenerDisposer; constructor(...params: ConstructorParameters<typeof BaseController<T>>); dispose(): void; /** * @description: 跟随鼠标移动 * @param {boolean} params.useFaceNormal 是否使用面的法线,默认为false * @param {boolean} params.useFaceNormal.enable 是否使用面的法线,默认为true * @param {Vector3} params.useFaceNormal.alignmentVector 期望对齐的方向,默认为Y轴对齐Face的法向向量,即 `{ x: 0, y: 1, z: 0 }` * @param {Function} params.useFaceNormal.fixedFaceNormal 修正后的face normal */ moveByMouse(params?: { useFaceNormal: UseFaceNormalInterface; }): void; /** * @description: 禁用跟随鼠标移动 */ disableMoveByMouse(): void; onIntersectionOnModelUpdate(intersection: THREE.Intersection): void; private handleMouseDown; private handleMouseUp; /** * @description: 拖动开始,找出拖的Direction */ private dragStart; private dragging; /** * 更新直线缩放,保持视觉上的恒定大小(与 ScaleController 保持一致) */ private updateDragGuideLineScale; private move; private dragEnd; } export {};