Place to bed now rotates all instances the same way, regardless of which one was selected
This commit is contained in:
parent
7ef10e9663
commit
60926e7be3
@ -1700,8 +1700,10 @@ void GLCanvas3D::Selection::flattening_rotate(const Vec3d& normal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if !DISABLE_INSTANCES_SYNCH
|
#if !DISABLE_INSTANCES_SYNCH
|
||||||
|
// we want to synchronize z-rotation as well, otherwise the flattening behaves funny
|
||||||
|
// when applied on one of several identical instances
|
||||||
if (m_mode == Instance)
|
if (m_mode == Instance)
|
||||||
_synchronize_unselected_instances();
|
_synchronize_unselected_instances(true);
|
||||||
#endif // !DISABLE_INSTANCES_SYNCH
|
#endif // !DISABLE_INSTANCES_SYNCH
|
||||||
|
|
||||||
m_bounding_box_dirty = true;
|
m_bounding_box_dirty = true;
|
||||||
@ -1911,7 +1913,6 @@ void GLCanvas3D::Selection::erase()
|
|||||||
{
|
{
|
||||||
items.emplace_back(ItemType::itInstance, i.first, i.second);
|
items.emplace_back(ItemType::itInstance, i.first, i.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGetApp().obj_list()->delete_from_model_and_list(items);
|
wxGetApp().obj_list()->delete_from_model_and_list(items);
|
||||||
}
|
}
|
||||||
else if (is_mixed())
|
else if (is_mixed())
|
||||||
@ -2573,7 +2574,7 @@ void GLCanvas3D::Selection::_render_sidebar_size_hint(Axis axis, double length)
|
|||||||
}
|
}
|
||||||
#endif // ENABLE_SIDEBAR_VISUAL_HINTS
|
#endif // ENABLE_SIDEBAR_VISUAL_HINTS
|
||||||
|
|
||||||
void GLCanvas3D::Selection::_synchronize_unselected_instances()
|
void GLCanvas3D::Selection::_synchronize_unselected_instances(bool including_z)
|
||||||
{
|
{
|
||||||
std::set<unsigned int> done; // prevent processing volumes twice
|
std::set<unsigned int> done; // prevent processing volumes twice
|
||||||
done.insert(m_list.begin(), m_list.end());
|
done.insert(m_list.begin(), m_list.end());
|
||||||
@ -2606,7 +2607,7 @@ void GLCanvas3D::Selection::_synchronize_unselected_instances()
|
|||||||
if ((v->object_idx() != object_idx) || (v->instance_idx() == instance_idx))
|
if ((v->object_idx() != object_idx) || (v->instance_idx() == instance_idx))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
v->set_instance_rotation(Vec3d(rotation(0), rotation(1), v->get_instance_rotation()(2)));
|
v->set_instance_rotation(Vec3d(rotation(0), rotation(1), including_z ? rotation(2) : v->get_instance_rotation()(2)));
|
||||||
v->set_instance_scaling_factor(scaling_factor);
|
v->set_instance_scaling_factor(scaling_factor);
|
||||||
v->set_instance_mirror(mirror);
|
v->set_instance_mirror(mirror);
|
||||||
|
|
||||||
|
@ -597,7 +597,7 @@ public:
|
|||||||
void _render_sidebar_scale_hint(Axis axis) const;
|
void _render_sidebar_scale_hint(Axis axis) const;
|
||||||
void _render_sidebar_size_hint(Axis axis, double length) const;
|
void _render_sidebar_size_hint(Axis axis, double length) const;
|
||||||
#endif // ENABLE_SIDEBAR_VISUAL_HINTS
|
#endif // ENABLE_SIDEBAR_VISUAL_HINTS
|
||||||
void _synchronize_unselected_instances();
|
void _synchronize_unselected_instances(bool including_z = false);
|
||||||
void _synchronize_unselected_volumes();
|
void _synchronize_unselected_volumes();
|
||||||
#if ENABLE_ENSURE_ON_BED_WHILE_SCALING
|
#if ENABLE_ENSURE_ON_BED_WHILE_SCALING
|
||||||
void _ensure_on_bed();
|
void _ensure_on_bed();
|
||||||
|
Loading…
Reference in New Issue
Block a user