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:
Diffstat (limited to 'source/blender/depsgraph/intern/builder/deg_builder_relations_impl.h')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations_impl.h29
1 files changed, 28 insertions, 1 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations_impl.h b/source/blender/depsgraph/intern/builder/deg_builder_relations_impl.h
index 5b1f7be8e45..b7dd05517cf 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations_impl.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations_impl.h
@@ -164,7 +164,7 @@ bool DepsgraphRelationBuilder::is_same_bone_dependency(const KeyFrom& key_from,
}
template <typename KeyFrom, typename KeyTo>
-bool DepsgraphRelationBuilder::is_nodetree_node_dependency(
+bool DepsgraphRelationBuilder::is_same_nodetree_node_dependency(
const KeyFrom& key_from,
const KeyTo& key_to)
{
@@ -196,4 +196,31 @@ bool DepsgraphRelationBuilder::is_nodetree_node_dependency(
return true;
}
+template <typename KeyFrom, typename KeyTo>
+bool DepsgraphRelationBuilder::is_same_shapekey_dependency(
+ const KeyFrom& key_from,
+ const KeyTo& key_to)
+{
+ /* Get operations for requested keys. */
+ DepsNode *node_from = get_node(key_from);
+ DepsNode *node_to = get_node(key_to);
+ if (node_from == NULL || node_to == NULL) {
+ return false;
+ }
+ OperationDepsNode *op_from = node_from->get_exit_operation();
+ OperationDepsNode *op_to = node_to->get_entry_operation();
+ if (op_from == NULL || op_to == NULL) {
+ return false;
+ }
+ /* Check if this is actually a shape key datablock. */
+ if (GS(op_from->owner->owner->id->name) != ID_KE) {
+ return false;
+ }
+ /* Different key data blocks. */
+ if (op_from->owner->owner != op_to->owner->owner) {
+ return false;
+ }
+ return true;
+}
+
} // namespace DEG