From e9dbf5277518474fb558eada715f878f143aed77 Mon Sep 17 00:00:00 2001 From: "zhou.xu" Date: Thu, 2 Nov 2023 16:36:49 +0800 Subject: [PATCH] ENH:use on_render_rotate_gizmos() replace GLGizmoRotate3D::on_render() Jira: STUDIO-4227 Change-Id: If9b9ea5596e59472d5fa87ac56aeb7f6ecc65643 --- src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp | 20 +++++++++++++++++++- src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.hpp | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp index 3e038d677..1a252d0de 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp @@ -1070,6 +1070,7 @@ void GLGizmoAdvancedCut::render_cut_plane_and_grabbers() } render_glmodel(m_plane, cp_clr, Geometry::translation_transform(m_plane_center) * m_rotate_matrix); + glsafe(::glClear(GL_DEPTH_BUFFER_BIT)); glsafe(::glEnable(GL_CULL_FACE)); glsafe(::glDisable(GL_BLEND)); @@ -1126,7 +1127,24 @@ void GLGizmoAdvancedCut::render_cut_plane_and_grabbers() } // Should be placed at last, because GLGizmoRotate3D clears depth buffer GLGizmoRotate3D::set_center(m_plane_center); - GLGizmoRotate3D::on_render(); + on_render_rotate_gizmos();//replace GLGizmoRotate3D::on_render(); +} + +void GLGizmoAdvancedCut::on_render_rotate_gizmos() { + + if (m_is_dragging) { + if (m_hover_id == 0) + m_gizmos[X].render(); + if ( m_hover_id == 1) + m_gizmos[Y].render(); + if (m_hover_id == 2) + m_gizmos[Z].render(); + } + else { + m_gizmos[X].render(); + m_gizmos[Y].render(); + m_gizmos[Z].render(); + } } void GLGizmoAdvancedCut::render_connectors() diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.hpp b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.hpp index b5fc8c159..fbbc0accd 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.hpp @@ -283,6 +283,7 @@ private: void update_clipper(); // on render void render_cut_plane_and_grabbers(); + void on_render_rotate_gizmos(); void render_connectors(); void render_clipper_cut(); void render_cut_line();