From e7335650317f97ce0bdde7fab91d83d20f044ee0 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Tue, 5 Jan 2021 17:04:56 +0100 Subject: [PATCH] Fix of #5632 (painter gizmos not working correctly with scaled objects) This was broken since 8bcdbb7. --- src/libslic3r/TriangleSelector.cpp | 8 +++++--- src/libslic3r/TriangleSelector.hpp | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/TriangleSelector.cpp b/src/libslic3r/TriangleSelector.cpp index c69ab6d9a..3fe688195 100644 --- a/src/libslic3r/TriangleSelector.cpp +++ b/src/libslic3r/TriangleSelector.cpp @@ -45,9 +45,11 @@ void TriangleSelector::select_patch(const Vec3f& hit, int facet_start, m_cursor = Cursor(hit, source, radius, cursor_type, trafo); // In case user changed cursor size since last time, update triangle edge limit. - if (m_old_cursor_radius != radius) { - set_edge_limit(radius / 5.f); - m_old_cursor_radius = radius; + // It is necessary to compare the internal radius in m_cursor! radius is in + // world coords and does not change after scaling. + if (m_old_cursor_radius_sqr != m_cursor.radius_sqr) { + set_edge_limit(std::sqrt(m_cursor.radius_sqr) / 5.f); + m_old_cursor_radius_sqr = m_cursor.radius_sqr; } // Now start with the facet the pointer points to and check all adjacent facets. diff --git a/src/libslic3r/TriangleSelector.hpp b/src/libslic3r/TriangleSelector.hpp index 6f4ca29ac..11387c766 100644 --- a/src/libslic3r/TriangleSelector.hpp +++ b/src/libslic3r/TriangleSelector.hpp @@ -146,7 +146,7 @@ protected: }; Cursor m_cursor; - float m_old_cursor_radius; + float m_old_cursor_radius_sqr; // Private functions: bool select_triangle(int facet_idx, EnforcerBlockerType type,