2018-05-28 09:49:45 +08:00
|
|
|
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
2018-06-06 17:23:22 +08:00
|
|
|
var three_1 = require("three");
|
2018-05-28 09:49:45 +08:00
|
|
|
/**
|
|
|
|
* 点选
|
|
|
|
*
|
|
|
|
* @export
|
|
|
|
* @param {Viewer} view
|
|
|
|
* @param {number} ptx
|
|
|
|
* @param {number} pty
|
|
|
|
* @returns {(Mesh | undefined)}
|
|
|
|
*/
|
|
|
|
function PointPick(view, ptx, pty) {
|
2018-06-06 17:23:22 +08:00
|
|
|
var raycaster = new three_1.Raycaster();
|
2018-05-28 09:49:45 +08:00
|
|
|
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);
|
2018-06-06 17:23:22 +08:00
|
|
|
var minDis = Infinity;
|
|
|
|
var minObj = undefined;
|
|
|
|
view.m_Scene.children.forEach(function (obj) {
|
2018-05-28 09:49:45 +08:00
|
|
|
if (obj instanceof three_1.Mesh) {
|
2018-06-06 17:23:22 +08:00
|
|
|
var intersects = [];
|
2018-05-28 09:49:45 +08:00
|
|
|
obj.raycast(raycaster, intersects);
|
2018-06-06 17:23:22 +08:00
|
|
|
for (var _i = 0, intersects_1 = intersects; _i < intersects_1.length; _i++) {
|
|
|
|
var i = intersects_1[_i];
|
2018-05-28 09:49:45 +08:00
|
|
|
if (i.distance < minDis) {
|
|
|
|
minObj = obj;
|
|
|
|
minDis = i.distance;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return minObj;
|
|
|
|
}
|
|
|
|
exports.PointPick = PointPick;
|
|
|
|
//# sourceMappingURL=PointPick.js.map
|