diff options
Diffstat (limited to 'source/blender/blenkernel/intern/context.c')
-rw-r--r-- | source/blender/blenkernel/intern/context.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c index 4f1dd18b39c..bc75958ba33 100644 --- a/source/blender/blenkernel/intern/context.c +++ b/source/blender/blenkernel/intern/context.c @@ -57,6 +57,8 @@ #include "BKE_sound.h" #include "BKE_workspace.h" +#include "RE_engine.h" + #include "RNA_access.h" #ifdef WITH_PYTHON @@ -927,10 +929,36 @@ SceneLayer *CTX_data_scene_layer(const bContext *C) return sl; } else { - return BKE_scene_layer_from_workspace_get(CTX_wm_workspace(C)); + return BKE_scene_layer_from_workspace_get(CTX_data_scene(C), CTX_wm_workspace(C)); + } +} + +ViewRender *CTX_data_view_render(const bContext *C) +{ + ViewRender *view_render; + + if (ctx_data_pointer_verify(C, "view_render", (void *)&view_render)) { + return view_render; + } + else { + Scene *scene = CTX_data_scene(C); + WorkSpace *workspace = CTX_wm_workspace(C); + return BKE_viewrender_get(scene, workspace); } } +RenderEngineType *CTX_data_engine(const bContext *C) +{ + const char *engine_id; + + if (!ctx_data_pointer_verify(C, "engine", (void *)&engine_id)) { + ViewRender *view_render = CTX_data_view_render(C); + engine_id = view_render->engine_id; + } + + return RE_engines_find(engine_id); +} + /** * This is tricky. Sometimes the user overrides the render_layer * but not the scene_collection. In this case what to do? @@ -1247,7 +1275,8 @@ void CTX_data_eval_ctx(const bContext *C, EvaluationContext *eval_ctx) Scene *scene = CTX_data_scene(C); SceneLayer *scene_layer = CTX_data_scene_layer(C); + RenderEngineType *engine = CTX_data_engine(C); DEG_evaluation_context_init_from_scene(eval_ctx, - scene, scene_layer, + scene, scene_layer, engine, DAG_EVAL_VIEWPORT); } |