/* SPDX-FileCopyrightText: 2023 Blender Authors * * SPDX-License-Identifier: GPL-2.0-or-later */ #include "node_function_util.hh" #include "UI_interface.hh" #include "UI_resources.hh" namespace blender::nodes::node_fn_input_int_cc { static void node_declare(NodeDeclarationBuilder &b) { b.add_output("Integer"); } static void node_layout(uiLayout *layout, bContext * /*C*/, PointerRNA *ptr) { uiLayout *col = uiLayoutColumn(layout, true); uiItemR(col, ptr, "integer", UI_ITEM_R_EXPAND, "", ICON_NONE); } static void node_build_multi_function(NodeMultiFunctionBuilder &builder) { const bNode &bnode = builder.node(); NodeInputInt *node_storage = static_cast(bnode.storage); builder.construct_and_set_matching_fn>(node_storage->integer); } static void node_init(bNodeTree * /*tree*/, bNode *node) { NodeInputInt *data = MEM_cnew(__func__); node->storage = data; } static void node_register() { static blender::bke::bNodeType ntype; fn_node_type_base(&ntype, "FunctionNodeInputInt", FN_NODE_INPUT_INT, 0); ntype.ui_name = "Integer"; ntype.enum_name_legacy = "INPUT_INT"; ntype.declare = node_declare; ntype.initfunc = node_init; blender::bke::node_type_storage( &ntype, "NodeInputInt", node_free_standard_storage, node_copy_standard_storage); ntype.build_multi_function = node_build_multi_function; ntype.draw_buttons = node_layout; blender::bke::node_register_type(&ntype); } NOD_REGISTER_NODE(node_register) } // namespace blender::nodes::node_fn_input_int_cc