From c060a835bbcdc994e77460ae69d2fd2ecfc249ab Mon Sep 17 00:00:00 2001 From: mano-wii Date: Thu, 1 Aug 2019 23:18:44 -0300 Subject: Fix unreported: Selection of mesh_cage element occluded by the mesh_cage itself. The right thing is to be occluded by the visible mesh (in the case with modifiers). --- source/blender/draw/engines/select/select_draw_utils.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source/blender/draw/engines/select') diff --git a/source/blender/draw/engines/select/select_draw_utils.c b/source/blender/draw/engines/select/select_draw_utils.c index 745c55405de..026fd52aa58 100644 --- a/source/blender/draw/engines/select/select_draw_utils.c +++ b/source/blender/draw/engines/select/select_draw_utils.c @@ -90,9 +90,10 @@ static void draw_select_id_edit_mesh(SELECTID_StorageList *stl, BM_mesh_elem_table_ensure(em->bm, BM_VERT | BM_EDGE | BM_FACE); - struct GPUBatch *geom_faces = DRW_mesh_batch_cache_get_triangles_with_select_id(me); + struct GPUBatch *geom_faces; DRWShadingGroup *face_shgrp; if (select_mode & SCE_SELECT_FACE) { + geom_faces = DRW_mesh_batch_cache_get_triangles_with_select_id(me); face_shgrp = DRW_shgroup_create_sub(stl->g_data->shgrp_face_flat); DRW_shgroup_uniform_int_copy(face_shgrp, "offset", *(int *)&initial_offset); @@ -103,6 +104,7 @@ static void draw_select_id_edit_mesh(SELECTID_StorageList *stl, *r_face_offset = initial_offset + em->bm->totface; } else { + geom_faces = DRW_mesh_batch_cache_get_surface(me); face_shgrp = stl->g_data->shgrp_face_unif; DRW_shgroup_uniform_int_copy(face_shgrp, "id", 0); *r_face_offset = initial_offset; -- cgit v1.2.3