From aada69d4477f65f17cbb38eb7ce34572071e6302 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 10 May 2017 01:43:01 +0100 Subject: [PATCH] add drop down menu to clear grids --- engine/app.cpp | 6 ++++++ engine/canvas.cpp | 2 +- engine/canvas_modes.cpp | 13 +++++++++---- engine/canvas_modes.h | 3 ++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/engine/app.cpp b/engine/app.cpp index 8963bc4..f408388 100644 --- a/engine/app.cpp +++ b/engine/app.cpp @@ -691,6 +691,12 @@ void App::initLayout() layout[main_id]->update(); popup->mouse_capture(); popup->m_mouse_ignore = false; + popup->find("clear-grids")->on_click = [this](Node*) { + CanvasModeGrid* mode = (CanvasModeGrid*)ui::Canvas::modes[(int)ui::Canvas::kCanvasMode::Grid][0]; + mode->clear(); + popup->mouse_release(); + popup->destroy(); + }; }; } if (auto* toolbar = layout[main_id]->find("toolbar")) diff --git a/engine/canvas.cpp b/engine/canvas.cpp index 9900a1b..61761cd 100644 --- a/engine/canvas.cpp +++ b/engine/canvas.cpp @@ -8,7 +8,7 @@ std::vector ui::Canvas::modes[] = { { new CanvasModePen, new CanvasModeBasicCamera }, { new CanvasModeLine, new CanvasModeBasicCamera }, { new CanvasModeCamera, new CanvasModeBasicCamera }, - { new CanvasModeNormal, new CanvasModeBasicCamera }, + { new CanvasModeGrid, new CanvasModeBasicCamera }, { new CanvasModeFill, new CanvasModeBasicCamera }, }; glm::vec3 ui::Canvas::m_plane_origin[6] = { diff --git a/engine/canvas_modes.cpp b/engine/canvas_modes.cpp index 1d8753f..1ff6bd3 100644 --- a/engine/canvas_modes.cpp +++ b/engine/canvas_modes.cpp @@ -185,7 +185,7 @@ void CanvasModeCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc) //////////////////////////////////////////////////////////////////// -void CanvasModeNormal::on_MouseEvent(MouseEvent* me, glm::vec2& loc) +void CanvasModeGrid::on_MouseEvent(MouseEvent* me, glm::vec2& loc) { switch (me->m_type) { @@ -228,7 +228,7 @@ void CanvasModeNormal::on_MouseEvent(MouseEvent* me, glm::vec2& loc) } } -void CanvasModeNormal::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) +void CanvasModeGrid::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) { //if (m_dragging) for (auto l : m_lines) @@ -246,12 +246,12 @@ void CanvasModeNormal::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, co } } -void CanvasModeNormal::init() +void CanvasModeGrid::init() { m_line.create(); } -void CanvasModeNormal::commit() +void CanvasModeGrid::commit() { auto drawer = [this](const glm::mat4& camera, const glm::mat4& proj){ ui::ShaderManager::use(ui::kShader::Color); @@ -266,6 +266,11 @@ void CanvasModeNormal::commit() canvas->draw_objects(std::bind(drawer, std::placeholders::_1, std::placeholders::_2)); } +void CanvasModeGrid::clear() +{ + m_lines.clear(); +} + //////////////////////////////////////////////////////////////////// void CanvasModeFill::init() diff --git a/engine/canvas_modes.h b/engine/canvas_modes.h index 9c23095..1655946 100644 --- a/engine/canvas_modes.h +++ b/engine/canvas_modes.h @@ -55,7 +55,7 @@ public: virtual void init() override; }; -class CanvasModeNormal : public CanvasMode +class CanvasModeGrid : public CanvasMode { ui::LineSegment m_line; glm::vec3 origin; @@ -69,6 +69,7 @@ public: virtual void on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) override; virtual void init() override; void commit(); + void clear(); }; class CanvasModeCamera : public CanvasMode