From 580fab77c6911e9d1410f8a7a6806ed831ebcd97 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Thu, 17 Jan 2019 14:30:59 +0100 Subject: [PATCH] polygon selection snap --- src/canvas_modes.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/canvas_modes.cpp b/src/canvas_modes.cpp index aca50ee..ceebf7e 100644 --- a/src/canvas_modes.cpp +++ b/src/canvas_modes.cpp @@ -625,7 +625,7 @@ void CanvasModeMaskLine::leave() std::vector points; for (int i = 0; i < (int)m_points2d.size(); i++) points.emplace_back(m_points2d[i]); - auto v = canvas->triangulate(points); + auto v = canvas->triangulate(poly_remove_duplicate(points)); canvas->project2Dpoints(v); LOG("%d points", (int)v.size()); @@ -698,6 +698,8 @@ void CanvasModeMaskLine::on_MouseEvent(MouseEvent* me, glm::vec2& loc) { if (m_dragging) { + if (glm::distance(m_points2d.front(), loc) < 10) + loc = m_points2d.front(); m_points.back().pos = glm::vec4(loc, 0, 1); m_points2d.back() = loc; m_shape.update_vertices(m_points.data(), (int)m_points.size()); @@ -725,7 +727,7 @@ void CanvasModeMaskLine::on_MouseEvent(MouseEvent* me, glm::vec2& loc) void CanvasModeMaskLine::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) { - if (m_points.size() > 3) + if (m_points.size() > 1) { if (m_active_tool) {