mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-22 14:13:57 -06:00
Get rid of unnecessary double calling of TriangleSelector::reset() in some cases when TriangleSelector::deserialize() is called.
This commit is contained in:
parent
2569da95d5
commit
38866b65b0
6 changed files with 14 additions and 8 deletions
|
@ -1913,14 +1913,16 @@ arrangement::ArrangePolygon ModelInstance::get_arrange_polygon() const
|
||||||
indexed_triangle_set FacetsAnnotation::get_facets(const ModelVolume& mv, EnforcerBlockerType type) const
|
indexed_triangle_set FacetsAnnotation::get_facets(const ModelVolume& mv, EnforcerBlockerType type) const
|
||||||
{
|
{
|
||||||
TriangleSelector selector(mv.mesh());
|
TriangleSelector selector(mv.mesh());
|
||||||
selector.deserialize(m_data);
|
// Reset of TriangleSelector is done inside TriangleSelector's constructor, so we don't need it to perform it again in deserialize().
|
||||||
|
selector.deserialize(m_data, false);
|
||||||
return selector.get_facets(type);
|
return selector.get_facets(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
indexed_triangle_set FacetsAnnotation::get_facets_strict(const ModelVolume& mv, EnforcerBlockerType type) const
|
indexed_triangle_set FacetsAnnotation::get_facets_strict(const ModelVolume& mv, EnforcerBlockerType type) const
|
||||||
{
|
{
|
||||||
TriangleSelector selector(mv.mesh());
|
TriangleSelector selector(mv.mesh());
|
||||||
selector.deserialize(m_data);
|
// Reset of TriangleSelector is done inside TriangleSelector's constructor, so we don't need it to perform it again in deserialize().
|
||||||
|
selector.deserialize(m_data, false);
|
||||||
return selector.get_facets_strict(type);
|
return selector.get_facets_strict(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1393,9 +1393,10 @@ std::pair<std::vector<std::pair<int, int>>, std::vector<bool>> TriangleSelector:
|
||||||
return out.data;
|
return out.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TriangleSelector::deserialize(const std::pair<std::vector<std::pair<int, int>>, std::vector<bool>> &data)
|
void TriangleSelector::deserialize(const std::pair<std::vector<std::pair<int, int>>, std::vector<bool>> &data, bool needs_reset)
|
||||||
{
|
{
|
||||||
reset(); // dump any current state
|
if (needs_reset)
|
||||||
|
reset(); // dump any current state
|
||||||
|
|
||||||
// Reserve number of triangles as if each triangle was saved with 4 bits.
|
// Reserve number of triangles as if each triangle was saved with 4 bits.
|
||||||
// With MMU painting this estimate may be somehow low, but better than nothing.
|
// With MMU painting this estimate may be somehow low, but better than nothing.
|
||||||
|
|
|
@ -81,7 +81,7 @@ public:
|
||||||
std::pair<std::vector<std::pair<int, int>>, std::vector<bool>> serialize() const;
|
std::pair<std::vector<std::pair<int, int>>, std::vector<bool>> serialize() const;
|
||||||
|
|
||||||
// Load serialized data. Assumes that correct mesh is loaded.
|
// Load serialized data. Assumes that correct mesh is loaded.
|
||||||
void deserialize(const std::pair<std::vector<std::pair<int, int>>, std::vector<bool>> &data);
|
void deserialize(const std::pair<std::vector<std::pair<int, int>>, std::vector<bool>> &data, bool needs_reset = true);
|
||||||
|
|
||||||
// For all triangles, remove the flag indicating that the triangle was selected by seed fill.
|
// For all triangles, remove the flag indicating that the triangle was selected by seed fill.
|
||||||
void seed_fill_unselect_all_triangles();
|
void seed_fill_unselect_all_triangles();
|
||||||
|
|
|
@ -346,7 +346,8 @@ void GLGizmoFdmSupports::update_from_model_object()
|
||||||
const TriangleMesh* mesh = &mv->mesh();
|
const TriangleMesh* mesh = &mv->mesh();
|
||||||
|
|
||||||
m_triangle_selectors.emplace_back(std::make_unique<TriangleSelectorGUI>(*mesh));
|
m_triangle_selectors.emplace_back(std::make_unique<TriangleSelectorGUI>(*mesh));
|
||||||
m_triangle_selectors.back()->deserialize(mv->supported_facets.get_data());
|
// Reset of TriangleSelector is done inside TriangleSelectorGUI's constructor, so we don't need it to perform it again in deserialize().
|
||||||
|
m_triangle_selectors.back()->deserialize(mv->supported_facets.get_data(), false);
|
||||||
m_triangle_selectors.back()->request_update_render_data();
|
m_triangle_selectors.back()->request_update_render_data();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -544,7 +544,8 @@ void GLGizmoMmuSegmentation::init_model_triangle_selectors()
|
||||||
|
|
||||||
int extruder_idx = (mv->extruder_id() > 0) ? mv->extruder_id() - 1 : 0;
|
int extruder_idx = (mv->extruder_id() > 0) ? mv->extruder_id() - 1 : 0;
|
||||||
m_triangle_selectors.emplace_back(std::make_unique<TriangleSelectorMmGui>(*mesh, m_modified_extruders_colors, m_original_extruders_colors[size_t(extruder_idx)]));
|
m_triangle_selectors.emplace_back(std::make_unique<TriangleSelectorMmGui>(*mesh, m_modified_extruders_colors, m_original_extruders_colors[size_t(extruder_idx)]));
|
||||||
m_triangle_selectors.back()->deserialize(mv->mmu_segmentation_facets.get_data());
|
// Reset of TriangleSelector is done inside TriangleSelectorMmGUI's constructor, so we don't need it to perform it again in deserialize().
|
||||||
|
m_triangle_selectors.back()->deserialize(mv->mmu_segmentation_facets.get_data(), false);
|
||||||
m_triangle_selectors.back()->request_update_render_data();
|
m_triangle_selectors.back()->request_update_render_data();
|
||||||
}
|
}
|
||||||
m_original_volumes_extruder_idxs = get_extruder_id_for_volumes(*mo);
|
m_original_volumes_extruder_idxs = get_extruder_id_for_volumes(*mo);
|
||||||
|
|
|
@ -256,7 +256,8 @@ void GLGizmoSeam::update_from_model_object()
|
||||||
const TriangleMesh* mesh = &mv->mesh();
|
const TriangleMesh* mesh = &mv->mesh();
|
||||||
|
|
||||||
m_triangle_selectors.emplace_back(std::make_unique<TriangleSelectorGUI>(*mesh));
|
m_triangle_selectors.emplace_back(std::make_unique<TriangleSelectorGUI>(*mesh));
|
||||||
m_triangle_selectors.back()->deserialize(mv->seam_facets.get_data());
|
// Reset of TriangleSelector is done inside TriangleSelectorGUI's constructor, so we don't need it to perform it again in deserialize().
|
||||||
|
m_triangle_selectors.back()->deserialize(mv->seam_facets.get_data(), false);
|
||||||
m_triangle_selectors.back()->request_update_render_data();
|
m_triangle_selectors.back()->request_update_render_data();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue