Commit: f509bd37b166d7f46e542eb7b188927a2625a454 Author: Hans Goudey Date: Thu Dec 15 17:18:34 2022 -0600 Branches: temp-nodes-group-declarations https://developer.blender.org/rBf509bd37b166d7f46e542eb7b188927a2625a454
Fix build errors =================================================================== M source/blender/nodes/NOD_common.h M source/blender/nodes/composite/nodes/node_composite_common.cc M source/blender/nodes/geometry/nodes/node_geo_common.cc M source/blender/nodes/intern/node_common.cc M source/blender/nodes/intern/node_socket_declarations.cc M source/blender/nodes/shader/nodes/node_shader_common.cc M source/blender/nodes/texture/nodes/node_texture_common.cc =================================================================== diff --git a/source/blender/nodes/NOD_common.h b/source/blender/nodes/NOD_common.h index c1091bf87ce..d860e60864c 100644 --- a/source/blender/nodes/NOD_common.h +++ b/source/blender/nodes/NOD_common.h @@ -31,7 +31,7 @@ void node_internal_links_create(struct bNodeTree *ntree, struct bNode *node); namespace blender::nodes { -bool node_group_declare_dynamic_fn(const bNodeTree &node_tree, +bool node_group_declare_dynamic(const bNodeTree &node_tree, const bNode &node, NodeDeclaration &r_declaration); diff --git a/source/blender/nodes/composite/nodes/node_composite_common.cc b/source/blender/nodes/composite/nodes/node_composite_common.cc index 9088a244e49..5c3a2c87b9f 100644 --- a/source/blender/nodes/composite/nodes/node_composite_common.cc +++ b/source/blender/nodes/composite/nodes/node_composite_common.cc @@ -32,7 +32,7 @@ void register_node_type_cmp_group() node_type_size(&ntype, 140, 60, 400); ntype.labelfunc = node_group_label; - ntype.declare_dynamic = blender::nodes::node_group_declare_dynamic_fn; + ntype.declare_dynamic = blender::nodes::node_group_declare_dynamic; nodeRegisterType(&ntype); } diff --git a/source/blender/nodes/geometry/nodes/node_geo_common.cc b/source/blender/nodes/geometry/nodes/node_geo_common.cc index 4f490d3d1e1..2c819172efe 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_common.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_common.cc @@ -3,6 +3,7 @@ #include "BKE_node.h" #include "NOD_geometry.h" +#include "NOD_node_declaration.hh" #include "NOD_common.h" #include "node_common.h" @@ -10,16 +11,25 @@ namespace blender::nodes { -static void node_declare(const bNodeTree &node_tree, +static bool node_declare(const bNodeTree &node_tree, const bNode &node, NodeDeclaration &r_declaration) { - if (!node.id) { - return; + if (!node_group_declare_dynamic(node_tree, node, r_declaration)) { + return false; } - blender::nodes::node_group_declare_dynamic_fn(node_tree, node, r_declaration); - FieldInferencingInterface field_interface = calculate_field_inferencing() + const bNodeTree &group = reinterpret_cast<const bNodeTree &>(*node.id); + const FieldInferencingInterface field_interface = field_inferencing::calculate_field_inferencing( + group); + for (const int i : r_declaration.inputs_.index_range()) { + r_declaration.inputs_[i]->input_field_type_ = field_interface.inputs[i]; + } + for (const int i : r_declaration.outputs_.index_range()) { + r_declaration.outputs_[i]->output_field_dependency_ = field_interface.outputs[i]; + } + + return true; } } // namespace blender::nodes diff --git a/source/blender/nodes/intern/node_common.cc b/source/blender/nodes/intern/node_common.cc index 8d36ca6c0b0..e1164515634 100644 --- a/source/blender/nodes/intern/node_common.cc +++ b/source/blender/nodes/intern/node_common.cc @@ -204,31 +204,30 @@ static SocketDeclarationPtr declataion_for_interface_socket(const bNodeSocket &i dst->identifier_ = io_socket.identifier; dst->in_out_ = eNodeSocketInOut(io_socket.in_out); dst->description_ = io_socket.description; + dst->hide_value_ = io_socket.flag & SOCK_HIDE_VALUE; + return dst; } -bool node_group_declare_dynamic_fn(const bNodeTree & /*node_tree*/, - const bNode &node, - NodeDeclaration &r_declaration) +bool node_group_declare_dynamic(const bNodeTree & /*node_tree*/, + const bNode &node, + NodeDeclaration &r_declaration) { - if (!node.id) { + const bNodeTree *group = reinterpret_cast<const bNodeTree *>(node.id); + if (!group) { return false; } - else if (ID_IS_LINKED(node.id) && (node.id->tag & LIB_TAG_MISSING)) { + if (ID_IS_LINKED(&group->id) && (group->id.tag & LIB_TAG_MISSING)) { /* TODO: Restore the behavior that keeps the sockets until the ID is found. */ return false; } - const bNodeTree &group = *reinterpret_cast<const bNodeTree *>(node.id); - - Vector<SocketDeclarationPtr> inputs; - Vector<SocketDeclarationPtr> outputs; /* TODO: Specialize for geometry nodes and fields. */ /* TODO: Figure out how this should work for custom node trees / #SOCK_CUSTOM. */ - LISTBASE_FOREACH (const bNodeSocket *, input, &group.inputs) { - inputs.append(declataion_for_interface_socket(*input)); + LISTBASE_FOREACH (const bNodeSocket *, input, &group->inputs) { + r_declaration.inputs_.append(declataion_for_interface_socket(*input)); } - LISTBASE_FOREACH (const bNodeSocket *, output, &group.outputs) { - outputs.append(declataion_for_interface_socket(*output)); + LISTBASE_FOREACH (const bNodeSocket *, output, &group->outputs) { + r_declaration.outputs_.append(declataion_for_interface_socket(*output)); } return true; @@ -438,9 +437,9 @@ static SocketDeclarationPtr extend_declaration(const eNodeSocketInOut in_out) return decl; } -static bool group_input_declare_dynamic_fn(const bNodeTree &node_tree, - const bNode &node, - NodeDeclaration &r_declaration) +static bool group_input_declare_dynamic(const bNodeTree &node_tree, + const bNode & /*node*/, + NodeDeclaration &r_declaration) { LISTBASE_FOREACH (const bNodeSocket *, input, &node_tree.inputs) { r_declaration.outputs_.append(declataion_for_interface_socket(*input)); @@ -449,11 +448,12 @@ static bool group_input_declare_dynamic_fn(const bNodeTree &node_tree, if (!ID_IS_LINKED(&node_tree.id)) { r_declaration.outputs_.append(extend_declaration(SOCK_OUT)); } + return true; } -static bool group_output_declare_dynamic_fn(const bNodeTree &node_tree, - const bNode &node, - NodeDeclaration &r_declaration) +static bool group_output_declare_dynamic(const bNodeTree &node_tree, + const bNode & /*node*/, + NodeDeclaration &r_declaration) { LISTBASE_FOREACH (const bNodeSocket *, input, &node_tree.inputs) { r_declaration.inputs_.append(declataion_for_interface_socket(*input)); @@ -462,6 +462,7 @@ static bool group_output_declare_dynamic_fn(const bNodeTree &node_tree, if (!ID_IS_LINKED(&node_tree.id)) { r_declaration.inputs_.append(extend_declaration(SOCK_OUT)); } + return true; } } // namespace blender::nodes @@ -475,7 +476,7 @@ void register_node_type_group_input() node_type_base(ntype, NODE_GROUP_INPUT, "Group Input", NODE_CLASS_INTERFACE); node_type_size(ntype, 140, 80, 400); /* TODO: Update declaration when linking to the extension sockets. */ - ntype->declare_dynamic = blender::nodes::group_input_declare_dynamic_fn; + ntype->declare_dynamic = blender::nodes::group_input_declare_dynamic; nodeRegisterType(ntype); } @@ -500,7 +501,7 @@ void register_node_type_group_output() node_type_base(ntype, NODE_GROUP_OUTPUT, "Group Output", NODE_CLASS_INTERFACE); node_type_size(ntype, 140, 80, 400); /* TODO: Update declaration when linking to the extension sockets. */ - // ntype->declare_dynamic = //; + ntype->declare_dynamic = blender::nodes::group_output_declare_dynamic; ntype->no_muting = true; diff --git a/source/blender/nodes/intern/node_socket_declarations.cc b/source/blender/nodes/intern/node_socket_declarations.cc index 654cdf207fe..e89083498cc 100644 --- a/source/blender/nodes/intern/node_socket_declarations.cc +++ b/source/blender/nodes/intern/node_socket_declarations.cc @@ -529,7 +529,9 @@ bool Extend::can_connect(const bNodeSocket & /*socket*/) const return false; } -bNodeSocket &Extend::update_or_build(bNodeTree &ntree, bNode &node, bNodeSocket &socket) const +bNodeSocket &Extend::update_or_build(bNodeTree & /*ntree*/, + bNode & /*node*/, + bNodeSocket &socket) const { this->set_common_flags(socket); return socket; diff --git a/source/blender/nodes/shader/nodes/node_shader_common.cc b/source/blender/nodes/shader/nodes/node_shader_common.cc index 241df971f64..ac918ba0fdd 100644 --- a/source/blender/nodes/shader/nodes/node_shader_common.cc +++ b/source/blender/nodes/shader/nodes/node_shader_common.cc @@ -95,7 +95,7 @@ void register_node_type_sh_group() node_type_size(&ntype, 140, 60, 400); ntype.labelfunc = node_group_label; - ntype.declare_dynamic = blender::nodes::node_group_declare_dynamic_fn; + ntype.declare_dynamic = blender::nodes::node_group_declare_dynamic; ntype.gpu_fn = gpu_group_execute; nodeRegisterType(&ntype); diff --git a/source/blender/nodes/texture/nodes/node_texture_common.cc b/source/blender/nodes/texture/nodes/node_texture_common.cc index 913ed1eb2d0..988195d852a 100644 --- a/source/blender/nodes/texture/nodes/node_texture_common.cc +++ b/source/blender/nodes/texture/nodes/node_texture_common.cc @@ -157,7 +157,7 @@ void register_node_type_tex_group(void) node_type_size(&ntype, 140, 60, 400); ntype.labelfunc = node_group_label; - ntype.declare_dynamic = blender::nodes::node_group_declare_dynamic_fn; + ntype.declare_dynamic = blender::nodes::node_group_declare_dynamic; ntype.init_exec_fn = group_initexec; ntype.free_exec_fn = group_freeexec; ntype.exec_fn = group_execute; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs