[Bf-blender-cvs] [a795d243cb3] temp-attribute-processor: reference group in attribute processor

Jacques Lucke noreply at git.blender.org
Thu May 27 12:51:40 CEST 2021


Commit: a795d243cb3c6c552e20507d12b20339a41ff482
Author: Jacques Lucke
Date:   Mon May 24 16:07:24 2021 +0200
Branches: temp-attribute-processor
https://developer.blender.org/rBa795d243cb3c6c552e20507d12b20339a41ff482

reference group in attribute processor

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

M	source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M	source/blender/depsgraph/intern/builder/deg_builder_relations.cc
M	source/blender/makesrna/intern/rna_nodetree.c
M	source/blender/nodes/geometry/nodes/node_geo_attribute_processor.cc

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

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index 77661b4870a..875b62ee972 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -1736,7 +1736,7 @@ void DepsgraphNodeBuilder::build_nodetree(bNodeTree *ntree)
     else if (id_type == ID_MC) {
       build_movieclip((MovieClip *)id);
     }
-    else if (ELEM(bnode->type, NODE_GROUP, NODE_CUSTOM_GROUP)) {
+    else if (ELEM(bnode->type, NODE_GROUP, NODE_CUSTOM_GROUP, GEO_NODE_ATTRIBUTE_PROCESSOR)) {
       bNodeTree *group_ntree = (bNodeTree *)id;
       build_nodetree(group_ntree);
     }
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index 8a02228146a..81a12ee2874 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -2490,7 +2490,7 @@ void DepsgraphRelationBuilder::build_nodetree(bNodeTree *ntree)
       OperationKey clip_key(id, NodeType::PARAMETERS, OperationCode::MOVIECLIP_EVAL);
       add_relation(clip_key, shading_key, "Clip -> Node");
     }
-    else if (ELEM(bnode->type, NODE_GROUP, NODE_CUSTOM_GROUP)) {
+    else if (ELEM(bnode->type, NODE_GROUP, NODE_CUSTOM_GROUP, GEO_NODE_ATTRIBUTE_PROCESSOR)) {
       bNodeTree *group_ntree = (bNodeTree *)id;
       build_nodetree(group_ntree);
       ComponentKey group_shading_key(&group_ntree->id, NodeType::SHADING);
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 56197a32a0e..4ac27f2c6ce 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -9871,8 +9871,18 @@ static void def_geo_input_material(StructRNA *srna)
   RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 }
 
-static void def_geo_attribute_processor(StructRNA *UNUSED(srna))
+static void def_geo_attribute_processor(StructRNA *srna)
 {
+  PropertyRNA *prop;
+
+  /* TODO: Only allow groups of correct type. */
+  prop = RNA_def_property(srna, "node_tree", PROP_POINTER, PROP_NONE);
+  RNA_def_property_pointer_sdna(prop, NULL, "id");
+  RNA_def_property_struct_type(prop, "NodeTree");
+  RNA_def_property_flag(prop, PROP_EDITABLE);
+  RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
+  RNA_def_property_ui_text(prop, "Node Tree", "");
+  RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_NodeGroup_update");
 }
 
 /* -------------------------------------------------------------------------- */
diff --git a/source/blender/nodes/geometry/nodes/node_geo_attribute_processor.cc b/source/blender/nodes/geometry/nodes/node_geo_attribute_processor.cc
index 2620c663752..5422552fa7a 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_attribute_processor.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_attribute_processor.cc
@@ -28,10 +28,10 @@
 
 #include "node_geometry_util.hh"
 
-static void geo_node_attribute_processor_layout(uiLayout *UNUSED(layout),
-                                                bContext *UNUSED(C),
-                                                PointerRNA *UNUSED(ptr))
+static void geo_node_attribute_processor_layout(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
+  uiTemplateIDBrowse(
+      layout, C, ptr, "node_tree", nullptr, nullptr, nullptr, UI_TEMPLATE_ID_FILTER_ALL, nullptr);
 }
 
 static void geo_node_attribute_processor_init(bNodeTree *UNUSED(ntree), bNode *node)
@@ -44,6 +44,11 @@ static void geo_node_attribute_processor_init(bNodeTree *UNUSED(ntree), bNode *n
 
 namespace blender::nodes {
 
+static void geo_node_attribute_processor_group_update(bNodeTree *UNUSED(ntree),
+                                                      bNode *UNUSED(node))
+{
+}
+
 static void geo_node_attribute_processor_exec(GeoNodeExecParams params)
 {
   GeometrySet geometry_set = params.extract_input<GeometrySet>("Geometry");
@@ -61,12 +66,13 @@ void register_node_type_geo_attribute_processor()
   static bNodeType ntype;
 
   geo_node_type_base(
-      &ntype, GEO_NODE_ATTRIBUTE_PROCESSOR, "Attribute Processor", NODE_CLASS_ATTRIBUTE, 0);
+      &ntype, GEO_NODE_ATTRIBUTE_PROCESSOR, "Attribute Processor", NODE_CLASS_GROUP, 0);
   node_type_init(&ntype, geo_node_attribute_processor_init);
   node_type_storage(&ntype,
                     "NodeGeometryAttributeProcessor",
                     node_free_standard_storage,
                     node_copy_standard_storage);
+  node_type_group_update(&ntype, blender::nodes::geo_node_attribute_processor_group_update);
   ntype.geometry_node_execute = blender::nodes::geo_node_attribute_processor_exec;
   ntype.draw_buttons = geo_node_attribute_processor_layout;
   nodeRegisterType(&ntype);



More information about the Bf-blender-cvs mailing list