diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-01-16 13:53:34 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-01-16 13:54:32 +0300 |
commit | 0b500ba1479550c9d6696889f74b945ad0c0dbd5 (patch) | |
tree | 3d25c228fbb0ee8c618a479265a514536747e0dc /source/blender/depsgraph/intern/builder/deg_builder_relations.h | |
parent | 45b5de9cb390bee1f3d9888cdaa3f4365f1a1479 (diff) |
Depsgraph: Fix fake cyclic dependencies for node tree drivers
There was a fake cyclic dependency happening when node of node tree is driving
another node of the same tree.
This is related to T53794, but more fixes is needed here.
Diffstat (limited to 'source/blender/depsgraph/intern/builder/deg_builder_relations.h')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.h b/source/blender/depsgraph/intern/builder/deg_builder_relations.h index 9558a726402..1a761f76744 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.h +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.h @@ -276,9 +276,22 @@ protected: DepsNodeHandle create_node_handle(const KeyType& key, const char *default_name = ""); + /* Check whether two keys correponds to the same bone from same armature. + * + * This is used by drivers relations builder to avoid possible fake + * dependency cycle when one bone property drives another property of the + * same bone. + */ template <typename KeyFrom, typename KeyTo> bool is_same_bone_dependency(const KeyFrom& key_from, const KeyTo& key_to); + /* Similar to above, but used to check whether driver is using node from + * the same node tree as a driver variable. + */ + template <typename KeyFrom, typename KeyTo> + bool is_nodetree_node_dependency(const KeyFrom& key_from, + const KeyTo& key_to); + private: /* State which never changes, same for the whole builder time. */ Main *bmain_; |