You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

40 lines
1018 B

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)
}