Do not show sinking contours when a gizmo hides some objects
This commit is contained in:
parent
83ab034f9a
commit
b14faf627b
@ -843,12 +843,13 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab
|
|||||||
volume.first->set_render_color();
|
volume.first->set_render_color();
|
||||||
|
|
||||||
// render sinking contours of non-hovered volumes
|
// render sinking contours of non-hovered volumes
|
||||||
if (volume.first->is_sinking() && !volume.first->is_below_printbed() &&
|
if (m_show_sinking_contours)
|
||||||
volume.first->hover == GLVolume::HS_None && !volume.first->force_sinking_contours) {
|
if (volume.first->is_sinking() && !volume.first->is_below_printbed() &&
|
||||||
shader->stop_using();
|
volume.first->hover == GLVolume::HS_None && !volume.first->force_sinking_contours) {
|
||||||
volume.first->render_sinking_contours();
|
shader->stop_using();
|
||||||
shader->start_using();
|
volume.first->render_sinking_contours();
|
||||||
}
|
shader->start_using();
|
||||||
|
}
|
||||||
|
|
||||||
glsafe(::glEnableClientState(GL_VERTEX_ARRAY));
|
glsafe(::glEnableClientState(GL_VERTEX_ARRAY));
|
||||||
glsafe(::glEnableClientState(GL_NORMAL_ARRAY));
|
glsafe(::glEnableClientState(GL_NORMAL_ARRAY));
|
||||||
@ -887,17 +888,18 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab
|
|||||||
glsafe(::glDisableClientState(GL_NORMAL_ARRAY));
|
glsafe(::glDisableClientState(GL_NORMAL_ARRAY));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (GLVolumeWithIdAndZ& volume : to_render) {
|
if (m_show_sinking_contours)
|
||||||
// render sinking contours of hovered/displaced volumes
|
for (GLVolumeWithIdAndZ& volume : to_render) {
|
||||||
if (volume.first->is_sinking() && !volume.first->is_below_printbed() &&
|
// render sinking contours of hovered/displaced volumes
|
||||||
(volume.first->hover != GLVolume::HS_None || volume.first->force_sinking_contours)) {
|
if (volume.first->is_sinking() && !volume.first->is_below_printbed() &&
|
||||||
shader->stop_using();
|
(volume.first->hover != GLVolume::HS_None || volume.first->force_sinking_contours)) {
|
||||||
glsafe(::glDepthFunc(GL_ALWAYS));
|
shader->stop_using();
|
||||||
volume.first->render_sinking_contours();
|
glsafe(::glDepthFunc(GL_ALWAYS));
|
||||||
glsafe(::glDepthFunc(GL_LESS));
|
volume.first->render_sinking_contours();
|
||||||
shader->start_using();
|
glsafe(::glDepthFunc(GL_LESS));
|
||||||
|
shader->start_using();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
glsafe(::glEnableClientState(GL_VERTEX_ARRAY));
|
glsafe(::glEnableClientState(GL_VERTEX_ARRAY));
|
||||||
glsafe(::glEnableClientState(GL_NORMAL_ARRAY));
|
glsafe(::glEnableClientState(GL_NORMAL_ARRAY));
|
||||||
|
@ -539,6 +539,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
Slope m_slope;
|
Slope m_slope;
|
||||||
|
bool m_show_sinking_contours = false;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GLVolumePtrs volumes;
|
GLVolumePtrs volumes;
|
||||||
@ -608,6 +609,7 @@ public:
|
|||||||
float get_slope_normal_z() const { return m_slope.normal_z; }
|
float get_slope_normal_z() const { return m_slope.normal_z; }
|
||||||
void set_slope_normal_z(float normal_z) { m_slope.normal_z = normal_z; }
|
void set_slope_normal_z(float normal_z) { m_slope.normal_z = normal_z; }
|
||||||
void set_default_slope_normal_z() { m_slope.normal_z = -::cos(Geometry::deg2rad(90.0f - 45.0f)); }
|
void set_default_slope_normal_z() { m_slope.normal_z = -::cos(Geometry::deg2rad(90.0f - 45.0f)); }
|
||||||
|
void set_show_sinking_contours(bool show) { m_show_sinking_contours = show; }
|
||||||
|
|
||||||
// returns true if all the volumes are completely contained in the print volume
|
// returns true if all the volumes are completely contained in the print volume
|
||||||
// returns the containment state in the given out_state, if non-null
|
// returns the containment state in the given out_state, if non-null
|
||||||
|
@ -5107,6 +5107,7 @@ void GLCanvas3D::_render_objects()
|
|||||||
m_volumes.set_z_range(-FLT_MAX, FLT_MAX);
|
m_volumes.set_z_range(-FLT_MAX, FLT_MAX);
|
||||||
|
|
||||||
m_volumes.set_clipping_plane(m_camera_clipping_plane.get_data());
|
m_volumes.set_clipping_plane(m_camera_clipping_plane.get_data());
|
||||||
|
m_volumes.set_show_sinking_contours(! m_gizmos.is_hiding_instances());
|
||||||
|
|
||||||
GLShaderProgram* shader = wxGetApp().get_shader("gouraud");
|
GLShaderProgram* shader = wxGetApp().get_shader("gouraud");
|
||||||
if (shader != nullptr) {
|
if (shader != nullptr) {
|
||||||
|
@ -1248,6 +1248,12 @@ bool GLGizmosManager::is_in_editing_mode(bool error_notification) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool GLGizmosManager::is_hiding_instances() const
|
||||||
|
{
|
||||||
|
return (m_common_gizmos_data->instances_hider() && m_common_gizmos_data->instances_hider()->is_valid());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int GLGizmosManager::get_shortcut_key(GLGizmosManager::EType type) const
|
int GLGizmosManager::get_shortcut_key(GLGizmosManager::EType type) const
|
||||||
{
|
{
|
||||||
return m_gizmos[type]->get_shortcut_key();
|
return m_gizmos[type]->get_shortcut_key();
|
||||||
|
@ -122,7 +122,6 @@ private:
|
|||||||
MouseCapture m_mouse_capture;
|
MouseCapture m_mouse_capture;
|
||||||
std::string m_tooltip;
|
std::string m_tooltip;
|
||||||
bool m_serializing;
|
bool m_serializing;
|
||||||
//std::unique_ptr<CommonGizmosData> m_common_gizmos_data;
|
|
||||||
std::unique_ptr<CommonGizmosDataPool> m_common_gizmos_data;
|
std::unique_ptr<CommonGizmosDataPool> m_common_gizmos_data;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -218,6 +217,7 @@ public:
|
|||||||
bool wants_reslice_supports_on_undo() const;
|
bool wants_reslice_supports_on_undo() const;
|
||||||
|
|
||||||
bool is_in_editing_mode(bool error_notification = false) const;
|
bool is_in_editing_mode(bool error_notification = false) const;
|
||||||
|
bool is_hiding_instances() const;
|
||||||
|
|
||||||
void render_current_gizmo() const;
|
void render_current_gizmo() const;
|
||||||
void render_current_gizmo_for_picking_pass() const;
|
void render_current_gizmo_for_picking_pass() const;
|
||||||
|
Loading…
Reference in New Issue
Block a user