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;
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)
{