public static IntersectionPoint ( Vector2 start1, Vector2 end1, Vector2 start2, Vector2 end2 ) : Vector2 | ||
start1 | Vector2 | |
end1 | Vector2 | |
start2 | Vector2 | |
end2 | Vector2 | |
return | Vector2 |
private TriangleMeshNode checkObjIntersects(ref int edge, Int3 start, Int3 end, int gridX, int gridY) { List <object> objs = this.rasterizer.GetObjs(gridX, gridY); if (objs == null || objs.Count == 0) { return(null); } Int3[] array = new Int3[3]; TriangleMeshNode triangleMeshNode = null; int num = -1; long num2 = 9223372036854775807L; for (int i = 0; i < objs.Count; i++) { TriangleMeshNode triangleMeshNode2 = objs[i] as TriangleMeshNode; triangleMeshNode2.GetPoints(out array[0], out array[1], out array[2]); for (int j = 0; j < 3; j++) { int num3 = j; int num4 = (j + 1) % 3; if (Polygon.Intersects(array[num3], array[num4], start, end)) { bool flag; Int3 vInt = Polygon.IntersectionPoint(ref array[num3], ref array[num4], ref start, ref end, out flag); long num5 = start.XZSqrMagnitude(ref vInt); if (num5 < num2) { num2 = num5; triangleMeshNode = triangleMeshNode2; num = j; } } } } if (num != -1 && triangleMeshNode != null) { edge = num; return(triangleMeshNode); } return(null); }
private TriangleMeshNode checkObjIntersects(ref int edge, VInt3 start, VInt3 end, int gridX, int gridY) { List <object> objs = this.rasterizer.GetObjs(gridX, gridY); if ((objs != null) && (objs.Count != 0)) { VInt3[] numArray = new VInt3[3]; TriangleMeshNode node = null; int num = -1; long num2 = 0x7fffffffffffffffL; for (int i = 0; i < objs.Count; i++) { TriangleMeshNode node2 = objs[i] as TriangleMeshNode; node2.GetPoints(out numArray[0], out numArray[1], out numArray[2]); for (int j = 0; j < 3; j++) { int index = j; int num6 = (j + 1) % 3; if (Polygon.Intersects(numArray[index], numArray[num6], start, end)) { bool flag; VInt3 rhs = Polygon.IntersectionPoint(ref numArray[index], ref numArray[num6], ref start, ref end, out flag); DebugHelper.Assert(flag); long num8 = start.XZSqrMagnitude(ref rhs); if (num8 < num2) { num2 = num8; node = node2; num = j; } } } } if ((num != -1) && (node != null)) { edge = num; return(node); } } return(null); }
public static Vector2 IntersectionPoint(Vector2 start1, Vector2 end1, Vector2 start2, Vector2 end2) { bool flag; return(Polygon.IntersectionPoint(start1, end1, start2, end2, out flag)); }