27 IFACE_(node_type_.ui_name),
28 node_type_.deprecation_notice ?
IFACE_(
" (Deprecated)") :
"",
37 items_.append({std::move(name), std::move(
fn), weight});
69 if (new_node_socket ==
nullptr) {
85 std::string idname_str = idname;
88 added_nodes_.append(
node);
101 if (new_node.
typeinfo->updatefunc) {
118 if (!socket_names.
add(socket.
name)) {
129 main_socket = &socket;
131 connectable_sockets.
append(&socket);
140 const int weight = (&socket == main_socket) ? 0 : -1 -
i;
144 bNode &node = params.add_node(node_type);
145 socket.make_available(node);
146 params.update_and_connect_available_socket(node, socket.name);
Main * CTX_data_main(const bContext *C)
#define BLI_assert_unreachable()
constexpr IndexRange index_range() const
void append(const T &value)
IndexRange index_range() const
const bke::bNodeType & node_type() const
const SpaceNode & space_node() const
void add_item(std::string socket_name, SocketLinkOperation::LinkSocketFn fn, int weight=0)
const bNodeTree & node_tree() const
const bNodeSocket & other_socket() const
void add_item_full_name(std::string name, SocketLinkOperation::LinkSocketFn fn, int weight=0)
eNodeSocketInOut in_out() const
void connect_available_socket(bNode &new_node, StringRef socket_name)
bNode & add_node(StringRef idname)
void update_and_connect_available_socket(bNode &new_node, StringRef socket_name)
Span< SocketDeclaration * > sockets(eNodeSocketInOut in_out) const
bool is_default_link_socket
virtual bool can_connect(const bNodeSocket &socket) const =0
bNode * node_add_node(const bContext *C, bNodeTree &ntree, StringRef idname)
bNodeLink & node_add_link(bNodeTree &ntree, bNode &fromnode, bNodeSocket &fromsock, bNode &tonode, bNodeSocket &tosock)
bNodeSocket * node_find_enabled_socket(bNode &node, eNodeSocketInOut in_out, StringRef name)
void node_socket_move_default_value(Main &bmain, bNodeTree &tree, bNodeSocket &src, bNodeSocket &dst)
void search_link_ops_for_basic_node(GatherLinkSearchOpParams ¶ms)
void search_link_ops_for_declarations(GatherLinkSearchOpParams ¶ms, Span< SocketDeclaration * > declarations)
void update_node_declaration_and_sockets(bNodeTree &ntree, bNode &node)
#define UI_MENU_ARROW_SEP
bNodeTypeHandle * typeinfo
blender::nodes::NodeDeclaration * static_declaration
std::function< void(LinkSearchOpParams &link_params)> LinkSocketFn