private static bool CheckNearestNodeIntersection(TriangleMeshNode node, VInt3 srcLoc, VInt3 destLoc, ref int edge) { if (!node.ContainsPoint(destLoc)) { int num = 0; VInt3[] staticVerts = PathfindingUtility._staticVerts; node.GetPoints(ref staticVerts[0], ref staticVerts[1], ref staticVerts[2]); float num2 = 3.40282347E+38f; int num3 = -1; Vector3 vector = (Vector3)srcLoc; Vector3 vector2 = (Vector3)destLoc; for (int i = 0; i < 3; i++) { if (Polygon.Intersects(staticVerts[i], staticVerts[(i + 1) % 3], srcLoc, destLoc)) { num++; bool flag; Vector3 vector3 = Polygon.IntersectionPoint((Vector3)staticVerts[i], (Vector3)staticVerts[(i + 1) % 3], vector, vector2, ref flag); DebugHelper.Assert(flag); float num4 = MMGame_Math.XZSqrMagnitude(vector, ref vector3); if (num4 < num2) { num2 = num4; num3 = i; } } } if (num != 2 || num3 == -1) { return(false); } edge = num3; } return(true); }