diff options
Diffstat (limited to 'source/blender/depsgraph/intern/builder/deg_builder_nodes.cc')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_nodes.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index 20169f0a961..56168739fae 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -1215,7 +1215,19 @@ void DepsgraphNodeBuilder::build_parameters(ID *id) op_node = add_operation_node(id, NodeType::PARAMETERS, OperationCode::PARAMETERS_ENTRY); op_node->set_as_entry(); /* Generic evaluation node. */ - add_operation_node(id, NodeType::PARAMETERS, OperationCode::PARAMETERS_EVAL); + + if (ID_TYPE_SUPPORTS_PARAMS_WITHOUT_COW(GS(id->name))) { + ID *id_cow = get_cow_id(id); + add_operation_node( + id, + NodeType::PARAMETERS, + OperationCode::PARAMETERS_EVAL, + [id_cow, id](::Depsgraph * /*depsgraph*/) { BKE_id_eval_properties_copy(id_cow, id); }); + } + else { + add_operation_node(id, NodeType::PARAMETERS, OperationCode::PARAMETERS_EVAL); + } + /* Explicit exit operation. */ op_node = add_operation_node(id, NodeType::PARAMETERS, OperationCode::PARAMETERS_EXIT); op_node->set_as_exit(); |