|
|
|
@ -93,13 +93,18 @@ export abstract class DrawBoardTool implements Command
|
|
|
|
|
let ray: Ray;
|
|
|
|
|
//构造射线,取和射线相交的空间
|
|
|
|
|
if (spaceData.Intersection.object)
|
|
|
|
|
ray = new Ray(spaceData.Intersection.point, spaceData.Intersection.face.normal);
|
|
|
|
|
{
|
|
|
|
|
let pick = spaceData.Intersection;
|
|
|
|
|
let normal = pick.face.normal.clone().transformDirection(pick.object.matrix);
|
|
|
|
|
ray = new Ray(spaceData.Intersection.point, normal);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
ray = app.m_Viewer.GenerateRaycaster(vcs).ray;
|
|
|
|
|
|
|
|
|
|
ray.applyMatrix4(new Matrix4().getInverse(mat));
|
|
|
|
|
arrayRemoveIf(spaces, box =>
|
|
|
|
|
{
|
|
|
|
|
let b = box.clone().applyMatrix4(mat);
|
|
|
|
|
return ray.intersectBox(b, new Vector3()) === null;
|
|
|
|
|
return ray.intersectBox(box, new Vector3()) === null;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (spaces.length > 0)
|
|
|
|
|