public PlaneIntersectionTraversal(DMesh3 mesh, double z) { this.Mesh = mesh; this.Z = z; this.NextBoxF = (box, depth) => { return(Z >= box.Min.z && Z <= box.Max.z); }; this.NextTriangleF = (tID) => { AxisAlignedBox3d box = Mesh.GetTriBounds(tID); if (Z >= box.Min.z && z <= box.Max.z) { triangles.Add(tID); } }; }