Cleanup: Remove link drag search operations for socket templates
Besides texture nodes, which aren't supported anyway, we don't have any builtin nodes that still use the socket template system, so this can be removed.
This commit is contained in:
@@ -125,64 +125,23 @@ void search_link_ops_for_declarations(GatherLinkSearchOpParams ¶ms,
|
||||
}
|
||||
}
|
||||
|
||||
static void search_link_ops_for_socket_templates(GatherLinkSearchOpParams ¶ms,
|
||||
const bNodeSocketTemplate *templates,
|
||||
const eNodeSocketInOut in_out)
|
||||
{
|
||||
const bNodeType &node_type = params.node_type();
|
||||
const bNodeTreeType &node_tree_type = *params.node_tree().typeinfo;
|
||||
|
||||
Set<StringRef> socket_names;
|
||||
for (const bNodeSocketTemplate *socket_template = templates; socket_template->type != -1;
|
||||
socket_template++) {
|
||||
eNodeSocketDatatype from = (eNodeSocketDatatype)socket_template->type;
|
||||
eNodeSocketDatatype to = (eNodeSocketDatatype)params.other_socket().type;
|
||||
if (in_out == SOCK_IN) {
|
||||
std::swap(from, to);
|
||||
}
|
||||
if (node_tree_type.validate_link && !node_tree_type.validate_link(from, to)) {
|
||||
continue;
|
||||
}
|
||||
if (!socket_names.add(socket_template->name)) {
|
||||
/* See comment in #search_link_ops_for_declarations. */
|
||||
continue;
|
||||
}
|
||||
|
||||
params.add_item(
|
||||
socket_template->name, [socket_template, node_type, in_out](LinkSearchOpParams ¶ms) {
|
||||
bNode &node = params.add_node(node_type);
|
||||
bNodeSocket *new_node_socket = bke::node_find_enabled_socket(
|
||||
node, in_out, socket_template->name);
|
||||
if (new_node_socket != nullptr) {
|
||||
/* Rely on the way #nodeAddLink switches in/out if necessary. */
|
||||
nodeAddLink(¶ms.node_tree, ¶ms.node, ¶ms.socket, &node, new_node_socket);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void search_link_ops_for_basic_node(GatherLinkSearchOpParams ¶ms)
|
||||
{
|
||||
const bNodeType &node_type = params.node_type();
|
||||
|
||||
if (node_type.declare) {
|
||||
if (node_type.declaration_is_dynamic) {
|
||||
/* Dynamic declarations (whatever they end up being) aren't supported
|
||||
* by this function, but still avoid a crash in release builds. */
|
||||
BLI_assert_unreachable();
|
||||
return;
|
||||
}
|
||||
|
||||
const NodeDeclaration &declaration = *node_type.fixed_declaration;
|
||||
|
||||
search_link_ops_for_declarations(params, declaration.sockets(params.in_out()));
|
||||
if (!node_type.declare) {
|
||||
return;
|
||||
}
|
||||
else if (node_type.inputs && params.in_out() == SOCK_IN) {
|
||||
search_link_ops_for_socket_templates(params, node_type.inputs, SOCK_IN);
|
||||
}
|
||||
else if (node_type.outputs && params.in_out() == SOCK_OUT) {
|
||||
search_link_ops_for_socket_templates(params, node_type.outputs, SOCK_OUT);
|
||||
|
||||
if (node_type.declaration_is_dynamic) {
|
||||
/* Dynamic declarations (whatever they end up being) aren't supported
|
||||
* by this function, but still avoid a crash in release builds. */
|
||||
BLI_assert_unreachable();
|
||||
return;
|
||||
}
|
||||
|
||||
const NodeDeclaration &declaration = *node_type.fixed_declaration;
|
||||
|
||||
search_link_ops_for_declarations(params, declaration.sockets(params.in_out()));
|
||||
}
|
||||
|
||||
} // namespace blender::nodes
|
||||
|
||||
Reference in New Issue
Block a user