private static bool Intersect(Rect chunkRect, ref Vector3 vertex0, ref Vector3 vertex1, ref Vector3 vertex2) { if (chunkRect.Contains(vertex0.X, vertex0.Y)) return true; if (chunkRect.Contains(vertex1.X, vertex1.Y)) return true; if (chunkRect.Contains(vertex2.X, vertex2.Y)) return true; // Check if any of the Chunk's corners are contained in the triangle if (Intersection.PointInTriangle2DXY(chunkRect.TopLeft, vertex0, vertex1, vertex2)) return true; if (Intersection.PointInTriangle2DXY(chunkRect.TopRight, vertex0, vertex1, vertex2)) return true; if (Intersection.PointInTriangle2DXY(chunkRect.BottomLeft, vertex0, vertex1, vertex2)) return true; if (Intersection.PointInTriangle2DXY(chunkRect.BottomRight, vertex0, vertex1, vertex2)) return true; // Check if any of the triangle's line segments intersect the chunk's bounds if (Intersection.IntersectSegmentRectangle2DXY(chunkRect, vertex0, vertex1)) return true; if (Intersection.IntersectSegmentRectangle2DXY(chunkRect, vertex0, vertex2)) return true; if (Intersection.IntersectSegmentRectangle2DXY(chunkRect, vertex1, vertex2)) return true; return false; }