Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2020-11-17 17:20:51 +0300
committerHans Goudey <h.goudey@me.com>2020-11-17 17:22:33 +0300
commit83d7dd528d1eb8b36d1726f64405a38424114b35 (patch)
treede7990384d6243f49c236d368bfdc0290b9c9a7e
parent46e2f4761cda941b891bfc2abfa7a5188eff82c7 (diff)
Geometry Nodes: Update boilerplate code for attributesgeometry-nodes-attribute-nodes
-rw-r--r--release/scripts/startup/nodeitems_builtins.py1
-rw-r--r--source/blender/blenkernel/intern/node.c1
-rw-r--r--source/blender/editors/space_node/drawnode.c14
-rw-r--r--source/blender/nodes/CMakeLists.txt1
-rw-r--r--source/blender/nodes/NOD_geometry.h1
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_attribute_create.cc81
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_attribute_math.cc24
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_attribute_random.cc30
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