Fix of sla gizmo (it sometimes showed supports for hidden objects)

This commit is contained in:
Lukas Matena 2019-03-24 13:35:09 +01:00
parent 9652e8193a
commit 3f7f8f978e
3 changed files with 11 additions and 6 deletions

View File

@ -2293,11 +2293,13 @@ int GLCanvas3D::check_volumes_outside_state() const
return (int)state; return (int)state;
} }
void GLCanvas3D::toggle_sla_auxiliaries_visibility(bool visible) void GLCanvas3D::toggle_sla_auxiliaries_visibility(bool visible, const ModelObject* mo, int instance_idx)
{ {
for (GLVolume* vol : m_volumes.volumes) { for (GLVolume* vol : m_volumes.volumes) {
if (vol->composite_id.volume_id < 0) if ((mo == nullptr || m_model->objects[vol->composite_id.object_id] == mo)
vol->is_active = visible; && (instance_idx == -1 || vol->composite_id.instance_id == instance_idx)
&& vol->composite_id.volume_id < 0)
vol->is_active = visible;
} }
m_render_sla_auxiliaries = visible; m_render_sla_auxiliaries = visible;
@ -2313,7 +2315,7 @@ void GLCanvas3D::toggle_model_objects_visibility(bool visible, const ModelObject
} }
} }
if (visible && !mo) if (visible && !mo)
toggle_sla_auxiliaries_visibility(true); toggle_sla_auxiliaries_visibility(true, mo, instance_idx);
if (!mo && !visible && !m_model->objects.empty() && (m_model->objects.size() > 1 || m_model->objects.front()->instances.size() > 1)) if (!mo && !visible && !m_model->objects.empty() && (m_model->objects.size() > 1 || m_model->objects.front()->instances.size() > 1))
_set_warning_texture(WarningTexture::SomethingNotShown, true); _set_warning_texture(WarningTexture::SomethingNotShown, true);

View File

@ -584,6 +584,9 @@ private:
bool m_regenerate_volumes; bool m_regenerate_volumes;
bool m_moving; bool m_moving;
bool m_tab_down; bool m_tab_down;
// Following variable is obsolete and it should be safe to remove it.
// I just don't want to do it now before a release (Lukas Matena 24.3.2019)
bool m_render_sla_auxiliaries; bool m_render_sla_auxiliaries;
std::string m_color_by; std::string m_color_by;
@ -610,7 +613,7 @@ public:
void reset_volumes(); void reset_volumes();
int check_volumes_outside_state() const; int check_volumes_outside_state() const;
void toggle_sla_auxiliaries_visibility(bool visible); void toggle_sla_auxiliaries_visibility(bool visible, const ModelObject* mo = nullptr, int instance_idx = -1);
void toggle_model_objects_visibility(bool visible, const ModelObject* mo = nullptr, int instance_idx = -1); void toggle_model_objects_visibility(bool visible, const ModelObject* mo = nullptr, int instance_idx = -1);
void set_config(const DynamicPrintConfig* config); void set_config(const DynamicPrintConfig* config);

View File

@ -666,7 +666,7 @@ RENDER_AGAIN:
m_imgui->end(); m_imgui->end();
if (m_editing_mode != m_old_editing_state) { // user toggled between editing/non-editing mode if (m_editing_mode != m_old_editing_state) { // user toggled between editing/non-editing mode
m_parent.toggle_sla_auxiliaries_visibility(!m_editing_mode); m_parent.toggle_sla_auxiliaries_visibility(!m_editing_mode, m_model_object, m_active_instance);
force_refresh = true; force_refresh = true;
} }
m_old_editing_state = m_editing_mode; m_old_editing_state = m_editing_mode;