Nodes: extract function that builds the node declaration
This also makes it easier to add some post processing on top of the node-defined declaration.
This commit is contained in:
parent
b2bee8416b
commit
19491e5fc0
|
@ -1373,8 +1373,7 @@ void nodeRegisterType(bNodeType *nt)
|
|||
if (nt->declare && !nt->declaration_is_dynamic) {
|
||||
if (nt->fixed_declaration == nullptr) {
|
||||
nt->fixed_declaration = new blender::nodes::NodeDeclaration();
|
||||
blender::nodes::NodeDeclarationBuilder builder{*nt->fixed_declaration};
|
||||
nt->declare(builder);
|
||||
blender::nodes::build_node_declaration(*nt, *nt->fixed_declaration);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3607,8 +3606,7 @@ bool nodeDeclarationEnsureOnOutdatedNode(bNodeTree * /*ntree*/, bNode *node)
|
|||
}
|
||||
if (node->typeinfo->declaration_is_dynamic) {
|
||||
node->runtime->declaration = new blender::nodes::NodeDeclaration();
|
||||
blender::nodes::NodeDeclarationBuilder builder{*node->runtime->declaration};
|
||||
node->typeinfo->declare(builder);
|
||||
blender::nodes::build_node_declaration(*node->typeinfo, *node->runtime->declaration);
|
||||
}
|
||||
else {
|
||||
/* Declaration should have been created in #nodeRegisterType. */
|
||||
|
|
|
@ -361,8 +361,7 @@ static Vector<NodeLinkItem> ui_node_link_items(NodeLinkArg *arg,
|
|||
using namespace blender::nodes;
|
||||
|
||||
r_node_decl.emplace(NodeDeclaration());
|
||||
NodeDeclarationBuilder node_decl_builder{*r_node_decl};
|
||||
arg->node_type->declare(node_decl_builder);
|
||||
blender::nodes::build_node_declaration(*arg->node_type, *r_node_decl);
|
||||
Span<SocketDeclarationPtr> socket_decls = (in_out == SOCK_IN) ? r_node_decl->inputs() :
|
||||
r_node_decl->outputs();
|
||||
int index = 0;
|
||||
|
|
|
@ -367,6 +367,8 @@ void index(const bNode &node, void *r_value);
|
|||
void id_or_index(const bNode &node, void *r_value);
|
||||
} // namespace implicit_field_inputs
|
||||
|
||||
void build_node_declaration(const bNodeType &typeinfo, NodeDeclaration &r_declaration);
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name #OutputFieldDependency Inline Methods
|
||||
* \{ */
|
||||
|
|
|
@ -7,6 +7,12 @@
|
|||
|
||||
namespace blender::nodes {
|
||||
|
||||
void build_node_declaration(const bNodeType &typeinfo, NodeDeclaration &r_declaration)
|
||||
{
|
||||
NodeDeclarationBuilder node_decl_builder{r_declaration};
|
||||
typeinfo.declare(node_decl_builder);
|
||||
}
|
||||
|
||||
bool NodeDeclaration::matches(const bNode &node) const
|
||||
{
|
||||
auto check_sockets = [&](ListBase sockets, Span<SocketDeclarationPtr> socket_decls) {
|
||||
|
|
Loading…
Reference in New Issue