Browse Source

InstancePointManager / LineSegmentManager 重构

master
修宁 6 months ago
parent
commit
07003933da
  1. 12
      src/core/controls/DragControl.ts
  2. 17
      src/core/manager/EntityManager.ts

12
src/core/controls/DragControl.ts

@ -164,11 +164,17 @@ export default class DragControl implements IControls {
* *
*/ */
private getMousePosition(clientX: number, clientY: number): THREE.Vector2 { private getMousePosition(clientX: number, clientY: number): THREE.Vector2 {
const rect = this.domElement.getBoundingClientRect() // const rect = this.domElement.getBoundingClientRect()
// return new THREE.Vector2(
// ((clientX - rect.left) / rect.width) * 2 - 1,
// ((clientY - rect.top) / rect.height) * -2 + 1
// )
return new THREE.Vector2( return new THREE.Vector2(
((clientX - rect.left) / rect.width) * 2 - 1, clientX / this.viewport.renderer.domElement.offsetWidth * 2 - 1,
((clientY - rect.top) / rect.height) * -2 + 1 (clientY / this.viewport.renderer.domElement.offsetHeight * -2 + 1)
) )
// _point.x = e.offsetX / this.renderer.domElement.offsetWidth
// _point.y = e.offsetY / this.renderer.domElement.offsetHeight
} }
/** /**

17
src/core/manager/EntityManager.ts

@ -462,11 +462,18 @@ export default class EntityManager {
getObjectByCanvasMouse(event: MouseEvent): Object3DLike[] { getObjectByCanvasMouse(event: MouseEvent): Object3DLike[] {
const _domElement = this.viewport.renderer.domElement const _domElement = this.viewport.renderer.domElement
const rect = _domElement.getBoundingClientRect() // const rect = _domElement.getBoundingClientRect()
const _pointer = new Vector2() // const _pointer = new Vector2()
_pointer.x = (event.clientX - rect.left) / rect.width * 2 - 1 // _pointer.x = (event.clientX - rect.left) / rect.width * 2 - 1
_pointer.y = -(event.clientY - rect.top) / rect.height * 2 + 1 // _pointer.y = -(event.clientY - rect.top) / rect.height * 2 + 1
this.viewport.raycaster.setFromCamera(_pointer, this.viewport.camera)
const _point = new THREE.Vector2()
_point.x = event.offsetX / _domElement.offsetWidth
_point.y = event.offsetY / _domElement.offsetHeight
this.viewport.raycaster.setFromCamera(_point, this.viewport.camera)
const _intersections = this.viewport.raycaster.intersectObjects(this._selectableObjects, true) const _intersections = this.viewport.raycaster.intersectObjects(this._selectableObjects, true)
if (!_intersections || _intersections.length === 0) { if (!_intersections || _intersections.length === 0) {

Loading…
Cancel
Save