[Bf-blender-cvs] [bd09bd2ffa6] tmp-overlay-engine: Overlay Engine: Fix overlay toggle not working

Clément Foucault noreply at git.blender.org
Sun Nov 24 02:03:16 CET 2019


Commit: bd09bd2ffa60b86581038bd794fdf81d7e1f25f3
Author: Clément Foucault
Date:   Sun Nov 24 01:39:01 2019 +0100
Branches: tmp-overlay-engine
https://developer.blender.org/rBbd09bd2ffa60b86581038bd794fdf81d7e1f25f3

Overlay Engine: Fix overlay toggle not working

===================================================================

M	source/blender/draw/engines/overlay/overlay_engine.c
M	source/blender/draw/engines/overlay/overlay_grid.c
M	source/blender/draw/engines/overlay/overlay_private.h

===================================================================

diff --git a/source/blender/draw/engines/overlay/overlay_engine.c b/source/blender/draw/engines/overlay/overlay_engine.c
index 3c4c75e9973..2a400e48d9e 100644
--- a/source/blender/draw/engines/overlay/overlay_engine.c
+++ b/source/blender/draw/engines/overlay/overlay_engine.c
@@ -77,19 +77,25 @@ static void OVERLAY_cache_init(void *vedata)
   const RegionView3D *rv3d = draw_ctx->rv3d;
   const View3D *v3d = draw_ctx->v3d;
 
-  if (v3d && !(v3d->flag2 & V3D_HIDE_OVERLAYS)) {
+  pd->hide_overlays = (v3d->flag2 & V3D_HIDE_OVERLAYS) != 0;
+
+  if (!pd->hide_overlays) {
     pd->overlay = v3d->overlay;
     pd->v3d_flag = v3d->flag;
   }
   else {
     memset(&pd->overlay, 0, sizeof(pd->overlay));
     pd->v3d_flag = 0;
+    pd->overlay.flag = V3D_OVERLAY_HIDE_TEXT | V3D_OVERLAY_HIDE_MOTION_PATHS |
+                       V3D_OVERLAY_HIDE_BONES | V3D_OVERLAY_HIDE_OBJECT_XTRAS |
+                       V3D_OVERLAY_HIDE_OBJECT_ORIGINS;
   }
 
   if (v3d->shading.type == OB_WIRE) {
     pd->overlay.flag |= V3D_OVERLAY_WIREFRAMES;
   }
 
+  pd->wireframe_mode = (v3d->shading.type == OB_WIRE);
   pd->clipping_state = (rv3d->rflag & RV3D_CLIPPING) ? DRW_STATE_CLIP_PLANES : 0;
   pd->xray_enabled = XRAY_ACTIVE(v3d);
   pd->xray_enabled_and_not_wire = pd->xray_enabled && v3d->shading.type > OB_WIRE;
@@ -186,7 +192,8 @@ static void OVERLAY_cache_populate(void *vedata, Object *ob)
   const bool has_surface = ELEM(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_MBALL, OB_FONT);
   const bool draw_surface = !((ob->dt < OB_WIRE) || (!renderable && (ob->dt != OB_WIRE)));
   const bool draw_facing = draw_surface && (pd->overlay.flag & V3D_OVERLAY_FACE_ORIENTATION);
-  const bool draw_wires = draw_surface && has_surface;
+  const bool draw_wires = draw_surface && has_surface &&
+                          (pd->wireframe_mode || !pd->hide_overlays);
   const bool draw_outlines = !in_edit_mode && !in_paint_mode && renderable &&
                              (pd->v3d_flag & V3D_SELECT_OUTLINE) &&
                              ((ob->base_flag & BASE_SELECTED) ||
diff --git a/source/blender/draw/engines/overlay/overlay_grid.c b/source/blender/draw/engines/overlay/overlay_grid.c
index 324252ba3df..85e5be08f4c 100644
--- a/source/blender/draw/engines/overlay/overlay_grid.c
+++ b/source/blender/draw/engines/overlay/overlay_grid.c
@@ -61,7 +61,7 @@ void OVERLAY_grid_init(OVERLAY_Data *vedata)
 
   shd->grid_flag = 0;
 
-  if (!(show_axis_y || show_axis_z || show_floor || show_ortho_grid)) {
+  if (pd->hide_overlays || !(show_axis_y || show_axis_z || show_floor || show_ortho_grid)) {
     return;
   }
 
diff --git a/source/blender/draw/engines/overlay/overlay_private.h b/source/blender/draw/engines/overlay/overlay_private.h
index 2845b61446b..7b087589c6a 100644
--- a/source/blender/draw/engines/overlay/overlay_private.h
+++ b/source/blender/draw/engines/overlay/overlay_private.h
@@ -268,6 +268,8 @@ typedef struct OVERLAY_PrivateData {
   View3DOverlay overlay;
   enum eContextObjectMode ctx_mode;
   bool clear_in_front;
+  bool wireframe_mode;
+  bool hide_overlays;
   bool xray_enabled;
   bool xray_enabled_and_not_wire;
   short v3d_flag;



More information about the Bf-blender-cvs mailing list