From dee5c1aa409cb9d3f80f7b8422b073e67a469cfc Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Tue, 28 May 2019 13:00:40 +0200 Subject: MeshAnalysis: Disable when XRay is turned on When XRay is turned on the mesh analysis did not draw correct. This change won't draw the mesh analysis overlay when xray is turned on. In terms of giving the user a visual feedback of this limitation we render the overlay options inactive. Reviewed By: brecht, fclem Maniphest Tasks: T65225 Differential Revision: https://developer.blender.org/D4965 --- release/scripts/startup/bl_ui/space_view3d.py | 14 ++++++++++++-- source/blender/draw/engines/workbench/workbench_forward.c | 2 +- source/blender/draw/modes/edit_mesh_mode.c | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index b79d5bf7aa2..fdf9570763a 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -5557,6 +5557,7 @@ class VIEW3D_PT_overlay_edit_mesh_shading(Panel): layout = self.layout view = context.space_data + shading = view.shading overlay = view.overlay tool_settings = context.tool_settings display_all = overlay.show_overlays @@ -5574,12 +5575,21 @@ class VIEW3D_PT_overlay_edit_mesh_shading(Panel): sub = row.row() sub.prop(tool_settings, "vertex_group_user", expand=True) - col.prop(overlay, "show_statvis", text="Mesh Analysis") + if shading.type == 'WIREFRAME': + xray = shading.show_xray_wireframe and shading.xray_alpha_wireframe < 1.0 + elif shading.type == 'SOLID': + xray = shading.show_xray and shading.xray_alpha < 1.0 + else: + xray = False + statvis_active = not xray + row = col.row() + row.active = statvis_active + row.prop(overlay, "show_statvis", text="Mesh Analysis") if overlay.show_statvis: col = col.column() + col.active = statvis_active sub = col.split() - sub.active = overlay.show_statvis sub.label(text="Type") sub.prop(statvis, "type", text="") diff --git a/source/blender/draw/engines/workbench/workbench_forward.c b/source/blender/draw/engines/workbench/workbench_forward.c index 5f15fb3f19e..6b1982151cf 100644 --- a/source/blender/draw/engines/workbench/workbench_forward.c +++ b/source/blender/draw/engines/workbench/workbench_forward.c @@ -431,7 +431,7 @@ void workbench_forward_engine_init(WORKBENCH_Data *vedata) noise_offset = fmodf(noise_offset + 1.0f / 8.0f, 1.0f); } - if (XRAY_FLAG_ENABLED(wpd)) { + if (XRAY_ENABLED(wpd)) { blend_threshold = 1.0f - XRAY_ALPHA(wpd) * 0.9f; } diff --git a/source/blender/draw/modes/edit_mesh_mode.c b/source/blender/draw/modes/edit_mesh_mode.c index 081590bb003..afe735ec7f5 100644 --- a/source/blender/draw/modes/edit_mesh_mode.c +++ b/source/blender/draw/modes/edit_mesh_mode.c @@ -701,7 +701,7 @@ static void EDIT_MESH_cache_populate(void *vedata, Object *ob) DRW_shgroup_call(g_data->fweights_shgrp, geom, ob->obmat); } - if (do_show_mesh_analysis) { + if (do_show_mesh_analysis && !XRAY_ACTIVE(v3d)) { Mesh *me = (Mesh *)ob->data; BMEditMesh *embm = me->edit_mesh; const bool is_original = embm->mesh_eval_final && -- cgit v1.2.3