From a7dba81aab22338738365a9a549dd4418f32c2e3 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Wed, 21 Oct 2020 14:14:09 +0200 Subject: Nodes: add initial UI for Triangulate node --- release/scripts/startup/nodeitems_builtins.py | 4 +-- source/blender/blenkernel/BKE_node.h | 8 +++++ source/blender/blenkernel/intern/node.c | 2 ++ source/blender/nodes/CMakeLists.txt | 1 + source/blender/nodes/NOD_geometry.h | 2 ++ source/blender/nodes/NOD_static_types.h | 2 ++ .../nodes/geometry/nodes/node_geo_triangulate.cc | 36 ++++++++++++++++++++++ 7 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 source/blender/nodes/geometry/nodes/node_geo_triangulate.cc diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py index 4223b2ffb23..0c8a778b6b3 100644 --- a/release/scripts/startup/nodeitems_builtins.py +++ b/release/scripts/startup/nodeitems_builtins.py @@ -485,8 +485,8 @@ def not_implemented_node(idname): geometry_node_categories = [ # Geometry Nodes - GeometryNodeCategory("GEO_CONVERTER", "Converter", items=[ - NodeItem("ShaderNodeMath"), + GeometryNodeCategory("GEO_MESH", "Mesh", items=[ + NodeItem("GeometryNodeTriangulate"), ]), GeometryNodeCategory("GEO_GROUP", "Group", items=node_group_items), GeometryNodeCategory("GEO_LAYOUT", "Layout", items=[ diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h index 38045e22def..ab1e5afb8aa 100644 --- a/source/blender/blenkernel/BKE_node.h +++ b/source/blender/blenkernel/BKE_node.h @@ -1323,6 +1323,14 @@ int ntreeTexExecTree(struct bNodeTree *ntree, struct MTex *mtex); /** \} */ +/* -------------------------------------------------------------------- */ +/** \name Geometry Nodes + * \{ */ + +#define GEO_NODE_TRIANGULATE 1000 + +/** \} */ + /* -------------------------------------------------------------------- */ /** \name Function Nodes * \{ */ diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 3ead32d84df..164616032f2 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -4658,6 +4658,8 @@ static void registerTextureNodes(void) static void registerGeometryNodes(void) { register_node_type_geo_group(); + + register_node_type_geo_triangulate(); } static void registerFunctionNodes(void) diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt index cf09e6b15c7..fe098ea2491 100644 --- a/source/blender/nodes/CMakeLists.txt +++ b/source/blender/nodes/CMakeLists.txt @@ -138,6 +138,7 @@ set(SRC function/node_function_util.cc geometry/nodes/node_geo_common.cc + geometry/nodes/node_geo_triangulate.cc geometry/node_geometry_tree.cc geometry/node_geometry_util.cc diff --git a/source/blender/nodes/NOD_geometry.h b/source/blender/nodes/NOD_geometry.h index 0f8c49930ad..4c90a441270 100644 --- a/source/blender/nodes/NOD_geometry.h +++ b/source/blender/nodes/NOD_geometry.h @@ -26,6 +26,8 @@ void register_node_tree_type_geo(void); void register_node_type_geo_group(void); +void register_node_type_geo_triangulate(void); + #ifdef __cplusplus } #endif diff --git a/source/blender/nodes/NOD_static_types.h b/source/blender/nodes/NOD_static_types.h index 0173706b570..6e271ac7fad 100644 --- a/source/blender/nodes/NOD_static_types.h +++ b/source/blender/nodes/NOD_static_types.h @@ -266,6 +266,8 @@ DefNode(FunctionNode, FN_NODE_COMBINE_STRINGS, 0, "COMBINE_STRINGS DefNode(FunctionNode, FN_NODE_OBJECT_TRANSFORMS, 0, "OBJECT_TRANSFORMS", ObjectTransforms, "Object Transforms", "") DefNode(FunctionNode, FN_NODE_RANDOM_FLOAT, 0, "RANDOM_FLOAT", RandomFloat, "Random Float", "") +DefNode(GeometryNode, GEO_NODE_TRIANGULATE, 0, "TRIANGULATE", Triangulate, "Triangulate", "") + /* undefine macros */ #undef DefNode diff --git a/source/blender/nodes/geometry/nodes/node_geo_triangulate.cc b/source/blender/nodes/geometry/nodes/node_geo_triangulate.cc new file mode 100644 index 00000000000..e3ece88a576 --- /dev/null +++ b/source/blender/nodes/geometry/nodes/node_geo_triangulate.cc @@ -0,0 +1,36 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "node_geometry_util.h" + +static bNodeSocketTemplate geo_node_triangulate_in[] = { + {SOCK_GEOMETRY, N_("Geometry")}, + {-1, ""}, +}; + +static bNodeSocketTemplate geo_node_triangulate_out[] = { + {SOCK_GEOMETRY, N_("Geometry")}, + {-1, ""}, +}; + +void register_node_type_geo_triangulate() +{ + static bNodeType ntype; + + geo_node_type_base(&ntype, GEO_NODE_TRIANGULATE, "Triangulate", 0, 0); + node_type_socket_templates(&ntype, geo_node_triangulate_in, geo_node_triangulate_out); + nodeRegisterType(&ntype); +} -- cgit v1.2.3