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);
}