[Bf-blender-cvs] [1f38c1f3b2e] gsoc-2021-porting-modifiers-to-nodes-solidify: - added offset and boundary data enums for nonmanifold mode.

Fabian Schempp noreply at git.blender.org
Thu Jun 10 21:02:05 CEST 2021


Commit: 1f38c1f3b2e9ccae1d2ed4d288153d326d884209
Author: Fabian Schempp
Date:   Wed Jun 9 07:49:45 2021 +0200
Branches: gsoc-2021-porting-modifiers-to-nodes-solidify
https://developer.blender.org/rB1f38c1f3b2e9ccae1d2ed4d288153d326d884209

- added offset and boundary data enums for nonmanifold mode.

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

M	source/blender/makesdna/DNA_node_types.h
M	source/blender/makesrna/intern/rna_nodetree.c
M	source/blender/nodes/geometry/nodes/node_geo_solidifiy.cc

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

diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h
index e92641491ae..b35ec0652cd 100644
--- a/source/blender/makesdna/DNA_node_types.h
+++ b/source/blender/makesdna/DNA_node_types.h
@@ -1240,6 +1240,9 @@ typedef struct NodeInputVector {
 typedef struct NodeGeometrySolidify{
   /* GeometryNodeAttributeInputMode */
   uint8_t mode;
+  uint8_t nonmanifold_offset_mode;
+  uint8_t nonmanifold_boundary_mode;
+  char _pad[5];
 } NodeGeometrySolidify;
 
 typedef struct NodeInputString {
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 71f7a665fad..21db024d3a6 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -485,6 +485,21 @@ static const EnumPropertyItem rna_node_geometry_solidify_mode[] = {
     {1, "MOD_SOLIDIFY_MODE_NONMANIFOLD",0, "Complex", "Complex"},
     {0, NULL, 0, NULL, NULL},
 };
+
+static const EnumPropertyItem rna_node_geometry_solidify_offset_mode[] = {
+    {0, "MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_FIXED", 0, "Fixed", "Fixed"},
+    {1, "MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_EVEN",0, "Even", "Even"},
+    {2, "MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_CONSTRAINTS",0, "Constraint", "Constraint"},
+    {0, NULL, 0, NULL, NULL},
+};
+
+static const EnumPropertyItem rna_node_geometry_solidify_boundary_mode[] = {
+    {0, "MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_NONE", 0, "Simple", "Simple"},
+    {1, "MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_ROUND",0, "Complex", "Complex"},
+    {2, "MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_FLAT",0, "Complex", "Complex"},
+    {0, NULL, 0, NULL, NULL},
+};
+
 static const EnumPropertyItem rna_node_geometry_attribute_input_type_items_vector[] = {
     ITEM_ATTRIBUTE,
     ITEM_VECTOR,
@@ -9537,6 +9552,16 @@ static void def_geo_solidify(StructRNA *srna)
   RNA_def_property_enum_items(prop, rna_node_geometry_solidify_mode);
   RNA_def_property_ui_text(prop, "Mode", "");
   RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_socket_update");
+
+  prop = RNA_def_property(srna, "nonmanifold_offset_mode", PROP_ENUM, PROP_NONE);
+  RNA_def_property_enum_items(prop, rna_node_geometry_solidify_offset_mode);
+  RNA_def_property_ui_text(prop, "Mode", "");
+  RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_socket_update");
+
+  prop = RNA_def_property(srna, "nonmanifold_boundary_mode", PROP_ENUM, PROP_NONE);
+  RNA_def_property_enum_items(prop, rna_node_geometry_solidify_boundary_mode);
+  RNA_def_property_ui_text(prop, "Mode", "");
+  RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_socket_update");
 }
 
 static void def_geo_point_translate(StructRNA *srna)
diff --git a/source/blender/nodes/geometry/nodes/node_geo_solidifiy.cc b/source/blender/nodes/geometry/nodes/node_geo_solidifiy.cc
index c204976d589..17dfdd19476 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_solidifiy.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_solidifiy.cc
@@ -53,7 +53,8 @@ static void geo_node_solidify_init(bNodeTree *UNUSED(tree), bNode *node)
 
 static void geo_node_solidify_update(bNodeTree *UNUSED(ntree), bNode *node)
 {
-  NodeGeometrySolidify &node_storage = *(NodeGeometrySolidify *)node->storage;
+  //const bNode &node = params.node();
+  //NodeGeometrySolidify &node_storage = *(NodeGeometrySolidify *)node->storage;
 
   //update_attribute_input_socket_availabilities(
   //    *node, "Translation", (GeometryNodeAttributeInputMode)node_storage.input_type);
@@ -94,8 +95,8 @@ static void geo_node_solidify_exec(GeoNodeExecParams params)
       0.0f,
       offset_clamp,
       node_storage.mode,
-        MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_FIXED,
-      MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_NONE,
+      node_storage.nonmanifold_offset_mode,
+      node_storage.nonmanifold_boundary_mode,
         0.0f,
       0.0f,
       0.0f,
@@ -123,7 +124,14 @@ static void geo_node_solidify_exec(GeoNodeExecParams params)
 
 static void geo_node_solidify_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
 {
+  const bNode *node = (bNode *)ptr->data;
+  NodeGeometrySolidify &node_storage = *(NodeGeometrySolidify *)node->storage;
+
   uiItemR(layout, ptr, "mode", UI_ITEM_R_EXPAND, nullptr, ICON_NONE);
+  if(node_storage.mode == MOD_SOLIDIFY_MODE_NONMANIFOLD){
+    uiItemR(layout, ptr, "nonmanifold_offset_mode", 0, nullptr, ICON_NONE);
+    uiItemR(layout, ptr, "nonmanifold_boundary_mode", 0, nullptr, ICON_NONE);
+  }
 }
 
 }  // namespace blender::nodes



More information about the Bf-blender-cvs mailing list