Advertisement
Guest User

Untitled

a guest
Aug 15th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.15 KB | None | 0 0
  1. diff --git a/source/blender/draw/engines/select/select_engine.c b/source/blender/draw/engines/select/select_engine.c
  2. index 35df6e1d31c..065fc790bd0 100644
  3. --- a/source/blender/draw/engines/select/select_engine.c
  4. +++ b/source/blender/draw/engines/select/select_engine.c
  5. @@ -280,26 +280,8 @@ static void select_cache_populate(void *vedata, Object *ob)
  6.        &ob->id, &draw_engine_select_type);
  7.  
  8.    if (!e_data.context.is_dirty && sel_data && sel_data->is_drawn) {
  9. -    /* The object indices have already been drawn, you need to redraw the
  10. -     * depth pass if a new object is added */
  11. -
  12. -    /* For now just make sure that the batches used in `select_cache_finish`
  13. -     * have been requested. */
  14. -    struct Mesh *me = ob->data;
  15. -    if (e_data.context.select_mode & SCE_SELECT_FACE) {
  16. -      DRW_mesh_batch_cache_get_triangles_with_select_id(me);
  17. -    }
  18. -    else {
  19. -      DRW_mesh_batch_cache_get_surface(me);
  20. -    }
  21. -
  22. -    if (e_data.context.select_mode & SCE_SELECT_EDGE) {
  23. -      DRW_mesh_batch_cache_get_edges_with_select_id(me);
  24. -    }
  25. -
  26. -    if (e_data.context.select_mode & SCE_SELECT_VERTEX) {
  27. -      DRW_mesh_batch_cache_get_verts_with_select_id(me);
  28. -    }
  29. +    /* The object indices have already been drawn.
  30. +     * Redraw the depth pass if a new object is added */
  31.      return;
  32.    }
  33.  
  34. @@ -341,6 +323,7 @@ static void select_cache_populate(void *vedata, Object *ob)
  35.  static void select_cache_finish(void *vedata)
  36.  {
  37.    SELECTID_StorageList *stl = ((SELECTID_Data *)vedata)->stl;
  38. +  const DRWContextState *draw_ctx = DRW_context_state_get();
  39.  
  40.    if (e_data.runtime_new_objects) {
  41.      /* Fill depth pass. */
  42. @@ -367,6 +350,12 @@ static void select_cache_finish(void *vedata)
  43.          struct GPUBatch *geom_verts = DRW_mesh_batch_cache_get_verts_with_select_id(me);
  44.          DRW_shgroup_call_obmat(stl->g_data->shgrp_depth_only, geom_verts, ob->obmat);
  45.        }
  46. +
  47. +      const bool is_paint_mode = draw_ctx->object_edit == NULL;
  48. +      const bool use_hide = !is_paint_mode || DRW_object_use_hide_faces(ob);
  49. +
  50. +      DRW_mesh_batch_cache_create_requested(
  51. +          ob, ob->data, draw_ctx->scene, is_paint_mode, use_hide);
  52.      }
  53.    }
  54.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement