private static bool MakePointInTriangle(ref Int3 result, NavMeshNode node, int minX, int maxX, int minZ, int maxZ, Int3 offset) { Int3 num; Int3 num2; Int3 num3; node.GetPoints(out num, out num2, out num3); long num4 = num2.x - num.x; long num5 = num3.x - num2.x; long num6 = num.x - num3.x; long num7 = num2.z - num.z; long num8 = num3.z - num2.z; long num9 = num.z - num3.z; for (int i = minX; i <= maxX; i++) { for (int j = minZ; j <= maxZ; j++) { int num12 = i + offset.x; int num13 = j + offset.z; if (((((num4 * (num13 - num.z)) - ((num12 - num.x) * num7)) <= 0L) && (((num5 * (num13 - num2.z)) - ((num12 - num2.x) * num8)) <= 0L)) && (((num6 * (num13 - num3.z)) - ((num12 - num3.x) * num9)) <= 0L)) { result.x = num12; result.z = num13; return(true); } } } return(false); }
private static float CalculateY(Vector3 pf, NavMeshNode node) { Vector3 vector; Vector3 vector2; Vector3 vector3; node.GetPoints(out vector, out vector2, out vector3); float num = ((vector2.z - vector3.z) * (vector.x - vector3.x)) + ((vector3.x - vector2.x) * (vector.z - vector3.z)); float num2 = 1f / num; float num3 = ((vector2.z - vector3.z) * (pf.x - vector3.x)) + ((vector3.x - vector2.x) * (pf.z - vector3.z)); num3 *= num2; float num4 = ((vector3.z - vector.z) * (pf.x - vector3.x)) + ((vector.x - vector3.x) * (pf.z - vector3.z)); num4 *= num2; float num5 = (1f - num3) - num4; return(((num3 * vector.y) + (num4 * vector2.y)) + (num5 * vector3.y)); }