27 bNode *current_node =
static_cast<bNode *
>(current_node_ptr->
data);
47 layout->
op(
"node.sockets_sync",
IFACE_(
"Sync"), ICON_FILE_REFRESH);
48 layout->
prop(&output_node_ptr,
"define_signature",
UI_ITEM_NONE, std::nullopt, ICON_NONE);
56 panel->use_property_split_set(
true);
57 panel->use_property_decorate_set(
false);
58 panel->prop(item_ptr,
"socket_type",
UI_ITEM_NONE, std::nullopt, ICON_NONE);
72 panel->use_property_split_set(
true);
73 panel->use_property_decorate_set(
false);
74 panel->prop(item_ptr,
"socket_type",
UI_ITEM_NONE, std::nullopt, ICON_NONE);
89 const bNode *node =
b.node_or_null();
96 for (
const int i :
IndexRange(output_storage.input_items.items_num)) {
100 auto &
decl =
b.add_output(socket_type, item.
name, identifier);
105 decl.structure_type(StructureType::Dynamic);
116 const int label_maxncpy)
141 ntype.
ui_name =
"Closure Input";
165 const bNode *node =
b.node_or_null();
172 auto &
decl =
b.add_input(socket_type, item.
name, identifier).supports_field();
177 decl.structure_type(StructureType::Dynamic);
195 dst_node->
storage = dst_storage;
275 ntype.
ui_name =
"Closure Output";
SpaceNode * CTX_wm_space_node(const bContext *C)
#define NODE_CLASS_INTERFACE
#define NODE_STORAGE_FUNCS(StorageT)
#define NODE_CLOSURE_OUTPUT
#define NODE_CLOSURE_INPUT
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
void BLO_read_string(BlendDataReader *reader, char **ptr_p)
void BLO_write_string(BlendWriter *writer, const char *data_ptr)
#define BLT_I18NCONTEXT_ID_NODETREE
#define CTX_IFACE_(context, msgid)
@ NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_AUTO
#define NOD_REGISTER_NODE(REGISTER_FUNC)
BMesh const char void * data
std::optional< int > output_node_id
const bNode * output_node() const
const bNodeTreeZone * get_zone_by_node(const int32_t node_id) const
const bNode * get_corresponding_input(const bNodeTree &tree, const bNode &output_bnode) const
void * MEM_callocN(size_t len, const char *str)
void * MEM_dupallocN(const void *vmemh)
void MEM_freeN(void *vmemh)
const bNodeZoneType * zone_type_by_node_type(const int node_type)
void node_register_type(bNodeType &ntype)
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_free_storage(bNode *node)
static void node_gather_link_searches(GatherLinkSearchOpParams ¶ms)
static void node_register()
static bool node_insert_link(bke::NodeInsertLinkParams ¶ms)
static void node_init(bNodeTree *, bNode *node)
static void node_blend_write(const bNodeTree &, const bNode &node, BlendWriter &writer)
static void node_operators()
static void node_declare(NodeDeclarationBuilder &b)
static void node_blend_read(bNodeTree &, bNode &node, BlendDataReader &reader)
static void node_copy_storage(bNodeTree *, bNode *dst_node, const bNode *src_node)
static void node_layout_ex(uiLayout *layout, bContext *C, PointerRNA *current_node_ptr)
void make_common_operators()
static void draw_items_list_with_operators(const bContext *C, uiLayout *layout, const bNodeTree &tree, const bNode &node)
static void draw_active_item_props(const bNodeTree &tree, const bNode &node, const FunctionRef< void(PointerRNA *item_ptr)> draw_item)
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, typename Accessor::ItemT **r_new_item=nullptr)
void sync_sockets_closure(SpaceNode &snode, bNode &closure_input_node, bNode &closure_output_node, ReportList *reports, const bNodeSocket *src_closure_socket)
bool socket_type_always_single(const eNodeSocketDatatype socket_type)
void sh_geo_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
void node_free_standard_storage(bNode *node)
void node_copy_standard_storage(bNodeTree *, bNode *dest_node, const bNode *src_node)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
NodeClosureOutputItem * items
NodeClosureOutputItems output_items
NodeClosureInputItems input_items
struct bNodeTree * edittree
NodeBlendWriteFunction blend_write_storage_content
NodeBlendDataReadFunction blend_data_read_storage_content
void(* initfunc)(bNodeTree *ntree, bNode *node)
void(* labelfunc)(const bNodeTree *ntree, const bNode *node, char *label, int label_maxncpy)
void(* draw_buttons_ex)(uiLayout *, bContext *C, PointerRNA *ptr)
bool(* insert_link)(NodeInsertLinkParams ¶ms)
NodeGatherSocketLinkOperationsFunction gather_link_search_ops
NodeDeclareFunction declare
void(* register_operators)()
static void blend_write_item(BlendWriter *writer, const ItemT &item)
static std::string socket_identifier_for_item(const ItemT &item)
static StructRNA * item_srna
static void blend_read_data_item(BlendDataReader *reader, ItemT &item)
NodeClosureOutputItem ItemT
void use_property_decorate_set(bool is_sep)
PanelLayout panel(const bContext *C, blender::StringRef idname, bool default_closed)
PointerRNA op(wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, blender::wm::OpCallContext context, eUI_Item_Flag flag)
void use_property_split_set(bool value)
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)