Depsgraph: Bind view layer by index
Makes it a bit slower to evaluate single view layer, but this is does not happen often, and overall number of layers is not very high.
This commit is contained in:
parent
ca2484e090
commit
9c406b786f
|
@ -173,6 +173,10 @@ void BKE_layer_eval_view_layer(const struct EvaluationContext *eval_ctx,
|
|||
struct ID *owner_id,
|
||||
struct ViewLayer *view_layer);
|
||||
|
||||
void BKE_layer_eval_view_layer_indexed(const struct EvaluationContext *eval_ctx,
|
||||
struct ID *owner_id,
|
||||
int view_layer_index);
|
||||
|
||||
/* iterators */
|
||||
|
||||
void BKE_selected_objects_iterator_begin(BLI_Iterator *iter, void *data_in);
|
||||
|
|
|
@ -2385,7 +2385,7 @@ static void layer_eval_collections_recurse(const EvaluationContext *eval_ctx,
|
|||
|
||||
void BKE_layer_eval_view_layer(const struct EvaluationContext *eval_ctx,
|
||||
struct ID *owner_id,
|
||||
struct ViewLayer *view_layer)
|
||||
ViewLayer *view_layer)
|
||||
{
|
||||
layer_eval_layer_collection_pre(owner_id, view_layer);
|
||||
layer_eval_collections_recurse(eval_ctx,
|
||||
|
@ -2394,6 +2394,18 @@ void BKE_layer_eval_view_layer(const struct EvaluationContext *eval_ctx,
|
|||
layer_eval_layer_collection_post(view_layer);
|
||||
}
|
||||
|
||||
void BKE_layer_eval_view_layer_indexed(const struct EvaluationContext *eval_ctx,
|
||||
struct ID *owner_id,
|
||||
int view_layer_index)
|
||||
{
|
||||
BLI_assert(GS(owner_id->name) == ID_SCE);
|
||||
BLI_assert(view_layer_index >= 0);
|
||||
Scene *scene = (Scene *)owner_id;
|
||||
ViewLayer *view_layer = BLI_findlink(&scene->view_layers, view_layer_index);
|
||||
BLI_assert(view_layer != NULL);
|
||||
BKE_layer_eval_view_layer(eval_ctx, owner_id, view_layer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Free any static allocated memory.
|
||||
*/
|
||||
|
|
|
@ -157,12 +157,14 @@ void DepsgraphNodeBuilder::build_view_layer(
|
|||
build_movieclip(clip);
|
||||
}
|
||||
/* Collections. */
|
||||
int view_layer_index = BLI_findindex(&scene->view_layers, view_layer);
|
||||
BLI_assert(view_layer_index != -1);
|
||||
add_operation_node(&scene->id,
|
||||
DEG_NODE_TYPE_LAYER_COLLECTIONS,
|
||||
function_bind(BKE_layer_eval_view_layer,
|
||||
function_bind(BKE_layer_eval_view_layer_indexed,
|
||||
_1,
|
||||
&scene_cow->id,
|
||||
view_layer_cow),
|
||||
view_layer_index),
|
||||
DEG_OPCODE_VIEW_LAYER_EVAL);
|
||||
/* Parameters evaluation for scene relations mainly. */
|
||||
add_operation_node(&scene->id,
|
||||
|
|
Loading…
Reference in New Issue