Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_object.h2
-rw-r--r--source/blender/blenkernel/intern/object_update.c9
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes.cc6
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes.h1
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc6
5 files changed, 16 insertions, 8 deletions
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 2f352a880ca..1d28d7f52c7 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -248,7 +248,7 @@ void BKE_object_data_select_update(
void BKE_object_eval_flush_base_flags(
struct Depsgraph *depsgraph,
- struct ViewLayer *view_layer,
+ struct Scene *scene, const int view_layer_index,
struct Object *object, int base_index,
const bool is_from_set);
diff --git a/source/blender/blenkernel/intern/object_update.c b/source/blender/blenkernel/intern/object_update.c
index d043fcc9d1c..c8612c1d55c 100644
--- a/source/blender/blenkernel/intern/object_update.c
+++ b/source/blender/blenkernel/intern/object_update.c
@@ -445,9 +445,14 @@ void BKE_object_data_select_update(Depsgraph *UNUSED(depsgraph),
}
void BKE_object_eval_flush_base_flags(Depsgraph *UNUSED(depsgraph),
- ViewLayer *view_layer,
- Object *object, int base_index, bool is_from_set)
+ Scene *scene, const int view_layer_index,
+ Object *object, int base_index,
+ const bool is_from_set)
{
+ /* TODO(sergey): Avoid list lookup. */
+ BLI_assert(view_layer_index >= 0);
+ ViewLayer *view_layer = BLI_findlink(&scene->view_layers, view_layer_index);
+ BLI_assert(view_layer != NULL);
BLI_assert(view_layer->object_bases_array != NULL);
BLI_assert(base_index >= 0);
BLI_assert(base_index < MEM_allocN_len(view_layer->object_bases_array) / sizeof(Base *));
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index af321cb70e8..2e251c84fda 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -526,14 +526,16 @@ void DepsgraphNodeBuilder::build_object_flags(
if (base_index == -1) {
return;
}
- /* TODO(sergey): Is this really best component to be used? */
+ Scene *scene_cow = get_cow_datablock(scene_);
Object *object_cow = get_cow_datablock(object);
const bool is_from_set = (linked_state == DEG_ID_LINKED_VIA_SET);
+ /* TODO(sergey): Is this really best component to be used? */
add_operation_node(&object->id,
DEG_NODE_TYPE_LAYER_COLLECTIONS,
function_bind(BKE_object_eval_flush_base_flags,
_1,
- view_layer_,
+ scene_cow,
+ view_layer_index_,
object_cow, base_index,
is_from_set),
DEG_OPCODE_OBJECT_BASE_FLAGS);
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
index 757cacc6050..0180aa3b734 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
@@ -234,6 +234,7 @@ protected:
/* State which demotes currently built entities. */
Scene *scene_;
ViewLayer *view_layer_;
+ int view_layer_index_;
GHash *cow_id_hash_;
BuilderMap built_map_;
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc
index 390619aeeaa..750b0054ee5 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc
@@ -70,6 +70,8 @@ void DepsgraphNodeBuilder::build_view_layer(
ViewLayer *view_layer,
eDepsNode_LinkedState_Type linked_state)
{
+ view_layer_index_ = BLI_findindex(&scene->view_layers, view_layer);
+ BLI_assert(view_layer_index_ != -1);
/* Scene ID block. */
add_id_node(&scene->id);
/* Time source. */
@@ -134,14 +136,12 @@ 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_indexed,
_1,
&scene_cow->id,
- view_layer_index),
+ view_layer_index_),
DEG_OPCODE_VIEW_LAYER_EVAL);
/* Parameters evaluation for scene relations mainly. */
add_operation_node(&scene->id,