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.
This commit is contained in:
Sergey Sharybin 2019-04-03 14:50:21 +02:00
parent 382b2a9c66
commit ba2a81bcf1
Notes: blender-bot 2023-02-14 05:44:22 +01:00
Referenced by issue #62817, some drivers don't update during animation render
1 changed files with 13 additions and 2 deletions

View File

@ -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) {