Rearrange code a little bit to make it more reusable
This commit is contained in:
@@ -1980,6 +1980,41 @@ void ModelVolume::reset_extra_facets()
|
||||
this->fuzzy_skin_facets.reset();
|
||||
}
|
||||
|
||||
std::optional<TriangleSelector::SavedPainting> ModelVolume::save_painting() const
|
||||
{
|
||||
if (is_any_painted() && is_model_part() && !mesh().empty()) {
|
||||
TriangleSelector::SavedPainting sp;
|
||||
sp.mesh = mesh();
|
||||
sp.supported = supported_facets.get_data();
|
||||
sp.seam = seam_facets.get_data();
|
||||
sp.mmu = mmu_segmentation_facets.get_data();
|
||||
sp.fuzzy = fuzzy_skin_facets.get_data();
|
||||
return sp;
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
void ModelVolume::restore_painting(const std::optional<TriangleSelector::SavedPainting>& saved)
|
||||
{
|
||||
if (!saved) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto remap_one = [&](const TriangleSelector::TriangleSplittingData& src_data,
|
||||
FacetsAnnotation& target_facets) {
|
||||
if (src_data.bitstream.empty())
|
||||
return;
|
||||
auto result = TriangleSelector::remap_painting(saved->mesh.its, src_data, mesh().its, Geometry::translation_transform(mesh().get_init_shift()));
|
||||
if (!result.bitstream.empty())
|
||||
target_facets.set_data(result);
|
||||
};
|
||||
remap_one(saved->supported, supported_facets);
|
||||
remap_one(saved->seam, seam_facets);
|
||||
remap_one(saved->mmu, mmu_segmentation_facets);
|
||||
remap_one(saved->fuzzy, fuzzy_skin_facets);
|
||||
}
|
||||
|
||||
static void invalidate_translations(ModelObject* object, const ModelInstance* src_instance)
|
||||
{
|
||||
if (!object->origin_translation.isApprox(Vec3d::Zero()) && src_instance->get_offset().isApprox(Vec3d::Zero())) {
|
||||
|
||||
Reference in New Issue
Block a user