public Csgjs Union(Csgjs csg) { if (Polygons.Count == 0) { return(csg.Clone()); } if (csg.Polygons.Count == 0) { return(Clone()); } var a = new CsgNode(Clone().Polygons); var b = new CsgNode(csg.Clone().Polygons); a.ClipTo(b); b.ClipTo(a); b.Invert(); b.ClipTo(a); b.Invert(); a.Build(b.AllPolygons()); return(FromPolygons(a.AllPolygons())); }
public void ClipTo(CsgNode bsp) { Polygons = bsp.ClipPolygons(Polygons); Front?.ClipTo(bsp); Back?.ClipTo(bsp); }