[Bf-blender-cvs] [df115dec055] temp-geometry-nodes-expandable-geometry-socket-prototype: show domain dropdown in socket

Jacques Lucke noreply at git.blender.org
Tue Aug 3 14:47:33 CEST 2021


Commit: df115dec055535ba3b48929054ccc9e1669b9ce0
Author: Jacques Lucke
Date:   Tue Aug 3 14:47:19 2021 +0200
Branches: temp-geometry-nodes-expandable-geometry-socket-prototype
https://developer.blender.org/rBdf115dec055535ba3b48929054ccc9e1669b9ce0

show domain dropdown in socket

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

M	source/blender/makesdna/DNA_node_types.h
M	source/blender/makesrna/RNA_access.h
M	source/blender/makesrna/intern/rna_nodetree.c
M	source/blender/nodes/NOD_static_types.h
M	source/blender/nodes/geometry/nodes/node_geo_geometry_expander.cc

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

diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index 22906bc7229..89f33e04867 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -1433,7 +1433,7 @@ typedef struct GeometryExpanderOutput {
 
 typedef struct NodeGeometryGeometryExpander {
   ListBase outputs;
-} NodeGeometryExpander;
+} NodeGeometryGeometryExpander;
 
 /* script node mode */
 #define NODE_SCRIPT_INTERNAL 0
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 97615016016..e45d93d162a 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -283,6 +283,7 @@ extern StructRNA RNA_FreestyleModuleSettings;
 extern StructRNA RNA_FreestyleSettings;
 extern StructRNA RNA_Function;
 extern StructRNA RNA_FunctionNode;
+extern StructRNA RNA_GeometryExpanderOutput;
 extern StructRNA RNA_GPencilFrame;
 extern StructRNA RNA_GPencilInterpolateSettings;
 extern StructRNA RNA_GPencilLayer;
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 3d4256db335..1cd95f37bff 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -10192,6 +10192,33 @@ static void def_geo_raycast(StructRNA *srna)
   RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_socket_update");
 }
 
+static void def_geo_geometry_expander_output(BlenderRNA *brna)
+{
+  StructRNA *srna;
+  PropertyRNA *prop;
+
+  srna = RNA_def_struct(brna, "GeometryExpanderOutput", NULL);
+
+  prop = RNA_def_property(srna, "domain", PROP_ENUM, PROP_NONE);
+  RNA_def_property_enum_items(prop, rna_enum_attribute_domain_items);
+  RNA_def_property_ui_text(prop, "Domain", "");
+  /* TODO: Update callback. */
+  RNA_def_property_update(prop, NC_NODE | NA_EDITED, NULL);
+}
+
+static void def_geo_geometry_expander(StructRNA *srna)
+{
+  PropertyRNA *prop;
+
+  RNA_def_struct_sdna_from(srna, "NodeGeometryGeometryExpander", "storage");
+
+  prop = RNA_def_property(srna, "outputs", PROP_COLLECTION, PROP_NONE);
+  RNA_def_property_collection_sdna(prop, NULL, "outputs", NULL);
+  RNA_def_property_struct_type(prop, "GeometryExpanderOutput");
+  RNA_def_property_ui_text(prop, "Expander Outputs", "");
+  RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+}
+
 /* -------------------------------------------------------------------------- */
 
 static void rna_def_shader_node(BlenderRNA *brna)
@@ -10239,6 +10266,8 @@ static void rna_def_geometry_node(BlenderRNA *brna)
   RNA_def_struct_ui_text(srna, "Geometry Node", "");
   RNA_def_struct_sdna(srna, "bNode");
   RNA_def_struct_register_funcs(srna, "rna_GeometryNode_register", "rna_Node_unregister", NULL);
+
+  def_geo_geometry_expander_output(brna);
 }
 
 static void rna_def_function_node(BlenderRNA *brna)
diff --git a/source/blender/nodes/NOD_static_types.h b/source/blender/nodes/NOD_static_types.h
index 630e9be1528..9d78e729f0b 100644
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@ -309,7 +309,7 @@ DefNode(GeometryNode, GEO_NODE_CURVE_TO_POINTS, def_geo_curve_to_points, "CURVE_
 DefNode(GeometryNode, GEO_NODE_CURVE_TRIM, def_geo_curve_trim, "CURVE_TRIM", CurveTrim, "Curve Trim", "")
 DefNode(GeometryNode, GEO_NODE_DELETE_GEOMETRY, 0, "DELETE_GEOMETRY", DeleteGeometry, "Delete Geometry", "")
 DefNode(GeometryNode, GEO_NODE_EDGE_SPLIT, 0, "EDGE_SPLIT", EdgeSplit, "Edge Split", "")
-DefNode(GeometryNode, GEO_NODE_GEOMETRY_EXPANDER, 0, "GEOMETRY_EXPANDER", GeometryExpander, "Geometry Expander", "")
+DefNode(GeometryNode, GEO_NODE_GEOMETRY_EXPANDER, def_geo_geometry_expander, "GEOMETRY_EXPANDER", GeometryExpander, "Geometry Expander", "")
 DefNode(GeometryNode, GEO_NODE_INPUT_MATERIAL, def_geo_input_material, "INPUT_MATERIAL", InputMaterial, "Material", "")
 DefNode(GeometryNode, GEO_NODE_IS_VIEWPORT, 0, "IS_VIEWPORT", IsViewport, "Is Viewport", "")
 DefNode(GeometryNode, GEO_NODE_JOIN_GEOMETRY, 0, "JOIN_GEOMETRY", JoinGeometry, "Join Geometry", "")
diff --git a/source/blender/nodes/geometry/nodes/node_geo_geometry_expander.cc b/source/blender/nodes/geometry/nodes/node_geo_geometry_expander.cc
index 5d08e9d9b82..16d4c0bef0f 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_geometry_expander.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_geometry_expander.cc
@@ -41,7 +41,25 @@ static void geo_node_geometry_expander_layout(uiLayout *layout,
 static bool geo_node_geometry_expande_socket_layout(
     const bContext *C, uiLayout *layout, bNodeTree *ntree, bNode *node, bNodeSocket *socket)
 {
-  uiItemL(layout, "Hello World", ICON_NONE);
+  if (socket->in_out == SOCK_IN) {
+    return false;
+  }
+
+  const NodeGeometryGeometryExpander *storage = (const NodeGeometryGeometryExpander *)
+                                                    node->storage;
+  const int socket_index = BLI_findindex(&node->outputs, socket);
+
+  GeometryExpanderOutput *expander_output = (GeometryExpanderOutput *)BLI_findlink(
+      &storage->outputs, socket_index);
+
+  PointerRNA expander_output_ptr;
+  RNA_pointer_create(
+      &ntree->id, &RNA_GeometryExpanderOutput, expander_output, &expander_output_ptr);
+
+  uiLayout *row = uiLayoutRow(layout, true);
+  uiItemL(row, socket->name, ICON_NONE);
+  uiItemR(row, &expander_output_ptr, "domain", 0, "", ICON_NONE);
+
   return true;
 }



More information about the Bf-blender-cvs mailing list