25 const bNode *node =
b.node_or_null();
33 b.add_input(socket_type, name, identifier)
38 b.add_output<
decl::Bundle>(
"Bundle").propagate_all().reference_pass_all();
51 dst_node->
storage = dst_storage;
65 *tree, *node, *node, *link);
74 socket_items::ui::draw_items_list_with_operators<CombineBundleItemsAccessor>(
75 C, panel, ntree, node);
76 socket_items::ui::draw_active_item_props<CombineBundleItemsAccessor>(
78 panel->prop(item_ptr,
"socket_type",
UI_ITEM_NONE,
"Type", ICON_NONE);
90 if (!
U.experimental.use_bundle_and_closure_nodes) {
117 params.
set_output(
"Bundle", std::move(bundle_ptr));
135 ntype.
ui_name =
"Combine Bundle";
136 ntype.
ui_description =
"Combine multiple socket values into one.";
#define NODE_CLASS_CONVERTER
#define GEO_NODE_COMBINE_BUNDLE
void BLO_read_string(BlendDataReader *reader, char **ptr_p)
void BLO_write_string(BlendWriter *writer, const char *data_ptr)
#define NOD_REGISTER_NODE(REGISTER_FUNC)
constexpr IndexRange()=default
constexpr bool is_empty() const
void * try_get_input_data_ptr(int index) const
static BundlePtr create()
bool add(const SocketInterfaceKey &key, const bke::bNodeSocketType &type, const void *value)
void set_output(StringRef identifier, T &&value)
const bNode & node() const
void set_default_remaining_outputs()
lf::Params & low_level_lazy_function_params()
SocketInterfaceKey(Vector< std::string > identifiers)
void * MEM_callocN(size_t len, const char *str)
void * MEM_dupallocN(const void *vmemh)
void MEM_freeN(void *vmemh)
void node_register_type(bNodeType &ntype)
bNodeSocketType * node_socket_type_find_static(int type, int subtype=0)
void node_type_storage(bNodeType &ntype, std::optional< StringRefNull > storagename, void(*freefunc)(bNode *node), void(*copyfunc)(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node))
static void node_blend_write(const bNodeTree &, const bNode &node, BlendWriter &writer)
static void node_init(bNodeTree *, bNode *node)
static void node_geo_exec(GeoNodeExecParams params)
NODE_STORAGE_FUNCS(NodeGeometryCombineBundle)
static void node_copy_storage(bNodeTree *, bNode *dst_node, const bNode *src_node)
static void node_operators()
static void node_blend_read(bNodeTree &, bNode &node, BlendDataReader &reader)
static void node_declare(NodeDeclarationBuilder &b)
static bool node_insert_link(bNodeTree *tree, bNode *node, bNodeLink *link)
static void node_layout_ex(uiLayout *layout, bContext *C, PointerRNA *node_ptr)
static void node_register()
static void node_free_storage(bNode *node)
void make_common_operators()
void blend_write(BlendWriter *writer, const bNode &node)
void destruct_array(bNode &node)
void blend_read_data(BlendDataReader *reader, bNode &node)
void copy_array(const bNode &src_node, bNode &dst_node)
bool try_add_item_via_any_extend_socket(bNodeTree &ntree, bNode &extend_node, bNode &storage_node, bNodeLink &link, const std::optional< StringRef > socket_identifier=std::nullopt)
ImplicitSharingPtr< Bundle > BundlePtr
void geo_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
NodeGeometryCombineBundleItem * items
const blender::CPPType * geometry_nodes_cpp_type
NodeBlendWriteFunction blend_write_storage_content
bool(*) insert_link(bNodeTree *ntree, bNode *node, bNodeLink *link)
void(*) register_operators()
std::string ui_description
NodeBlendDataReadFunction blend_data_read_storage_content
NodeGeometryExecFunction geometry_node_execute
void(*) initfunc(bNodeTree *ntree, bNode *node)
void(*) draw_buttons_ex(uiLayout *, bContext *C, PointerRNA *ptr)
NodeDeclareFunction declare
static void blend_write_item(BlendWriter *writer, const ItemT &item)
static StructRNA * item_srna
NodeGeometryCombineBundleItem ItemT
static void blend_read_data_item(BlendDataReader *reader, ItemT &item)
static std::string socket_identifier_for_item(const ItemT &item)
PanelLayout panel(const bContext *C, blender::StringRef idname, bool default_closed)