From 8a9d0023a7616e27f209448ecc2adab52e5b5188 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Fri, 24 Aug 2018 12:16:11 +0200 Subject: [PATCH] Added snap to scale to rotate gizmo --- xs/src/slic3r/GUI/GLGizmo.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/xs/src/slic3r/GUI/GLGizmo.cpp b/xs/src/slic3r/GUI/GLGizmo.cpp index 212bf51a9..ee98857e9 100644 --- a/xs/src/slic3r/GUI/GLGizmo.cpp +++ b/xs/src/slic3r/GUI/GLGizmo.cpp @@ -297,8 +297,9 @@ void GLGizmoRotate::on_update(const Linef3& mouse_ray) if (cross2(orig_dir, new_dir) < 0.0) theta = 2.0 * (double)PI - theta; - // snap double len = mouse_pos.norm(); + + // snap to snap region double in_radius = (double)m_radius / 3.0; double out_radius = 2.0 * (double)in_radius; if ((in_radius <= len) && (len <= out_radius)) @@ -306,6 +307,17 @@ void GLGizmoRotate::on_update(const Linef3& mouse_ray) double step = 2.0 * (double)PI / (double)SnapRegionsCount; theta = step * (double)std::round(theta / step); } + else + { + // snap to scale + in_radius = (double)m_radius; + out_radius = in_radius + (double)ScaleLongTooth; + if ((in_radius <= len) && (len <= out_radius)) + { + double step = 2.0 * (double)PI / (double)ScaleStepsCount; + theta = step * (double)std::round(theta / step); + } + } if (theta == 2.0 * (double)PI) theta = 0.0;