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:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-01-16 13:53:34 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-01-16 13:54:32 +0300
commit0b500ba1479550c9d6696889f74b945ad0c0dbd5 (patch)
tree3d25c228fbb0ee8c618a479265a514536747e0dc /source/blender/depsgraph/intern/builder/deg_builder_relations.h
parent45b5de9cb390bee1f3d9888cdaa3f4365f1a1479 (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.h13
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_;