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/makesrna/intern/rna_nodetree.c')
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c34
1 files changed, 31 insertions, 3 deletions
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 81e11e93fcd..310f04e54cc 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -2443,9 +2443,6 @@ static void rna_Node_select_set(PointerRNA *ptr, bool value)
nodeSetSelected(node, value);
}
-void nodeGeometryExpanderUpdateOutputNameCache(GeometryExpanderOutput *expander_output,
- const bNodeTree *ntree);
-
static void rna_Node_name_set(PointerRNA *ptr, const char *value)
{
bNodeTree *ntree = (bNodeTree *)ptr->owner_id;
@@ -2479,6 +2476,36 @@ static void rna_Node_name_set(PointerRNA *ptr, const char *value)
BKE_animdata_fix_paths_rename_all(NULL, "nodes", oldname, node->name);
}
+void rna_NodeSocket_add_to_geometry_set(PointerRNA *ptr, const bool value)
+{
+ bNodeTree *ntree = (bNodeTree *)ptr->owner_id;
+ bNodeSocket *socket = (bNodeSocket *)ptr->data;
+ bNode *node;
+ nodeFindNode(ntree, socket, &node, NULL);
+ if (value) {
+ socket->flag |= SOCK_ADD_ATTRIBUTE_TO_GEOMETRY;
+ }
+ else {
+ socket->flag &= ~SOCK_ADD_ATTRIBUTE_TO_GEOMETRY;
+ }
+
+ LISTBASE_FOREACH (bNode *, other_node, &ntree->nodes) {
+ if (other_node->type != GEO_NODE_GEOMETRY_EXPANDER) {
+ continue;
+ }
+ NodeGeometryGeometryExpander *storage = (NodeGeometryGeometryExpander *)other_node->storage;
+ LISTBASE_FOREACH (GeometryExpanderOutput *, expander_output, &storage->outputs) {
+ if (expander_output->type != GEOMETRY_EXPANDER_OUTPUT_TYPE_LOCAL) {
+ continue;
+ }
+ if (STREQ(expander_output->local_node_name, node->name) &&
+ STREQ(expander_output->local_socket_identifier, socket->identifier)) {
+ expander_output->is_outdated = !value;
+ }
+ }
+ }
+}
+
static bNodeSocket *rna_Node_inputs_new(ID *id,
bNode *node,
Main *bmain,
@@ -10404,6 +10431,7 @@ static void rna_def_node_socket(BlenderRNA *brna)
prop = RNA_def_property(srna, "add_to_geometry", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SOCK_ADD_ATTRIBUTE_TO_GEOMETRY);
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_NodeSocket_add_to_geometry_set");
RNA_def_property_ui_text(
prop,
"Add to Geometry",