import type Viewport from '@/designer/Viewport.ts' import type { ITool } from '@/designer/model2DEditor/tools/ITool.ts' let pmFn /** * 鼠标移动时,将鼠标位置的坐标转换为设计图上的坐标,并设置到 designer.mousePos 属性中 */ export default class MouseMoveInspect implements ITool { viewport: Viewport canvas: HTMLCanvasElement constructor() { } init(viewport: Viewport) { this.viewport = viewport this.canvas = this.viewport.renderer.domElement as HTMLCanvasElement pmFn = this.mouseMove.bind(this) this.canvas.addEventListener('pointermove', pmFn) } destory() { this.canvas.removeEventListener('pointermove', pmFn) pmFn = undefined } mouseMove = _.throttle(function(this: MouseMoveInspect, event: MouseEvent) { // 当前鼠标所在的点 const point = this.viewport.getClosestIntersection(event) if (!point) { return } this.viewport.state.mouse.x = point.x this.viewport.state.mouse.z = point.z }, 1) }