|
|
|
@ -92,7 +92,7 @@ export class SelectBox extends SelectSetBase
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
IntersectLine(p1: THREE.Vector3, p2: THREE.Vector3, index1: number, index2: number, pts: Array<THREE.Vector3>)
|
|
|
|
|
IntersectLine(p1: THREE.Vector3, p2: THREE.Vector3, index1: number, index2: number, pts: Array<THREE.Vector3>, objMatrix: THREE.Matrix4)
|
|
|
|
|
{
|
|
|
|
|
let line = new verb.core.PolylineData([[p1.x, p1.y, 0], [p2.x, p2.y, 0]], [0, 1]);
|
|
|
|
|
|
|
|
|
@ -100,8 +100,8 @@ export class SelectBox extends SelectSetBase
|
|
|
|
|
{
|
|
|
|
|
let nearPlan = this.m_Frustom.planes[5];
|
|
|
|
|
|
|
|
|
|
let px1 = pts[index1];
|
|
|
|
|
let px2 = pts[index2];
|
|
|
|
|
let px1 = pts[index1].clone().applyMatrix4(objMatrix);
|
|
|
|
|
let px2 = pts[index2].clone().applyMatrix4(objMatrix);
|
|
|
|
|
|
|
|
|
|
let px1InFrusum = nearPlan.distanceToPoint(px1) > 0;
|
|
|
|
|
let px2InFrusum = nearPlan.distanceToPoint(px2) > 0;
|
|
|
|
@ -160,7 +160,7 @@ export class SelectBox extends SelectSetBase
|
|
|
|
|
|
|
|
|
|
if (this.ContainerScreenPoint(p1) ||
|
|
|
|
|
this.ContainerScreenPoint(p2) ||
|
|
|
|
|
this.IntersectLine(p1, p2, index, index + 1, geo.vertices))
|
|
|
|
|
this.IntersectLine(p1, p2, index, index + 1, geo.vertices, obj.matrix))
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -180,9 +180,9 @@ export class SelectBox extends SelectSetBase
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (
|
|
|
|
|
this.IntersectLine(p1, p2, face.a, face.b, geo.vertices) ||
|
|
|
|
|
this.IntersectLine(p2, p3, face.b, face.c, geo.vertices) ||
|
|
|
|
|
this.IntersectLine(p3, p1, face.c, face.a, geo.vertices))
|
|
|
|
|
this.IntersectLine(p1, p2, face.a, face.b, geo.vertices, obj.matrix) ||
|
|
|
|
|
this.IntersectLine(p2, p3, face.b, face.c, geo.vertices, obj.matrix) ||
|
|
|
|
|
this.IntersectLine(p3, p1, face.c, face.a, geo.vertices, obj.matrix))
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|