CADViewComponent/dist/PointPick.js

39 lines
1.2 KiB
JavaScript
Raw Normal View History

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var three_1 = require("three");
/**
* 点选
*
* @export
* @param {Viewer} view
* @param {number} ptx
* @param {number} pty
* @returns {(Mesh | undefined)}
*/
function PointPick(view, ptx, pty) {
var raycaster = new three_1.Raycaster();
raycaster.setFromCamera({
x: (ptx / view._Width) * 2 - 1,
y: -(pty / view._Height) * 2 + 1 //y轴相反
}, view.m_Camera.Camera);
//https://github.com/mrdoob/three.js/issues/14128
raycaster.ray.origin.set((ptx / view._Width) * 2 - 1, -(pty / view._Height) * 2 + 1, -1).unproject(view.m_Camera.Camera);
var minDis = Infinity;
var minObj = undefined;
view.m_Scene.children.forEach(function (obj) {
if (obj instanceof three_1.Mesh) {
var intersects = [];
obj.raycast(raycaster, intersects);
for (var _i = 0, intersects_1 = intersects; _i < intersects_1.length; _i++) {
var i = intersects_1[_i];
if (i.distance < minDis) {
minObj = obj;
minDis = i.distance;
}
}
}
});
return minObj;
}
exports.PointPick = PointPick;
//# sourceMappingURL=PointPick.js.map