Hand the island's walls over instead of copying them

append(const ExtrusionEntity &) clones; the collection each island
produced was deep-copied into the layer's loops and then thrown away.
The no-overlap areas are moved as well.
This commit is contained in:
ExPikaPaka
2026-09-30 08:49:34 +02:00
parent 59a94838cf
commit ed1f6480c8
+3 -2
View File
@@ -2916,10 +2916,11 @@ void PerimeterGenerator::process_arachne()
}); });
for (ArachneSurfaceResult &result : results) { for (ArachneSurfaceResult &result : results) {
if (result.has_loops) if (result.has_loops)
this->loops->append(result.loops); // Moved, not copied: append(const ExtrusionEntity &) clones the whole wall tree of the island.
this->loops->append(std::move(result.loops));
this->fill_surfaces->append(result.infill, stInternal); this->fill_surfaces->append(result.infill, stInternal);
apply_extra_perimeters(result.infill); apply_extra_perimeters(result.infill);
this->fill_no_overlap->insert(this->fill_no_overlap->end(), result.no_overlap.begin(), result.no_overlap.end()); append(*this->fill_no_overlap, std::move(result.no_overlap));
} }
} }