[Bf-blender-cvs] [8f600e8256a] gsoc-2021-porting-modifiers-to-nodes-solidify: - added offset and boundary data enums for nonmanifold mode.
Fabian Schempp
noreply at git.blender.org
Fri Jun 18 17:06:52 CEST 2021
Commit: 8f600e8256afb9450c7d3290ec712968c462cb68
Author: Fabian Schempp
Date: Wed Jun 9 07:49:45 2021 +0200
Branches: gsoc-2021-porting-modifiers-to-nodes-solidify
https://developer.blender.org/rB8f600e8256afb9450c7d3290ec712968c462cb68
- 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 5014a7841f0..c3f22afbfc0 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 4a7933fab0c..cd8bf90786d 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -490,6 +490,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,
@@ -9554,6 +9569,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