refactor canvas modes
This commit is contained in:
@@ -25,8 +25,7 @@ void NodeCanvas::init()
|
||||
m_face_plane.create<1>(2, 2);
|
||||
m_line.create();
|
||||
CanvasMode::node = this;
|
||||
CanvasMode::canvas = m_canvas.get();
|
||||
for (int i = 0; i < (int)Canvas::kCanvasMode::COUNT; i++)
|
||||
for (int i = 0; i < (int)kCanvasMode::COUNT; i++)
|
||||
for (auto m : Canvas::modes[i])
|
||||
m->init();
|
||||
|
||||
@@ -44,8 +43,7 @@ void NodeCanvas::restore_context()
|
||||
m_face_plane.create<1>(2, 2);
|
||||
m_canvas->snapshot_restore();
|
||||
CanvasMode::node = this;
|
||||
CanvasMode::canvas = m_canvas.get();
|
||||
for (int i = 0; i < (int)Canvas::kCanvasMode::COUNT; i++)
|
||||
for (int i = 0; i < (int)kCanvasMode::COUNT; i++)
|
||||
for (auto m : Canvas::modes[i])
|
||||
m->init();
|
||||
}
|
||||
@@ -172,7 +170,7 @@ void NodeCanvas::draw()
|
||||
m_canvas->m_plane_transform[plane_index] *
|
||||
glm::translate(glm::vec3(0, 0, -1));
|
||||
|
||||
if (m_canvas->m_current_stroke && m_canvas->m_state == Canvas::kCanvasMode::Erase && m_canvas->m_show_tmp && m_canvas->m_current_layer_idx == layer_index)
|
||||
if (m_canvas->m_current_stroke && m_canvas->m_current_mode == kCanvasMode::Erase && m_canvas->m_show_tmp && m_canvas->m_current_layer_idx == layer_index)
|
||||
{
|
||||
m_sampler.bind(0);
|
||||
ShaderManager::use(kShader::CompErase);
|
||||
@@ -352,17 +350,15 @@ void NodeCanvas::draw()
|
||||
}
|
||||
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
auto transform_mode = static_cast<CanvasModeTransform*>(Canvas::modes[(int)Canvas::kCanvasMode::Transform][0]);
|
||||
bool importing = transform_mode->m_action == CanvasModeTransform::ActionType::Import;
|
||||
if (m_canvas->m_smask_active || m_canvas->m_state == Canvas::kCanvasMode::Transform && !importing)
|
||||
if (m_canvas->m_smask_active || m_canvas->m_current_mode == kCanvasMode::Copy || m_canvas->m_current_mode == kCanvasMode::Cut)
|
||||
{
|
||||
m_canvas->modes[(int)Canvas::kCanvasMode::MaskFree][0]->on_Draw(ortho_proj, proj, camera);
|
||||
m_canvas->modes[(int)Canvas::kCanvasMode::MaskLine][0]->on_Draw(ortho_proj, proj, camera);
|
||||
m_canvas->modes[(int)kCanvasMode::MaskFree][0]->on_Draw(ortho_proj, proj, camera);
|
||||
m_canvas->modes[(int)kCanvasMode::MaskLine][0]->on_Draw(ortho_proj, proj, camera);
|
||||
}
|
||||
|
||||
// keep drawing the grids
|
||||
if (m_canvas->m_state != Canvas::kCanvasMode::Grid)
|
||||
for (auto& mode : Canvas::modes[(int)Canvas::kCanvasMode::Grid])
|
||||
if (m_canvas->m_current_mode != kCanvasMode::Grid)
|
||||
for (auto& mode : Canvas::modes[(int)kCanvasMode::Grid])
|
||||
mode->on_Draw(ortho_proj, proj, camera);
|
||||
|
||||
App::I.grid->draw_heightmap(proj, camera, false);
|
||||
@@ -415,8 +411,8 @@ kEventResult NodeCanvas::handle_event(Event* e)
|
||||
if (stylus_eraser != me->m_eraser)
|
||||
{
|
||||
Canvas::set_mode(me->m_eraser ?
|
||||
Canvas::kCanvasMode::Erase :
|
||||
Canvas::kCanvasMode::Draw);
|
||||
kCanvasMode::Erase :
|
||||
kCanvasMode::Draw);
|
||||
stylus_eraser = me->m_eraser;
|
||||
}
|
||||
case kEventType::MouseScroll:
|
||||
@@ -431,7 +427,7 @@ kEventResult NodeCanvas::handle_event(Event* e)
|
||||
break;
|
||||
case kEventType::KeyDown:
|
||||
if (ke->m_key == kKey::KeyE)
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Erase);
|
||||
Canvas::set_mode(kCanvasMode::Erase);
|
||||
if (ke->m_key == kKey::AndroidBack)
|
||||
if (!ActionManager::empty())
|
||||
ActionManager::undo();
|
||||
@@ -439,7 +435,7 @@ kEventResult NodeCanvas::handle_event(Event* e)
|
||||
break;
|
||||
case kEventType::KeyUp:
|
||||
if (ke->m_key == kKey::KeyE)
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Draw);
|
||||
Canvas::set_mode(kCanvasMode::Draw);
|
||||
if (ke->m_key == kKey::KeyTab)
|
||||
App::I.toggle_ui();
|
||||
if (ke->m_key == kKey::KeyZ && App::I.keys[(int)kKey::KeyCtrl])
|
||||
|
||||
Reference in New Issue
Block a user