diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index 0f68f317984..3442f040bba 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -127,7 +127,9 @@ static void modifier_walk(void *user_data, { BuilderWalkUserData *data = (BuilderWalkUserData *)user_data; if (*obpoin) { - data->builder->build_object(*obpoin, DEG_ID_LINKED_INDIRECTLY); + data->builder->build_object(NULL, + *obpoin, + DEG_ID_LINKED_INDIRECTLY); } } @@ -140,7 +142,9 @@ void constraint_walk(bConstraint * /*con*/, if (*idpoin) { ID *id = *idpoin; if (GS(id->name) == ID_OB) { - data->builder->build_object((Object *)id, DEG_ID_LINKED_INDIRECTLY); + data->builder->build_object(NULL, + (Object *)id, + DEG_ID_LINKED_INDIRECTLY); } } } @@ -392,13 +396,15 @@ void DepsgraphNodeBuilder::build_group(Group *group) group_id->tag |= LIB_TAG_DOIT; LINKLIST_FOREACH (GroupObject *, go, &group->gobject) { - build_object(go->ob, DEG_ID_LINKED_INDIRECTLY); + build_object(NULL, go->ob, DEG_ID_LINKED_INDIRECTLY); } } -void DepsgraphNodeBuilder::build_object(Object *object, +void DepsgraphNodeBuilder::build_object(Base *base, + Object *object, eDepsNode_LinkedState_Type linked_state) { + (void)base; /* Skip rest of components if the ID node was already there. */ if (object->id.tag & LIB_TAG_DOIT) { IDDepsNode *id_node = find_id_node(&object->id); @@ -406,17 +412,15 @@ void DepsgraphNodeBuilder::build_object(Object *object, return; } object->id.tag |= LIB_TAG_DOIT; - /* Create ID node for object and begin init. */ IDDepsNode *id_node = add_id_node(&object->id); id_node->linked_state = linked_state; - object->customdata_mask = 0; /* Transform. */ build_object_transform(object); /* Parent. */ if (object->parent != NULL) { - build_object(object->parent, linked_state); + build_object(NULL, object->parent, linked_state); } /* Modifiers. */ if (object->modifiers.first != NULL) { @@ -450,7 +454,7 @@ void DepsgraphNodeBuilder::build_object(Object *object, /* Object that this is a proxy for. */ if (object->proxy) { object->proxy->proxy_from = object; - build_object(object->proxy, DEG_ID_LINKED_INDIRECTLY); + build_object(NULL, object->proxy, DEG_ID_LINKED_INDIRECTLY); } /* Object dupligroup. */ if (object->dup_group != NULL) { @@ -1025,13 +1029,13 @@ void DepsgraphNodeBuilder::build_obdata_geom(Object *object) */ Curve *cu = (Curve *)obdata; if (cu->bevobj != NULL) { - build_object(cu->bevobj, DEG_ID_LINKED_INDIRECTLY); + build_object(NULL, cu->bevobj, DEG_ID_LINKED_INDIRECTLY); } if (cu->taperobj != NULL) { - build_object(cu->taperobj, DEG_ID_LINKED_INDIRECTLY); + build_object(NULL, cu->taperobj, DEG_ID_LINKED_INDIRECTLY); } if (object->type == OB_FONT && cu->textoncurve != NULL) { - build_object(cu->textoncurve, DEG_ID_LINKED_INDIRECTLY); + build_object(NULL, cu->textoncurve, DEG_ID_LINKED_INDIRECTLY); } break; } @@ -1172,7 +1176,7 @@ void DepsgraphNodeBuilder::build_nodetree(bNodeTree *ntree) build_image((Image *)id); } else if (id_type == ID_OB) { - build_object((Object *)id, DEG_ID_LINKED_INDIRECTLY); + build_object(NULL, (Object *)id, DEG_ID_LINKED_INDIRECTLY); } else if (id_type == ID_SCE) { /* Scenes are used by compositor trees, and handled by render diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h index 84ae993ba17..853a6b7f15d 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h @@ -34,6 +34,7 @@ #include "DEG_depsgraph.h" /* used for DEG_depsgraph_use_copy_on_write() */ +struct Base; struct CacheFile; struct bGPdata; struct ListBase; @@ -161,7 +162,8 @@ struct DepsgraphNodeBuilder { ViewLayer *view_layer, eDepsNode_LinkedState_Type linked_state); void build_group(Group *group); - void build_object(Object *object, + void build_object(Base *base, + Object *object, eDepsNode_LinkedState_Type linked_state); void build_object_data(Object *object); void build_object_transform(Object *object); diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc index 70dfb3b8007..c4542660c8b 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc @@ -302,7 +302,8 @@ void DepsgraphNodeBuilder::build_rig(Object *object) /* Custom shape. */ /* NOTE: Custom shape datablock is already remapped to CoW version. */ if (pchan->custom != NULL) { - build_object(get_orig_datablock(pchan->custom), + build_object(NULL, + get_orig_datablock(pchan->custom), DEG_ID_LINKED_INDIRECTLY); } } 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 96a7108d153..092dec1f65e 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 @@ -104,13 +104,13 @@ void DepsgraphNodeBuilder::build_view_layer(Scene *scene, /* scene objects */ int select_color = 1; - LINKLIST_FOREACH(Base *, base, &view_layer->object_bases) { + LINKLIST_FOREACH(Base *, base, &view_layer_cow->object_bases) { /* object itself */ - build_object(base->object, linked_state); + build_object(base, base->object, linked_state); base->object->select_color = select_color++; } if (scene->camera != NULL) { - build_object(scene->camera, linked_state); + build_object(NULL, scene->camera, linked_state); } /* rigidbody */