From 00ec33ef16f1a137cf37a731203d346fd3ccfdd5 Mon Sep 17 00:00:00 2001 From: Enrico Turri <enricoturri@seznam.cz> Date: Thu, 1 Nov 2018 14:41:18 +0100 Subject: [PATCH 1/2] Fixed build when ENABLE_MODELVOLUME_TRANSFORM is disabled --- src/libslic3r/Model.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index f016c2ffd..d33f44c35 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1242,7 +1242,7 @@ void ModelInstance::transform_polygon(Polygon* polygon) const } #if !ENABLE_MODELVOLUME_TRANSFORM -Transform3d ModelInstance::world_matrix(bool dont_translate, bool dont_rotate, bool dont_scale, bool dont_mirror) const +Transform3d ModelInstance::get_matrix(bool dont_translate, bool dont_rotate, bool dont_scale, bool dont_mirror) const { Vec3d translation = dont_translate ? Vec3d::Zero() : m_offset; Vec3d rotation = dont_rotate ? Vec3d::Zero() : m_rotation; From 7751d991d4b3d9db9871fff7545d6375f96ba321 Mon Sep 17 00:00:00 2001 From: Enrico Turri <enricoturri@seznam.cz> Date: Thu, 1 Nov 2018 15:08:39 +0100 Subject: [PATCH 2/2] GLCanvas3D::update_gizmos_data() set as private --- src/slic3r/GUI/3DScene.cpp | 5 -- src/slic3r/GUI/3DScene.hpp | 1 - src/slic3r/GUI/GLCanvas3D.cpp | 72 ++++++++++++++-------------- src/slic3r/GUI/GLCanvas3D.hpp | 3 +- src/slic3r/GUI/GLCanvas3DManager.cpp | 7 --- src/slic3r/GUI/GLCanvas3DManager.hpp | 1 - 6 files changed, 38 insertions(+), 51 deletions(-) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 7745710e1..6fb9e4bcb 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -1980,11 +1980,6 @@ void _3DScene::update_volumes_colors_by_extruder(wxGLCanvas* canvas) s_canvas_mgr.update_volumes_colors_by_extruder(canvas); } -void _3DScene::update_gizmos_data(wxGLCanvas* canvas) -{ - s_canvas_mgr.update_gizmos_data(canvas); -} - void _3DScene::render(wxGLCanvas* canvas) { s_canvas_mgr.render(canvas); diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index d33f34b85..a69147a86 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -565,7 +565,6 @@ public: static void set_viewport_from_scene(wxGLCanvas* canvas, wxGLCanvas* other); static void update_volumes_colors_by_extruder(wxGLCanvas* canvas); - static void update_gizmos_data(wxGLCanvas* canvas); static void render(wxGLCanvas* canvas); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 5ea74fc17..f94c4a608 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3184,36 +3184,6 @@ void GLCanvas3D::update_volumes_colors_by_extruder() m_volumes.update_colors_by_extruder(m_config); } -void GLCanvas3D::update_gizmos_data() -{ - if (!m_gizmos.is_enabled()) - return; - - bool enable_move_z = !m_selection.is_wipe_tower(); - m_gizmos.enable_grabber(Gizmos::Move, 2, enable_move_z); - bool enable_scale_xyz = m_selection.is_single_full_instance(); - for (int i = 0; i < 6; ++i) - { - m_gizmos.enable_grabber(Gizmos::Scale, i, enable_scale_xyz); - } - - if (m_selection.is_single_full_instance()) - { - ModelObject* model_object = m_model->objects[m_selection.get_object_idx()]; - ModelInstance* model_instance = model_object->instances[m_selection.get_instance_idx()]; - m_gizmos.set_scale(model_instance->get_scaling_factor()); - m_gizmos.set_rotation(model_instance->get_rotation()); - m_gizmos.set_flattening_data(model_object); - m_gizmos.set_model_object_ptr(model_object); - } - else - { - m_gizmos.set_scale(Vec3d::Ones()); - m_gizmos.set_rotation(Vec3d::Zero()); - m_gizmos.set_flattening_data(nullptr); - } -} - // Returns a Rect object denoting size and position of the Reset button used by a gizmo. // Returns in either screen or viewport coords. Rect GLCanvas3D::get_gizmo_reset_rect(const GLCanvas3D& canvas, bool viewport) const @@ -3397,7 +3367,7 @@ void GLCanvas3D::reload_scene(bool force) } } - update_gizmos_data(); + _update_gizmos_data(); if (m_regenerate_volumes) { @@ -3802,12 +3772,12 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) else if (!m_selection.is_empty() && gizmos_overlay_contains_mouse) { m_gizmos.update_on_off_state(*this, m_mouse.position, m_selection); - update_gizmos_data(); + _update_gizmos_data(); m_dirty = true; } else if (evt.LeftDown() && !m_selection.is_empty() && m_gizmos.grabber_contains_mouse()) { - update_gizmos_data(); + _update_gizmos_data(); m_selection.start_dragging(); m_gizmos.start_dragging(m_selection); @@ -3851,7 +3821,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) } m_gizmos.update_on_off_state(m_selection); - update_gizmos_data(); + _update_gizmos_data(); wxGetApp().obj_manipul()->update_settings_value(m_selection); post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); m_dirty = true; @@ -3894,7 +3864,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_selection.add(m_hover_volume_id); m_gizmos.update_on_off_state(m_selection); post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); - update_gizmos_data(); + _update_gizmos_data(); wxGetApp().obj_manipul()->update_settings_value(m_selection); // forces a frame render to update the view before the context menu is shown render(); @@ -4050,7 +4020,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_selection.clear(); wxGetApp().obj_manipul()->update_settings_value(m_selection); post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); - update_gizmos_data(); + _update_gizmos_data(); } #if ENABLE_GIZMOS_RESET else if (m_mouse.ignore_up_event) @@ -4856,6 +4826,36 @@ void GLCanvas3D::_update_volumes_hover_state() const } } +void GLCanvas3D::_update_gizmos_data() +{ + if (!m_gizmos.is_enabled()) + return; + + bool enable_move_z = !m_selection.is_wipe_tower(); + m_gizmos.enable_grabber(Gizmos::Move, 2, enable_move_z); + bool enable_scale_xyz = m_selection.is_single_full_instance(); + for (int i = 0; i < 6; ++i) + { + m_gizmos.enable_grabber(Gizmos::Scale, i, enable_scale_xyz); + } + + if (m_selection.is_single_full_instance()) + { + ModelObject* model_object = m_model->objects[m_selection.get_object_idx()]; + ModelInstance* model_instance = model_object->instances[m_selection.get_instance_idx()]; + m_gizmos.set_scale(model_instance->get_scaling_factor()); + m_gizmos.set_rotation(model_instance->get_rotation()); + m_gizmos.set_flattening_data(model_object); + m_gizmos.set_model_object_ptr(model_object); + } + else + { + m_gizmos.set_scale(Vec3d::Ones()); + m_gizmos.set_rotation(Vec3d::Zero()); + m_gizmos.set_flattening_data(nullptr); + } +} + float GLCanvas3D::_get_layers_editing_cursor_z_relative() const { return m_layers_editing.get_cursor_z_relative(*this); diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index dc2f03817..bf2fb4fd5 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -742,7 +742,7 @@ public: void set_viewport_from_scene(const GLCanvas3D& other); void update_volumes_colors_by_extruder(); - void update_gizmos_data(); + Rect get_gizmo_reset_rect(const GLCanvas3D& canvas, bool viewport) const; bool gizmo_reset_rect_contains(const GLCanvas3D& canvas, float x, float y) const; @@ -822,6 +822,7 @@ private: #endif // ENABLE_SHOW_CAMERA_TARGET void _update_volumes_hover_state() const; + void _update_gizmos_data(); float _get_layers_editing_cursor_z_relative() const; void _perform_layer_editing_action(wxMouseEvent* evt = nullptr); diff --git a/src/slic3r/GUI/GLCanvas3DManager.cpp b/src/slic3r/GUI/GLCanvas3DManager.cpp index 55697e2be..d8ff798ed 100644 --- a/src/slic3r/GUI/GLCanvas3DManager.cpp +++ b/src/slic3r/GUI/GLCanvas3DManager.cpp @@ -485,13 +485,6 @@ void GLCanvas3DManager::update_volumes_colors_by_extruder(wxGLCanvas* canvas) it->second->update_volumes_colors_by_extruder(); } -void GLCanvas3DManager::update_gizmos_data(wxGLCanvas* canvas) -{ - CanvasesMap::const_iterator it = _get_canvas(canvas); - if (it != m_canvases.end()) - it->second->update_gizmos_data(); -} - void GLCanvas3DManager::render(wxGLCanvas* canvas) const { CanvasesMap::const_iterator it = _get_canvas(canvas); diff --git a/src/slic3r/GUI/GLCanvas3DManager.hpp b/src/slic3r/GUI/GLCanvas3DManager.hpp index 6ce805bdd..917b4a4e8 100644 --- a/src/slic3r/GUI/GLCanvas3DManager.hpp +++ b/src/slic3r/GUI/GLCanvas3DManager.hpp @@ -135,7 +135,6 @@ public: void set_viewport_from_scene(wxGLCanvas* canvas, wxGLCanvas* other); void update_volumes_colors_by_extruder(wxGLCanvas* canvas); - void update_gizmos_data(wxGLCanvas* canvas); void render(wxGLCanvas* canvas) const;