[Bf-blender-cvs] [ba2a81bcf18] master: Fix T62817: Can't drive modifier property with another one

Sergey Sharybin noreply at git.blender.org
Wed Apr 3 14:52:06 CEST 2019


Commit: ba2a81bcf18236cd79a996a8cc31429ffbc4b566
Author: Sergey Sharybin
Date:   Wed Apr 3 14:50:21 2019 +0200
Branches: master
https://developer.blender.org/rBba2a81bcf18236cd79a996a8cc31429ffbc4b566

Fix T62817: Can't drive modifier property with another one

Random place in the modifier stack can not be referenced,
so it doesn't make sense to sue GEOMETRY component as a
FROM operation.

So now drivers on modifiers are driving GEOMETRY component,
but are using PARAMETERS as a source for variables.

===================================================================

M	source/blender/depsgraph/intern/builder/deg_builder_rna.cc

===================================================================

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_rna.cc b/source/blender/depsgraph/intern/builder/deg_builder_rna.cc
index 3e9c3811fb5..c8c6cc75418 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_rna.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_rna.cc
@@ -177,7 +177,7 @@ Node *RNANodeQuery::find_node(const PointerRNA *ptr,
 RNANodeIdentifier RNANodeQuery::construct_node_identifier(
         const PointerRNA *ptr,
         const PropertyRNA *prop,
-        RNAPointerSource /*source*/)
+        RNAPointerSource source)
 {
 	RNANodeIdentifier node_identifier;
 	if (ptr->type == NULL) {
@@ -265,7 +265,18 @@ RNANodeIdentifier RNANodeQuery::construct_node_identifier(
 		}
 	}
 	else if (RNA_struct_is_a(ptr->type, &RNA_Modifier)) {
-		node_identifier.type = NodeType::GEOMETRY;
+		/* When modifier is used as FROM operation this is likely referencing to
+		 * the property (for example, modifier's influence).
+		 * But when it's used as TO operation, this is geometry component. */
+		switch (source) {
+			case RNAPointerSource::ENTRY:
+				node_identifier.type = NodeType::GEOMETRY;
+				break;
+			case RNAPointerSource::EXIT:
+				node_identifier.type = NodeType::PARAMETERS;
+				node_identifier.operation_code = OperationCode::PARAMETERS_EVAL;
+				break;
+		}
 		return node_identifier;
 	}
 	else if (ptr->type == &RNA_Object) {



More information about the Bf-blender-cvs mailing list