diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-12-22 23:00:23 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-01-11 18:00:23 +0300 |
commit | 943852c0dc17bff74e3cc91d17c2eeb66adacf33 (patch) | |
tree | 875ddff567d967f327a553b0c1c3f4a4105e6f03 /source/blender/draw/intern/draw_cache.c | |
parent | bda2cd8ba5d14a39aef1927d168f2817d20bbaa8 (diff) |
Mesh Batch Cache: Put context evaluation out of batch cache
This is in order to be able to call DRW_mesh_batch_cache_create_requested
outside of the draw manager
Diffstat (limited to 'source/blender/draw/intern/draw_cache.c')
-rw-r--r-- | source/blender/draw/intern/draw_cache.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/source/blender/draw/intern/draw_cache.c b/source/blender/draw/intern/draw_cache.c index 96e263cdc30..6fe477b50c6 100644 --- a/source/blender/draw/intern/draw_cache.c +++ b/source/blender/draw/intern/draw_cache.c @@ -3749,16 +3749,23 @@ bool DRW_vbo_requested(GPUVertBuf *vbo) void drw_batch_cache_generate_requested(Object *ob) { + const DRWContextState *draw_ctx = DRW_context_state_get(); + const ToolSettings *ts = draw_ctx->scene->toolsettings; + const int mode = CTX_data_mode_enum_ex(draw_ctx->object_edit, draw_ctx->obact, draw_ctx->object_mode); + const bool is_paint_mode = ELEM(mode, CTX_MODE_PAINT_TEXTURE, CTX_MODE_PAINT_VERTEX, CTX_MODE_PAINT_WEIGHT); + const bool use_hide = (ob->type == OB_MESH) && ((is_paint_mode && (ob == draw_ctx->obact)) || + ((mode == CTX_MODE_EDIT_MESH) && BKE_object_is_in_editmode(ob))); + struct Mesh *mesh_eval = ob->runtime.mesh_eval; switch (ob->type) { case OB_MESH: - DRW_mesh_batch_cache_create_requested(ob, (Mesh *)ob->data); + DRW_mesh_batch_cache_create_requested(ob, (Mesh *)ob->data, ts, is_paint_mode, use_hide); break; case OB_CURVE: case OB_FONT: case OB_SURF: if (mesh_eval) { - DRW_mesh_batch_cache_create_requested(ob, mesh_eval); + DRW_mesh_batch_cache_create_requested(ob, mesh_eval, ts, is_paint_mode, use_hide); } DRW_curve_batch_cache_create_requested(ob); break; |