diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2020-03-31 16:32:03 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2020-04-02 12:49:39 +0300 |
commit | 782e6ea4edd9cb09f2583c8f28a24d6330dc6ce8 (patch) | |
tree | 70fb4515fa880efa9a2be000f95291d2f6faef49 /source/blender/draw/engines/overlay/overlay_engine.c | |
parent | 1c3ded12f439c90beee155ebd9261b8b2e947674 (diff) |
Fix T72688: Vertex Group Weights in Edit Mode Occludes In Front Armatures
Due to legacy this overlay was implemented twice (Edit Mesh and Weight
Painting) with different results. This patch consolidates both drawing
and uses only the Weight Painting drawing.
Reviewed By: Clément Foucault
Differential Revision: https://developer.blender.org/D7289
Diffstat (limited to 'source/blender/draw/engines/overlay/overlay_engine.c')
-rw-r--r-- | source/blender/draw/engines/overlay/overlay_engine.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/draw/engines/overlay/overlay_engine.c b/source/blender/draw/engines/overlay/overlay_engine.c index e0b599f43a9..19b0fa5e12b 100644 --- a/source/blender/draw/engines/overlay/overlay_engine.c +++ b/source/blender/draw/engines/overlay/overlay_engine.c @@ -106,10 +106,14 @@ static void OVERLAY_cache_init(void *vedata) OVERLAY_Data *data = vedata; OVERLAY_StorageList *stl = data->stl; OVERLAY_PrivateData *pd = stl->pd; + const bool draw_edit_weights = (pd->edit_mesh.flag & V3D_OVERLAY_EDIT_WEIGHT); switch (pd->ctx_mode) { case CTX_MODE_EDIT_MESH: OVERLAY_edit_mesh_cache_init(vedata); + if (draw_edit_weights) { + OVERLAY_paint_cache_init(vedata); + } break; case CTX_MODE_EDIT_SURFACE: case CTX_MODE_EDIT_CURVE: @@ -251,6 +255,7 @@ static void OVERLAY_cache_populate(void *vedata, Object *ob) (ob->base_flag & BASE_SELECTED); const bool draw_bone_selection = (ob->type == OB_MESH) && pd->armature.do_pose_fade_geom && !is_select; + const bool draw_edit_weights = in_edit_mode && (pd->edit_mesh.flag & V3D_OVERLAY_EDIT_WEIGHT); const bool draw_extras = (!pd->hide_overlays) && (((pd->overlay.flag & V3D_OVERLAY_HIDE_OBJECT_XTRAS) == 0) || @@ -279,6 +284,9 @@ static void OVERLAY_cache_populate(void *vedata, Object *ob) switch (ob->type) { case OB_MESH: OVERLAY_edit_mesh_cache_populate(vedata, ob); + if (draw_edit_weights) { + OVERLAY_paint_weight_cache_populate(vedata, ob); + } break; case OB_ARMATURE: if (draw_bones) { @@ -495,6 +503,7 @@ static void OVERLAY_draw_scene(void *vedata) switch (pd->ctx_mode) { case CTX_MODE_EDIT_MESH: + OVERLAY_paint_draw(vedata); OVERLAY_edit_mesh_draw(vedata); break; case CTX_MODE_EDIT_SURFACE: |