Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Matena <lukasmatena@seznam.cz>2020-02-06 16:46:02 +0300
committerLukas Matena <lukasmatena@seznam.cz>2020-02-06 16:46:02 +0300
commit3c23917e9e4fbc6a088b1f73d530c568019cd079 (patch)
tree20af38b0809f8fd3203137df9102a00c86dae1df /src/slic3r/GUI/Gizmos
parentf902fc3445bd84957253de803884fbb99fc36383 (diff)
SLA gizmos: make sure that the clipping plane is properly reset to zero when the shown meshes are exchanged
Diffstat (limited to 'src/slic3r/GUI/Gizmos')
-rw-r--r--src/slic3r/GUI/Gizmos/GLGizmoHollow.hpp2
-rw-r--r--src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp2
-rw-r--r--src/slic3r/GUI/Gizmos/GLGizmosManager.cpp17
3 files changed, 16 insertions, 5 deletions
diff --git a/src/slic3r/GUI/Gizmos/GLGizmoHollow.hpp b/src/slic3r/GUI/Gizmos/GLGizmoHollow.hpp
index 6264304b7..c0e518e4d 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmoHollow.hpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmoHollow.hpp
@@ -43,6 +43,7 @@ public:
void update_hollowed_mesh(std::unique_ptr<TriangleMesh> &&mesh);
bool is_selection_rectangle_dragging() const { return m_selection_rectangle.is_dragging(); }
+ void update_clipping_plane(bool keep_normal = false) const;
private:
bool on_init() override;
@@ -96,7 +97,6 @@ private:
void select_point(int i);
void unselect_point(int i);
void reload_cache();
- void update_clipping_plane(bool keep_normal = false) const;
protected:
void on_set_state() override;
diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp
index 7ded6aadb..a2da5e506 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp
@@ -80,6 +80,7 @@ public:
bool is_selection_rectangle_dragging() const { return m_selection_rectangle.is_dragging(); }
bool has_backend_supports() const;
void reslice_SLA_supports(bool postpone_error_messages = false) const;
+ void update_clipping_plane(bool keep_normal = false) const;
private:
bool on_init() override;
@@ -139,7 +140,6 @@ private:
void switch_to_editing_mode();
void disable_editing_mode();
void reset_clipping_plane_normal() const;
- void update_clipping_plane(bool keep_normal = false) const;
protected:
void on_set_state() override;
diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp
index be0f48007..613e15192 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp
@@ -348,11 +348,22 @@ void GLGizmosManager::set_sla_support_data(ModelObject* model_object)
if (!m_enabled || m_gizmos.empty())
return;
+ auto* gizmo_supports = dynamic_cast<GLGizmoSlaSupports*>(m_gizmos[SlaSupports].get());
+ auto* gizmo_hollow = dynamic_cast<GLGizmoHollow*>(m_gizmos[Hollow].get());
+
+
// Update common data for hollowing and sla support gizmos.
- m_common_gizmos_data->update_from_backend(m_parent, model_object);
+ if (m_common_gizmos_data->update_from_backend(m_parent, model_object)) {
+ // FIXME: this is a hack to make that the clipping plane is
+ // updated when the update set its position to zero. The clipping
+ // plane itself should be common, including the update_function.
+ // Then update_from_backend could do it itself.
+ gizmo_supports->update_clipping_plane();
+ gizmo_hollow->update_clipping_plane();
+ }
- dynamic_cast<GLGizmoSlaSupports*>(m_gizmos[SlaSupports].get())->set_sla_support_data(model_object, m_parent.get_selection());
- dynamic_cast<GLGizmoHollow*>(m_gizmos[Hollow].get())->set_sla_support_data(model_object, m_parent.get_selection());
+ gizmo_supports->set_sla_support_data(model_object, m_parent.get_selection());
+ gizmo_hollow->set_sla_support_data(model_object, m_parent.get_selection());
}
// Returns true if the gizmo used the event to do something, false otherwise.