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:
authorDorian <BD3D>2021-10-22 15:59:15 +0300
committerJacques Lucke <jacques@blender.org>2021-10-22 16:01:28 +0300
commit781289e31fbec004584b3789c801d1db012dfaa4 (patch)
tree9594fb70a46472f202b36e75a662970714f1ed00 /source/blender/nodes/function
parent01e2a532f55ee2de3bfd1c0d97d063976546a036 (diff)
Geometry Nodes: add Boolean and Integer Input nodes
These nodes just output a single value of their respective types, making it possible to control multiple inputs with the same value. Differential Revision: https://developer.blender.org/D12932
Diffstat (limited to 'source/blender/nodes/function')
-rw-r--r--source/blender/nodes/function/nodes/node_fn_input_bool.cc64
-rw-r--r--source/blender/nodes/function/nodes/node_fn_input_int.cc64
2 files changed, 128 insertions, 0 deletions
diff --git a/source/blender/nodes/function/nodes/node_fn_input_bool.cc b/source/blender/nodes/function/nodes/node_fn_input_bool.cc
new file mode 100644
index 00000000000..58f8969f1b6
--- /dev/null
+++ b/source/blender/nodes/function/nodes/node_fn_input_bool.cc
@@ -0,0 +1,64 @@
+/*
+ * 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_function_util.hh"
+
+#include "BLI_hash.h"
+
+#include "UI_interface.h"
+#include "UI_resources.h"
+
+namespace blender::nodes {
+
+static void fn_node_input_bool_declare(NodeDeclarationBuilder &b)
+{
+ b.add_output<decl::Bool>("Boolean");
+};
+
+static void fn_node_input_bool_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
+{
+ uiLayout *col = uiLayoutColumn(layout, true);
+ uiItemR(col, ptr, "boolean", UI_ITEM_R_EXPAND, IFACE_("Value"), ICON_NONE);
+}
+
+static void fn_node_input_bool_build_multi_function(NodeMultiFunctionBuilder &builder)
+{
+ bNode &bnode = builder.node();
+ NodeInputBool *node_storage = static_cast<NodeInputBool *>(bnode.storage);
+ builder.construct_and_set_matching_fn<fn::CustomMF_Constant<bool>>(node_storage->boolean);
+}
+
+static void fn_node_input_bool_init(bNodeTree *UNUSED(ntree), bNode *node)
+{
+ NodeInputBool *data = (NodeInputBool *)MEM_callocN(sizeof(NodeInputBool), __func__);
+ node->storage = data;
+}
+
+} // namespace blender::nodes
+
+void register_node_type_fn_input_bool()
+{
+ static bNodeType ntype;
+
+ fn_node_type_base(&ntype, FN_NODE_INPUT_BOOL, "Boolean", 0, 0);
+ ntype.declare = blender::nodes::fn_node_input_bool_declare;
+ node_type_init(&ntype, blender::nodes::fn_node_input_bool_init);
+ node_type_storage(
+ &ntype, "NodeInputBool", node_free_standard_storage, node_copy_standard_storage);
+ ntype.build_multi_function = blender::nodes::fn_node_input_bool_build_multi_function;
+ ntype.draw_buttons = blender::nodes::fn_node_input_bool_layout;
+ nodeRegisterType(&ntype);
+}
diff --git a/source/blender/nodes/function/nodes/node_fn_input_int.cc b/source/blender/nodes/function/nodes/node_fn_input_int.cc
new file mode 100644
index 00000000000..db52d569ac5
--- /dev/null
+++ b/source/blender/nodes/function/nodes/node_fn_input_int.cc
@@ -0,0 +1,64 @@
+/*
+ * 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_function_util.hh"
+
+#include "BLI_hash.h"
+
+#include "UI_interface.h"
+#include "UI_resources.h"
+
+namespace blender::nodes {
+
+static void fn_node_input_int_declare(NodeDeclarationBuilder &b)
+{
+ b.add_output<decl::Int>("Integer");
+};
+
+static void fn_node_input_int_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
+{
+ uiLayout *col = uiLayoutColumn(layout, true);
+ uiItemR(col, ptr, "integer", UI_ITEM_R_EXPAND, "", ICON_NONE);
+}
+
+static void fn_node_input_int_build_multi_function(NodeMultiFunctionBuilder &builder)
+{
+ bNode &bnode = builder.node();
+ NodeInputInt *node_storage = static_cast<NodeInputInt *>(bnode.storage);
+ builder.construct_and_set_matching_fn<fn::CustomMF_Constant<int>>(node_storage->integer);
+}
+
+static void fn_node_input_int_init(bNodeTree *UNUSED(ntree), bNode *node)
+{
+ NodeInputInt *data = (NodeInputInt *)MEM_callocN(sizeof(NodeInputInt), __func__);
+ node->storage = data;
+}
+
+} // namespace blender::nodes
+
+void register_node_type_fn_input_int()
+{
+ static bNodeType ntype;
+
+ fn_node_type_base(&ntype, FN_NODE_INPUT_INT, "Integer", 0, 0);
+ ntype.declare = blender::nodes::fn_node_input_int_declare;
+ node_type_init(&ntype, blender::nodes::fn_node_input_int_init);
+ node_type_storage(
+ &ntype, "NodeInputInt", node_free_standard_storage, node_copy_standard_storage);
+ ntype.build_multi_function = blender::nodes::fn_node_input_int_build_multi_function;
+ ntype.draw_buttons = blender::nodes::fn_node_input_int_layout;
+ nodeRegisterType(&ntype);
+}