[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