Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorenricoturri1966 <enricoturri@seznam.cz>2022-05-02 13:46:13 +0300
committerenricoturri1966 <enricoturri@seznam.cz>2022-06-03 16:05:44 +0300
commit55be16d158ce72c860700e26ae9bd19b03e0af95 (patch)
treebeed2eb0deb6ed3e641375c51017495d3f32c282
parent2f6f73e10f07a5aa16b15efbd3196e45dc756ad1 (diff)
Tech ENABLE_TRANSFORMATIONS_BY_MATRICES - Reworked method void Selection::translate(unsigned int object_idx, unsigned int instance_idx, const Vec3d& displacement) to use matrix multiplication and removed unused method void Selection::translate(unsigned int object_idx, const Vec3d& displacement)
Fixed conflicts during rebase with master
-rw-r--r--src/slic3r/GUI/Selection.cpp10
-rw-r--r--src/slic3r/GUI/Selection.hpp2
2 files changed, 12 insertions, 0 deletions
diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp
index 1f0e77e16..7bc3ce91a 100644
--- a/src/slic3r/GUI/Selection.cpp
+++ b/src/slic3r/GUI/Selection.cpp
@@ -1292,6 +1292,7 @@ void Selection::mirror(Axis axis)
set_bounding_boxes_dirty();
}
+#if !ENABLE_TRANSFORMATIONS_BY_MATRICES
void Selection::translate(unsigned int object_idx, const Vec3d& displacement)
{
if (!m_valid)
@@ -1340,6 +1341,7 @@ void Selection::translate(unsigned int object_idx, const Vec3d& displacement)
this->set_bounding_boxes_dirty();
}
+#endif // !ENABLE_TRANSFORMATIONS_BY_MATRICES
void Selection::translate(unsigned int object_idx, unsigned int instance_idx, const Vec3d& displacement)
{
@@ -1349,7 +1351,11 @@ void Selection::translate(unsigned int object_idx, unsigned int instance_idx, co
for (unsigned int i : m_list) {
GLVolume& v = *(*m_volumes)[i];
if (v.object_idx() == (int)object_idx && v.instance_idx() == (int)instance_idx)
+#if ENABLE_TRANSFORMATIONS_BY_MATRICES
+ v.set_instance_transformation(Geometry::assemble_transform(displacement) * v.get_instance_transformation().get_matrix());
+#else
v.set_instance_offset(v.get_instance_offset() + displacement);
+#endif // ENABLE_TRANSFORMATIONS_BY_MATRICES
}
std::set<unsigned int> done; // prevent processing volumes twice
@@ -1382,7 +1388,11 @@ void Selection::translate(unsigned int object_idx, unsigned int instance_idx, co
if (v.object_idx() != object_idx || v.instance_idx() != (int)instance_idx)
continue;
+#if ENABLE_TRANSFORMATIONS_BY_MATRICES
+ v.set_instance_transformation(Geometry::assemble_transform(displacement) * v.get_instance_transformation().get_matrix());
+#else
v.set_instance_offset(v.get_instance_offset() + displacement);
+#endif // ENABLE_TRANSFORMATIONS_BY_MATRICES
done.insert(j);
}
}
diff --git a/src/slic3r/GUI/Selection.hpp b/src/slic3r/GUI/Selection.hpp
index 95a73f8f7..012fb0e4d 100644
--- a/src/slic3r/GUI/Selection.hpp
+++ b/src/slic3r/GUI/Selection.hpp
@@ -363,7 +363,9 @@ public:
void scale_to_fit_print_volume(const BuildVolume& volume);
void mirror(Axis axis);
+#if !ENABLE_TRANSFORMATIONS_BY_MATRICES
void translate(unsigned int object_idx, const Vec3d& displacement);
+#endif // !ENABLE_TRANSFORMATIONS_BY_MATRICES
void translate(unsigned int object_idx, unsigned int instance_idx, const Vec3d& displacement);
#if ENABLE_WORLD_COORDINATE_SCALE_REVISITED