public CsgNode Clone()
            {
                var node = new CsgNode();

                node.Plane    = Plane?.Clone();
                node.Front    = Front?.Clone();
                node.Back     = Back?.Clone();
                node.Polygons = Polygons.Select(p => p.Clone()).ToList();
                return(node);
            }
 public CsgPolygon(List <CsgVertex> vertices, CsgSurfaceSharedData shared = null, CsgPlane plane = null)
 {
     Vertices = vertices;
     Shared   = shared;
     Plane    = plane?.Clone() ?? CsgPlane.FromPoints(vertices);
 }