diff options
author | Hans Goudey <h.goudey@me.com> | 2020-11-17 17:20:51 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2020-11-17 17:22:33 +0300 |
commit | 83d7dd528d1eb8b36d1726f64405a38424114b35 (patch) | |
tree | de7990384d6243f49c236d368bfdc0290b9c9a7e | |
parent | 46e2f4761cda941b891bfc2abfa7a5188eff82c7 (diff) |
Geometry Nodes: Update boilerplate code for attributesgeometry-nodes-attribute-nodes
-rw-r--r-- | release/scripts/startup/nodeitems_builtins.py | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/node.c | 1 | ||||
-rw-r--r-- | source/blender/editors/space_node/drawnode.c | 14 | ||||
-rw-r--r-- | source/blender/nodes/CMakeLists.txt | 1 | ||||
-rw-r--r-- | source/blender/nodes/NOD_geometry.h | 1 | ||||
-rw-r--r-- | source/blender/nodes/geometry/nodes/node_geo_attribute_create.cc | 81 | ||||
-rw-r--r-- | source/blender/nodes/geometry/nodes/node_geo_attribute_math.cc | 24 | ||||
-rw-r--r-- | source/blender/nodes/geometry/nodes/node_geo_attribute_random.cc | 30 |
8 files changed, 25 insertions, 128 deletions
diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py index 55da50e9e3e..ee37355847a 100644 --- a/release/scripts/startup/nodeitems_builtins.py +++ b/release/scripts/startup/nodeitems_builtins.py @@ -496,7 +496,6 @@ geometry_node_categories = [ NodeItem("GeometryNodeSubdivisionSurface"), ]), GeometryNodeCategory("GEO_ATTRIBUTES", "Attributes", items=[ - # NodeItem("GeometryNodeCreateAttribute"), NodeItem("GeometryNodeRandomAttribute"), NodeItem("GeometryNodeAttributeMath"), ]), diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index 98a16062f50..d1086f240e1 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -4680,7 +4680,6 @@ static void registerGeometryNodes(void) { register_node_type_geo_group(); - register_node_type_geo_attribute_create(); register_node_type_geo_attribute_math(); register_node_type_geo_attribute_random(); register_node_type_geo_triangulate(); diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 5cfc6208adb..2d6ba22cd49 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -3141,14 +3141,6 @@ static void node_texture_set_butfunc(bNodeType *ntype) /* ****************** BUTTON CALLBACKS FOR GEOMETRY NODES ***************** */ -static void node_geometry_buts_attribute_create(uiLayout *layout, - bContext *UNUSED(C), - PointerRNA *ptr) -{ - uiItemR(layout, ptr, "data_type", DEFAULT_FLAGS, "", ICON_NONE); - uiItemR(layout, ptr, "domain", DEFAULT_FLAGS, "", ICON_NONE); -} - static void node_geometry_buts_attribute_math(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) @@ -3189,12 +3181,12 @@ static void node_geometry_buts_triangulate(uiLayout *layout, bContext *UNUSED(C) static void node_geometry_set_butfunc(bNodeType *ntype) { switch (ntype->type) { - case GEO_NODE_ATTRIBUTE_CREATE: - ntype->draw_buttons = node_geometry_buts_attribute_create; - break; case GEO_NODE_ATTRIBUTE_MATH: ntype->draw_buttons = node_geometry_buts_attribute_math; break; + case GEO_NODE_ATTRIBUTE_RANDOM: + ntype->draw_buttons = node_geometry_buts_attribute_random; + break; case GEO_NODE_BOOLEAN: ntype->draw_buttons = node_geometry_buts_boolean_math; break; diff --git a/source/blender/nodes/CMakeLists.txt b/source/blender/nodes/CMakeLists.txt index abf572ab63b..c09cced0c6f 100644 --- a/source/blender/nodes/CMakeLists.txt +++ b/source/blender/nodes/CMakeLists.txt @@ -138,7 +138,6 @@ set(SRC function/nodes/node_fn_switch.cc function/node_function_util.cc - geometry/nodes/node_geo_attribute_create.cc geometry/nodes/node_geo_attribute_math.cc geometry/nodes/node_geo_attribute_random.cc geometry/nodes/node_geo_common.cc diff --git a/source/blender/nodes/NOD_geometry.h b/source/blender/nodes/NOD_geometry.h index e76e1753080..9a20de1aa0c 100644 --- a/source/blender/nodes/NOD_geometry.h +++ b/source/blender/nodes/NOD_geometry.h @@ -26,7 +26,6 @@ void register_node_tree_type_geo(void); void register_node_type_geo_group(void); -void register_node_type_geo_attribute_create(void); void register_node_type_geo_attribute_math(void); void register_node_type_geo_attribute_random(void); void register_node_type_geo_boolean(void); diff --git a/source/blender/nodes/geometry/nodes/node_geo_attribute_create.cc b/source/blender/nodes/geometry/nodes/node_geo_attribute_create.cc deleted file mode 100644 index c7d85e2b2bf..00000000000 --- a/source/blender/nodes/geometry/nodes/node_geo_attribute_create.cc +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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 "BLI_rand.hh" - -#include "DNA_customdata_types.h" -#include "DNA_windowmanager_types.h" - -#include "BKE_attribute.h" - -#include "node_geometry_util.hh" - -static bNodeSocketTemplate geo_node_attribute_create_in[] = { - {SOCK_GEOMETRY, N_("Geometry")}, - {SOCK_STRING, N_("Attribute")}, - {-1, ""}, -}; - -static bNodeSocketTemplate geo_node_attribute_create_out[] = { - {SOCK_GEOMETRY, N_("Geometry")}, - // {SOCK_STRING, N_("Attribute")}, - {-1, ""}, -}; - -static void geo_attribute_create_init(bNodeTree *UNUSED(tree), bNode *node) -{ - node->custom1 = CD_PROP_FLOAT; -} - -namespace blender::nodes { -static void geo_attribute_create_exec(bNode *node, GeoNodeInputs inputs, GeoNodeOutputs outputs) -{ - GeometryPtr geometry = inputs.extract<GeometryPtr>("Geometry"); - - if (!geometry.has_value()) { - outputs.set("Geometry", std::move(geometry)); - return; - } - - make_geometry_mutable(geometry); - - Mesh *mesh = geometry->get_mesh_for_write(); - - // char *name = inputs.extract<char *>("Attribute"); - - CustomDataType data_type = static_cast<CustomDataType>(node->custom1); - AttributeDomain domain = static_cast<AttributeDomain>(node->custom2); - - ReportList report_list_dummy; - CustomDataLayer *custom_data = BKE_id_attribute_new( - reinterpret_cast<ID *>(mesh), "TEST", data_type, domain, &report_list_dummy); - - UNUSED_VARS(custom_data); - - outputs.set("Geometry", std::move(geometry)); -} -} // namespace blender::nodes - -void register_node_type_geo_attribute_create() -{ - static bNodeType ntype; - - geo_node_type_base(&ntype, GEO_NODE_ATTRIBUTE_CREATE, "Create Attribute", 0, 0); - node_type_socket_templates(&ntype, geo_node_attribute_create_in, geo_node_attribute_create_out); - node_type_init(&ntype, geo_attribute_create_init); - ntype.geometry_node_execute = blender::nodes::geo_attribute_create_exec; - nodeRegisterType(&ntype); -} diff --git a/source/blender/nodes/geometry/nodes/node_geo_attribute_math.cc b/source/blender/nodes/geometry/nodes/node_geo_attribute_math.cc index 28400c90b1a..98cab2a91af 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_attribute_math.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_attribute_math.cc @@ -29,29 +29,25 @@ static bNodeSocketTemplate geo_node_attribute_math_in[] = { static bNodeSocketTemplate geo_node_attribute_math_out[] = { {SOCK_GEOMETRY, N_("Geometry")}, - // {SOCK_STRING, N_("Attribute")}, {-1, ""}, }; namespace blender::nodes { -static void geo_attribute_math_exec(bNode *UNUSED(node), - GeoNodeInputs inputs, - GeoNodeOutputs outputs) +static void geo_attribute_math_exec(GeoNodeExecParams params) { - GeometryPtr geometry = inputs.extract<GeometryPtr>("Geometry"); + GeometrySet geometry_set = params.extract_input<GeometrySet>("Geometry A"); + std::string attribute_name_a = params.extract_input<std::string>("Attribute A"); + std::string attribute_name_b = params.extract_input<std::string>("Attribute B"); - if (!geometry.has_value()) { - outputs.set("Geometry", std::move(geometry)); - return; + if (geometry_set.has_mesh()) { + Mesh *mesh = geometry_set.get_mesh_for_write(); } - make_geometry_mutable(geometry); - - Mesh *mesh = geometry->get_mesh_for_write(); - std::string attribute_name_a = inputs.extract<std::string>("Attribute A"); - std::string attribute_name_b = inputs.extract<std::string>("Attribute B"); + if (geometry_set.has_pointcloud()) { + PointCloud *point_cloud = geometry_set.get_pointcloud_for_write(); + } - outputs.set("Geometry", std::move(geometry)); + params.set_output("Geometry", std::move(geometry_set)); } } // namespace blender::nodes diff --git a/source/blender/nodes/geometry/nodes/node_geo_attribute_random.cc b/source/blender/nodes/geometry/nodes/node_geo_attribute_random.cc index de2f91a73b0..ed7610e2944 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_attribute_random.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_attribute_random.cc @@ -31,7 +31,6 @@ static bNodeSocketTemplate geo_node_attribute_random_in[] = { static bNodeSocketTemplate geo_node_attribute_random_out[] = { {SOCK_GEOMETRY, N_("Geometry")}, - // {SOCK_STRING, N_("Attribute")}, {-1, ""}, }; @@ -41,29 +40,24 @@ static void geo_attribute_random_init(bNodeTree *UNUSED(tree), bNode *node) } namespace blender::nodes { -static void geo_attribute_random_exec(bNode *node, GeoNodeInputs inputs, GeoNodeOutputs outputs) +static void geo_attribute_random_exec(GeoNodeExecParams params) { - GeometryPtr geometry = inputs.extract<GeometryPtr>("Geometry"); - - if (!geometry.has_value()) { - outputs.set("Geometry", std::move(geometry)); - return; - } - - make_geometry_mutable(geometry); + GeometrySet geometry_set = params.extract_input<GeometrySet>("Geometry"); + std::string attribute_name = params.extract_input<std::string>("Attribute"); RandomNumberGenerator rng(0); - Mesh *mesh = geometry->get_mesh_for_write(); - std::string attribute_name = inputs.extract<std::string>("Attribute"); + CustomDataType data_type = static_cast<CustomDataType>(params.node().custom1); + AttributeDomain domain = static_cast<AttributeDomain>(params.node().custom2); - CustomDataType data_type = static_cast<CustomDataType>(node->custom1); - AttributeDomain domain = static_cast<AttributeDomain>(node->custom2); + if (geometry_set.has_mesh()) { + Mesh *mesh = geometry_set.get_mesh_for_write(); + } - ReportList report_list_dummy; - CustomDataLayer *custom_data = BKE_id_attribute_new( - reinterpret_cast<ID *>(mesh), attribute_name.c_str(), data_type, domain, &report_list_dummy); + if (geometry_set.has_pointcloud()) { + PointCloud *point_cloud = geometry_set.get_pointcloud_for_write(); + } - outputs.set("Geometry", std::move(geometry)); + params.set_output("Geometry", std::move(geometry_set)); } } // namespace blender::nodes |