[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