diff options
author | Lukas Matena <lukasmatena@seznam.cz> | 2020-02-06 16:46:02 +0300 |
---|---|---|
committer | Lukas Matena <lukasmatena@seznam.cz> | 2020-02-06 16:46:02 +0300 |
commit | 3c23917e9e4fbc6a088b1f73d530c568019cd079 (patch) | |
tree | 20af38b0809f8fd3203137df9102a00c86dae1df /src/slic3r/GUI/Gizmos | |
parent | f902fc3445bd84957253de803884fbb99fc36383 (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.hpp | 2 | ||||
-rw-r--r-- | src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp | 2 | ||||
-rw-r--r-- | src/slic3r/GUI/Gizmos/GLGizmosManager.cpp | 17 |
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. |