From 541b3494f27bc9393f677871c4ad529e68a370b7 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 20 Jul 2023 23:00:16 +0200 Subject: [PATCH 1/3] initial commit --- source/blender/makesdna/DNA_node_types.h | 12 ---- source/blender/makesdna/intern/makesdna.cc | 70 ++++++------------- source/blender/makesrna/intern/CMakeLists.txt | 2 +- source/blender/makesrna/intern/makesrna.c | 4 ++ .../blender/makesrna/intern/rna_nodetree.cc | 12 ++-- source/blender/nodes/geometry/CMakeLists.txt | 1 + .../include/NOD_geo_mesh_to_points.hh | 29 ++++++++ .../geometry/nodes/node_geo_mesh_to_points.cc | 5 +- .../geometry/nodes/node_geo_mesh_to_points.hh | 28 ++++++++ 9 files changed, 94 insertions(+), 69 deletions(-) create mode 100644 source/blender/nodes/geometry/include/NOD_geo_mesh_to_points.hh create mode 100644 source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.hh diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index 12b9d81b0d2..3c04eef4dd4 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -1644,11 +1644,6 @@ typedef struct NodeGeometryCurveFill { uint8_t mode; } NodeGeometryCurveFill; -typedef struct NodeGeometryMeshToPoints { - /** #GeometryNodeMeshToPointsMode */ - uint8_t mode; -} NodeGeometryMeshToPoints; - typedef struct NodeGeometryAttributeCapture { /** #eCustomDataType. */ int8_t data_type; @@ -2618,13 +2613,6 @@ typedef enum GeometryNodeCurveFillMode { GEO_NODE_CURVE_FILL_MODE_NGONS = 1, } GeometryNodeCurveFillMode; -typedef enum GeometryNodeMeshToPointsMode { - GEO_NODE_MESH_TO_POINTS_VERTICES = 0, - GEO_NODE_MESH_TO_POINTS_EDGES = 1, - GEO_NODE_MESH_TO_POINTS_FACES = 2, - GEO_NODE_MESH_TO_POINTS_CORNERS = 3, -} GeometryNodeMeshToPointsMode; - typedef enum GeometryNodeStringToCurvesOverflowMode { GEO_NODE_STRING_TO_CURVES_MODE_OVERFLOW = 0, GEO_NODE_STRING_TO_CURVES_MODE_SCALE_TO_FIT = 1, diff --git a/source/blender/makesdna/intern/makesdna.cc b/source/blender/makesdna/intern/makesdna.cc index e1634241d64..3bfff2d98dd 100644 --- a/source/blender/makesdna/intern/makesdna.cc +++ b/source/blender/makesdna/intern/makesdna.cc @@ -889,6 +889,16 @@ static int convert_include(const char *filepath) md++; } + if (STREQ(filepath, "/home/jacques/blender/blender/source/blender/makesdna/DNA_node_types.h")) { + const int struct_type = add_type("NodeGeometryMeshToPoints", 0); + short *structpoin = add_struct(struct_type); + const int name = add_name("mode"); + short *sp = structpoin + 2; + sp[0] = add_type("uint8_t", 0); + sp[1] = name; + structpoin[1]++; + } + MEM_freeN(maindata); return 0; @@ -986,12 +996,12 @@ static int calculate_struct_sizes(int firststruct, FILE *file_verify, const char const char *str_pair[2] = {types[structtype], name_static}; const char *name_alias = static_cast( BLI_ghash_lookup(g_version_data.elem_map_alias_from_static, str_pair)); - fprintf(file_verify, - "BLI_STATIC_ASSERT(offsetof(struct %s, %s) == %d, \"DNA member offset " - "verify\");\n", - structname, - name_alias ? name_alias : name_static, - size_native); + // fprintf(file_verify, + // "BLI_STATIC_ASSERT(offsetof(struct %s, %s) == %d, \"DNA member offset " + // "verify\");\n", + // structname, + // name_alias ? name_alias : name_static, + // size_native); } /* is it a pointer or function pointer? */ @@ -1154,10 +1164,10 @@ static int calculate_struct_sizes(int firststruct, FILE *file_verify, const char } /* Write size verification to file. */ - fprintf(file_verify, - "BLI_STATIC_ASSERT(sizeof(struct %s) == %d, \"DNA struct size verify\");\n\n", - structname, - size_native); + // fprintf(file_verify, + // "BLI_STATIC_ASSERT(sizeof(struct %s) == %d, \"DNA struct size verify\");\n\n", + // structname, + // size_native); } } } @@ -1592,43 +1602,3 @@ int main(int argc, char **argv) return return_status; } - -/* handy but fails on struct bounds which makesdna doesn't care about - * with quite the same strictness as GCC does */ -#if 0 -/* include files for automatic dependencies */ - -/* extra safety check that we are aligned, - * warnings here are easier to fix the makesdna's */ -# ifdef __GNUC__ -# pragma GCC diagnostic error "-Wpadded" -# endif - -#endif /* if 0 */ - -/* The include file below is automatically generated from the `SRC_DNA_INC` - * variable in 'source/blender/CMakeLists.txt'. */ -#include "dna_includes_all.h" - -/* end of list */ - -/** \} */ - -/* -------------------------------------------------------------------- */ -/** \name DNA Renaming Sanity Check - * - * Without this it's possible to reference struct members that don't exist, - * breaking backward & forward compatibility. - * - * \{ */ - -static void UNUSED_FUNCTION(dna_rename_defs_ensure)() -{ -#define DNA_STRUCT_RENAME(old, new) (void)sizeof(new); -#define DNA_STRUCT_RENAME_ELEM(struct_name, old, new) (void)offsetof(struct_name, new); -#include "dna_rename_defs.h" -#undef DNA_STRUCT_RENAME -#undef DNA_STRUCT_RENAME_ELEM -} - -/** \} */ diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt index 5e7b6e09422..3ec950718b3 100644 --- a/source/blender/makesrna/intern/CMakeLists.txt +++ b/source/blender/makesrna/intern/CMakeLists.txt @@ -231,6 +231,7 @@ set(INC ../../imbuf ../../modifiers ../../nodes + ../../nodes/geometry/include ../../sequencer ../../simulation ../../windowmanager @@ -490,4 +491,3 @@ set(LIB ) blender_add_lib(bf_rna "${SRC}" "${INC}" "${INC_SYS}" "${LIB}") - diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index 3c9e45ff4d1..b56ebf9a89a 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -4691,6 +4691,10 @@ static void rna_generate(BlenderRNA *brna, FILE *f, const char *filename, const } fprintf(f, "\n"); fprintf(f, "#ifdef __cplusplus\n"); + if (STREQ(filename, "rna_nodetree.cc")) { + fprintf(f, + "using NodeGeometryMeshToPoints = blender::nodes::NodeGeometryMeshToPoints::DNA;\n\n"); + } fprintf(f, "# define RNA_EXTERN_C extern \"C\"\n"); fprintf(f, "# define RNA_EXTERN_C_OR_EXTERN extern \"C\"\n"); fprintf(f, "#else\n"); diff --git a/source/blender/makesrna/intern/rna_nodetree.cc b/source/blender/makesrna/intern/rna_nodetree.cc index 9992f7219dd..7f7a4fc7983 100644 --- a/source/blender/makesrna/intern/rna_nodetree.cc +++ b/source/blender/makesrna/intern/rna_nodetree.cc @@ -65,6 +65,8 @@ #include "BLI_string_utils.h" +#include "NOD_geo_mesh_to_points.hh" + const EnumPropertyItem rna_enum_node_socket_in_out_items[] = {{SOCK_IN, "IN", 0, "Input", ""}, {SOCK_OUT, "OUT", 0, "Output", ""}, {0, nullptr, 0, nullptr, nullptr}}; @@ -10631,23 +10633,25 @@ static void def_geo_mesh_to_points(StructRNA *srna) { PropertyRNA *prop; + using namespace blender::nodes; + static EnumPropertyItem mode_items[] = { - {GEO_NODE_MESH_TO_POINTS_VERTICES, + {GeometryNodeMeshToPointsMode::Vertices, "VERTICES", 0, "Vertices", "Create a point in the point cloud for each selected vertex"}, - {GEO_NODE_MESH_TO_POINTS_EDGES, + {GeometryNodeMeshToPointsMode::Edges, "EDGES", 0, "Edges", "Create a point in the point cloud for each selected edge"}, - {GEO_NODE_MESH_TO_POINTS_FACES, + {GeometryNodeMeshToPointsMode::Faces, "FACES", 0, "Faces", "Create a point in the point cloud for each selected face"}, - {GEO_NODE_MESH_TO_POINTS_CORNERS, + {GeometryNodeMeshToPointsMode::Corners, "CORNERS", 0, "Corners", diff --git a/source/blender/nodes/geometry/CMakeLists.txt b/source/blender/nodes/geometry/CMakeLists.txt index 0ddfa732cc0..7239bacb3ba 100644 --- a/source/blender/nodes/geometry/CMakeLists.txt +++ b/source/blender/nodes/geometry/CMakeLists.txt @@ -5,6 +5,7 @@ set(INC . .. + ./include ../intern ../../editors/include ../../blentranslation diff --git a/source/blender/nodes/geometry/include/NOD_geo_mesh_to_points.hh b/source/blender/nodes/geometry/include/NOD_geo_mesh_to_points.hh new file mode 100644 index 00000000000..2a34f7d23e0 --- /dev/null +++ b/source/blender/nodes/geometry/include/NOD_geo_mesh_to_points.hh @@ -0,0 +1,29 @@ +/* SPDX-FileCopyrightText: 2023 Blender Foundation + * + * SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "BLI_sys_types.h" + +namespace blender::nodes { + +enum GeometryNodeMeshToPointsMode { + Vertices = 0, + Edges = 1, + Faces = 2, + Corners = 3, +}; + +struct NodeGeometryMeshToPoints { + // uint8_t mode; + struct DNA { + /** #GeometryNodeMeshToPointsMode */ + uint8_t mode; + } dna_; + + GeometryNodeMeshToPointsMode mode() const + { + return GeometryNodeMeshToPointsMode(dna_.mode); + } +}; + +} // namespace blender::nodes diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.cc index f0382faeed0..c7b8ab957d0 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.cc @@ -15,6 +15,7 @@ #include "UI_interface.h" #include "UI_resources.h" +#include "node_geo_mesh_to_points.hh" #include "node_geometry_util.hh" namespace blender::nodes::node_geo_mesh_to_points_cc { @@ -42,7 +43,7 @@ static void node_layout(uiLayout *layout, bContext * /*C*/, PointerRNA *ptr) static void node_init(bNodeTree * /*tree*/, bNode *node) { NodeGeometryMeshToPoints *data = MEM_cnew(__func__); - data->mode = GEO_NODE_MESH_TO_POINTS_VERTICES; + data->dna_.mode = GEO_NODE_MESH_TO_POINTS_VERTICES; node->storage = data; } @@ -154,7 +155,7 @@ static void node_geo_exec(GeoNodeExecParams params) const Field positive_radius(FieldOperation::Create(max_zero_fn, {std::move(radius)}), 0); const NodeGeometryMeshToPoints &storage = node_storage(params.node()); - const GeometryNodeMeshToPointsMode mode = (GeometryNodeMeshToPointsMode)storage.mode; + const GeometryNodeMeshToPointsMode mode = storage.mode(); const AnonymousAttributePropagationInfo &propagation_info = params.get_output_propagation_info( "Points"); diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.hh b/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.hh new file mode 100644 index 00000000000..6db6798877d --- /dev/null +++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.hh @@ -0,0 +1,28 @@ +/* SPDX-FileCopyrightText: 2023 Blender Foundation + * + * SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "BLI_sys_types.h" + +namespace blender::nodes { + +enum GeometryNodeMeshToPointsMode { + GEO_NODE_MESH_TO_POINTS_VERTICES = 0, + GEO_NODE_MESH_TO_POINTS_EDGES = 1, + GEO_NODE_MESH_TO_POINTS_FACES = 2, + GEO_NODE_MESH_TO_POINTS_CORNERS = 3, +}; + +struct NodeGeometryMeshToPoints { + struct DNA { + /** #GeometryNodeMeshToPointsMode */ + uint8_t mode; + } dna_; + + GeometryNodeMeshToPointsMode mode() const + { + return GeometryNodeMeshToPointsMode(dna_.mode); + } +}; + +} // namespace blender::nodes -- 2.30.2 From 25b7dbb58cbb012fc4549af7c90745463b26b88c Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 20 Jul 2023 23:08:20 +0200 Subject: [PATCH 2/3] cleanup --- .../geometry/nodes/node_geo_mesh_to_points.cc | 12 ++++---- .../geometry/nodes/node_geo_mesh_to_points.hh | 28 ------------------- 2 files changed, 6 insertions(+), 34 deletions(-) delete mode 100644 source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.hh diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.cc index c7b8ab957d0..d5ad207ff4f 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.cc @@ -15,7 +15,7 @@ #include "UI_interface.h" #include "UI_resources.h" -#include "node_geo_mesh_to_points.hh" +#include "NOD_geo_mesh_to_points.hh" #include "node_geometry_util.hh" namespace blender::nodes::node_geo_mesh_to_points_cc { @@ -43,7 +43,7 @@ static void node_layout(uiLayout *layout, bContext * /*C*/, PointerRNA *ptr) static void node_init(bNodeTree * /*tree*/, bNode *node) { NodeGeometryMeshToPoints *data = MEM_cnew(__func__); - data->dna_.mode = GEO_NODE_MESH_TO_POINTS_VERTICES; + data->dna_.mode = GeometryNodeMeshToPointsMode::Vertices; node->storage = data; } @@ -162,7 +162,7 @@ static void node_geo_exec(GeoNodeExecParams params) geometry_set.modify_geometry_sets([&](GeometrySet &geometry_set) { switch (mode) { - case GEO_NODE_MESH_TO_POINTS_VERTICES: + case GeometryNodeMeshToPointsMode::Vertices: geometry_set_mesh_to_points(geometry_set, position, positive_radius, @@ -170,7 +170,7 @@ static void node_geo_exec(GeoNodeExecParams params) ATTR_DOMAIN_POINT, propagation_info); break; - case GEO_NODE_MESH_TO_POINTS_EDGES: + case GeometryNodeMeshToPointsMode::Edges: geometry_set_mesh_to_points(geometry_set, position, positive_radius, @@ -178,7 +178,7 @@ static void node_geo_exec(GeoNodeExecParams params) ATTR_DOMAIN_EDGE, propagation_info); break; - case GEO_NODE_MESH_TO_POINTS_FACES: + case GeometryNodeMeshToPointsMode::Faces: geometry_set_mesh_to_points(geometry_set, position, positive_radius, @@ -186,7 +186,7 @@ static void node_geo_exec(GeoNodeExecParams params) ATTR_DOMAIN_FACE, propagation_info); break; - case GEO_NODE_MESH_TO_POINTS_CORNERS: + case GeometryNodeMeshToPointsMode::Corners: geometry_set_mesh_to_points(geometry_set, position, positive_radius, diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.hh b/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.hh deleted file mode 100644 index 6db6798877d..00000000000 --- a/source/blender/nodes/geometry/nodes/node_geo_mesh_to_points.hh +++ /dev/null @@ -1,28 +0,0 @@ -/* SPDX-FileCopyrightText: 2023 Blender Foundation - * - * SPDX-License-Identifier: GPL-2.0-or-later */ - -#include "BLI_sys_types.h" - -namespace blender::nodes { - -enum GeometryNodeMeshToPointsMode { - GEO_NODE_MESH_TO_POINTS_VERTICES = 0, - GEO_NODE_MESH_TO_POINTS_EDGES = 1, - GEO_NODE_MESH_TO_POINTS_FACES = 2, - GEO_NODE_MESH_TO_POINTS_CORNERS = 3, -}; - -struct NodeGeometryMeshToPoints { - struct DNA { - /** #GeometryNodeMeshToPointsMode */ - uint8_t mode; - } dna_; - - GeometryNodeMeshToPointsMode mode() const - { - return GeometryNodeMeshToPointsMode(dna_.mode); - } -}; - -} // namespace blender::nodes -- 2.30.2 From 51d372be1fb308b0fa836b0a07c3fbb557c5eb80 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 20 Jul 2023 23:12:07 +0200 Subject: [PATCH 3/3] cleanup --- source/blender/nodes/geometry/include/NOD_geo_mesh_to_points.hh | 1 - 1 file changed, 1 deletion(-) diff --git a/source/blender/nodes/geometry/include/NOD_geo_mesh_to_points.hh b/source/blender/nodes/geometry/include/NOD_geo_mesh_to_points.hh index 2a34f7d23e0..b1b2d8989c4 100644 --- a/source/blender/nodes/geometry/include/NOD_geo_mesh_to_points.hh +++ b/source/blender/nodes/geometry/include/NOD_geo_mesh_to_points.hh @@ -14,7 +14,6 @@ enum GeometryNodeMeshToPointsMode { }; struct NodeGeometryMeshToPoints { - // uint8_t mode; struct DNA { /** #GeometryNodeMeshToPointsMode */ uint8_t mode; -- 2.30.2