Write result transformation into all gl_volumes
This commit is contained in:
parent
b4133fcf96
commit
617c163bd6
@ -547,11 +547,25 @@ bool GLGizmoEmboss::on_mouse_for_translate(const wxMouseEvent &mouse_event)
|
|||||||
// with Mesa driver OR on Linux
|
// with Mesa driver OR on Linux
|
||||||
if (!m_temp_transformation.has_value()) return false;
|
if (!m_temp_transformation.has_value()) return false;
|
||||||
|
|
||||||
|
int instance_idx = m_parent.get_selection().get_instance_idx();
|
||||||
|
const auto &instances = m_volume->get_object()->instances;
|
||||||
|
if (instance_idx < 0 || instance_idx >= instances.size())
|
||||||
|
return false;
|
||||||
|
|
||||||
// Override of common transformation after draggig by set transformation into gl_volume
|
// Override of common transformation after draggig by set transformation into gl_volume
|
||||||
Transform3d volume_trmat =
|
Transform3d volume_trmat =
|
||||||
gl_volume->get_instance_transformation().get_matrix().inverse() *
|
instances[instance_idx]->get_matrix().inverse() *
|
||||||
*m_temp_transformation;
|
*m_temp_transformation;
|
||||||
gl_volume->set_volume_transformation(Geometry::Transformation(volume_trmat));
|
|
||||||
|
// ReWrite transformation inside of all instances
|
||||||
|
Geometry::Transformation transformation(volume_trmat);
|
||||||
|
for (GLVolume *vol : m_parent.get_volumes().volumes) {
|
||||||
|
if (vol->object_idx() != gl_volume->object_idx() ||
|
||||||
|
vol->volume_idx() != gl_volume->volume_idx())
|
||||||
|
continue;
|
||||||
|
vol->set_volume_transformation(transformation);
|
||||||
|
}
|
||||||
|
|
||||||
m_parent.toggle_model_objects_visibility(true);
|
m_parent.toggle_model_objects_visibility(true);
|
||||||
// Apply temporary position
|
// Apply temporary position
|
||||||
m_temp_transformation = {};
|
m_temp_transformation = {};
|
||||||
|
Loading…
Reference in New Issue
Block a user