From d38816bd9c32badaf2f2946f0bfe395c4632858c Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 16 Aug 2018 13:35:56 +0200 Subject: [PATCH] GLVolume use a pointer to ModelVolume's convex hull instead of a copy of it --- xs/src/slic3r/GUI/3DScene.cpp | 8 ++++---- xs/src/slic3r/GUI/3DScene.hpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/xs/src/slic3r/GUI/3DScene.cpp b/xs/src/slic3r/GUI/3DScene.cpp index 0709271b8c..171f4dbe85 100644 --- a/xs/src/slic3r/GUI/3DScene.cpp +++ b/xs/src/slic3r/GUI/3DScene.cpp @@ -204,6 +204,7 @@ GLVolume::GLVolume(float r, float g, float b, float a) , m_scale_factor(1.0f) , m_transformed_bounding_box_dirty(true) , m_transformed_convex_hull_bounding_box_dirty(true) + , m_convex_hull(nullptr) , composite_id(-1) , select_group_id(-1) , drag_group_id(-1) @@ -293,7 +294,7 @@ void GLVolume::set_scale_factor(float scale_factor) void GLVolume::set_convex_hull(const TriangleMesh& convex_hull) { - m_convex_hull = convex_hull; + m_convex_hull = &convex_hull; } std::vector GLVolume::world_matrix() const @@ -322,8 +323,8 @@ BoundingBoxf3 GLVolume::transformed_convex_hull_bounding_box() const { if (m_transformed_convex_hull_bounding_box_dirty) { - if (m_convex_hull.stl.stats.number_of_facets > 0) - m_transformed_convex_hull_bounding_box = m_convex_hull.transformed_bounding_box(world_matrix()); + if ((m_convex_hull != nullptr) && (m_convex_hull->stl.stats.number_of_facets > 0)) + m_transformed_convex_hull_bounding_box = m_convex_hull->transformed_bounding_box(world_matrix()); else m_transformed_convex_hull_bounding_box = bounding_box.transformed(world_matrix()); @@ -747,7 +748,6 @@ int GLVolumeCollection::load_wipe_tower_preview( v.drag_group_id = obj_idx * 1000; v.is_wipe_tower = true; v.shader_outside_printer_detection_enabled = ! size_unknown; - v.set_convex_hull(mesh.convex_hull_3d()); return int(this->volumes.size() - 1); } diff --git a/xs/src/slic3r/GUI/3DScene.hpp b/xs/src/slic3r/GUI/3DScene.hpp index 1265bc20de..5cd144c680 100644 --- a/xs/src/slic3r/GUI/3DScene.hpp +++ b/xs/src/slic3r/GUI/3DScene.hpp @@ -264,8 +264,8 @@ private: mutable BoundingBoxf3 m_transformed_bounding_box; // Whether or not is needed to recalculate the transformed bounding box. mutable bool m_transformed_bounding_box_dirty; - // Convex hull of the original mesh, if any. - TriangleMesh m_convex_hull; + // Pointer to convex hull of the original mesh, if any. + const TriangleMesh* m_convex_hull; // Bounding box of this volume, in unscaled coordinates. mutable BoundingBoxf3 m_transformed_convex_hull_bounding_box; // Whether or not is needed to recalculate the transformed convex hull bounding box.