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
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@blender.org>2020-01-28 18:15:40 +0300
committerSybren A. Stüvel <sybren@blender.org>2020-01-28 18:28:44 +0300
commitfd0bc7e002ced8ffd85e9aa3edcae173dbd13392 (patch)
treef198b3e7a853d60d5ace656b03b1eeb8cfa3927e /source/blender/depsgraph
parent864cb7f376816ccd05e6e143dab668329b070faa (diff)
Fix T72660: Alembic caches are not properly updated by drivers
Drivers were not considered when building the dependency graph for `CacheFile` datablocks.
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index fa7a63227f5..712d9d23128 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -200,6 +200,15 @@ bool check_id_has_anim_component(ID *id)
return (adt->action != NULL) || (!BLI_listbase_is_empty(&adt->nla_tracks));
}
+bool check_id_has_driver_component(ID *id)
+{
+ AnimData *adt = BKE_animdata_from_id(id);
+ if (adt == nullptr) {
+ return false;
+ }
+ return !BLI_listbase_is_empty(&adt->drivers);
+}
+
OperationCode bone_target_opcode(ID *target,
const char *subtarget,
ID *id,
@@ -2358,8 +2367,9 @@ void DepsgraphRelationBuilder::build_cachefile(CacheFile *cache_file)
/* Animation. */
build_animdata(&cache_file->id);
build_parameters(&cache_file->id);
- if (check_id_has_anim_component(&cache_file->id)) {
- ComponentKey animation_key(&cache_file->id, NodeType::ANIMATION);
+ if (check_id_has_anim_component(&cache_file->id) ||
+ check_id_has_driver_component(&cache_file->id)) {
+ ComponentKey animation_key(&cache_file->id, NodeType::PARAMETERS);
ComponentKey datablock_key(&cache_file->id, NodeType::CACHE);
add_relation(animation_key, datablock_key, "Datablock Animation");
}