diff --git a/src/Editor/PointPick.ts b/src/Editor/PointPick.ts index d0038da2d..b267d3d96 100644 --- a/src/Editor/PointPick.ts +++ b/src/Editor/PointPick.ts @@ -34,7 +34,8 @@ export function PointPick(ptVcs: Vector3, view: Viewer | PreViewer, selectObject }, view.Camera); raycaster.ray.origin.sub(raycaster.ray.direction.clone().multiplyScalar(1e3)); - let selectList = []; + let pickObj: Object3D; + let minDis: number; for (let obj of selectObject.children) { if (IsNotRayCaster(obj)) @@ -46,10 +47,16 @@ export function PointPick(ptVcs: Vector3, view: Viewer | PreViewer, selectObject o.raycast(raycaster, intersects) }) if (intersects.length > 0) - selectList.push(obj); + if (!minDis || minDis > intersects[0].distance) + { + pickObj = obj; + minDis = intersects[0].distance + } } - if (selectList.length > 0) - return selectList; + if (pickObj) + return [pickObj]; + + let selectList = []; let pCenter = new THREE.Vector2(ptVcs.x, ptVcs.y); let selectSize = new THREE.Vector2(10, 10);