Fix T72660: Alembic caches are not properly updated by drivers

Drivers were not considered when building the dependency graph for
`CacheFile` datablocks.
This commit is contained in:
Sybren A. Stüvel 2020-01-28 16:15:40 +01:00
parent 864cb7f376
commit fd0bc7e002
Notes: blender-bot 2023-02-14 10:37:49 +01:00
Referenced by issue #72660, Alembic caches are not properly updated by drivers
1 changed files with 12 additions and 2 deletions

View File

@ -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");
}