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>2019-04-03 15:50:21 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2019-04-03 15:50:21 +0300
commitba2a81bcf18236cd79a996a8cc31429ffbc4b566 (patch)
tree5b2cacab20c666d6ff87abc750888e27be8dc08d
parent382b2a9c66a9f8b64581dc2a360dffbbbe706e21 (diff)
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.
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_rna.cc15
1 files changed, 13 insertions, 2 deletions
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) {