MeshAnalysis: Disable when XRay is turned on
authorJeroen Bakker <j.bakker@atmind.nl>
Tue, 28 May 2019 11:00:40 +0000 (13:00 +0200)
committerJeroen Bakker <j.bakker@atmind.nl>
Tue, 28 May 2019 13:09:57 +0000 (15:09 +0200)
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
source/blender/draw/engines/workbench/workbench_forward.c
source/blender/draw/modes/edit_mesh_mode.c

index b79d5bf..fdf9570 100644 (file)
@@ -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="")
 
index 5f15fb3..6b19821 100644 (file)
@@ -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;
     }
 
index 081590b..afe735e 100644 (file)
@@ -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 &&