polygon selection snap

This commit is contained in:
2019-01-17 14:30:59 +01:00
parent a2b2ef52c3
commit 580fab77c6

View File

@@ -625,7 +625,7 @@ void CanvasModeMaskLine::leave()
std::vector<vertex_t> points; std::vector<vertex_t> points;
for (int i = 0; i < (int)m_points2d.size(); i++) for (int i = 0; i < (int)m_points2d.size(); i++)
points.emplace_back(m_points2d[i]); points.emplace_back(m_points2d[i]);
auto v = canvas->triangulate(points); auto v = canvas->triangulate(poly_remove_duplicate(points));
canvas->project2Dpoints(v); canvas->project2Dpoints(v);
LOG("%d points", (int)v.size()); LOG("%d points", (int)v.size());
@@ -698,6 +698,8 @@ void CanvasModeMaskLine::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
{ {
if (m_dragging) 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_points.back().pos = glm::vec4(loc, 0, 1);
m_points2d.back() = loc; m_points2d.back() = loc;
m_shape.update_vertices(m_points.data(), (int)m_points.size()); 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) 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) if (m_active_tool)
{ {