diff --git a/source/blender/blenkernel/intern/image.cc b/source/blender/blenkernel/intern/image.cc index ae05096826b..5e8a2cad99e 100644 --- a/source/blender/blenkernel/intern/image.cc +++ b/source/blender/blenkernel/intern/image.cc @@ -71,6 +71,7 @@ #include "BKE_lib_id.h" #include "BKE_main.h" #include "BKE_node.h" +#include "BKE_node_runtime.hh" #include "BKE_node_tree_update.h" #include "BKE_packedFile.h" #include "BKE_report.h" @@ -2743,7 +2744,7 @@ static void image_walk_ntree_all_users( { switch (ntree->type) { case NTREE_SHADER: - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->id) { if (node->type == SH_NODE_TEX_IMAGE) { NodeTexImage *tex = static_cast(node->storage); @@ -2759,7 +2760,7 @@ static void image_walk_ntree_all_users( } break; case NTREE_TEXTURE: - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->id && node->type == TEX_NODE_IMAGE) { Image *ima = (Image *)node->id; ImageUser *iuser = static_cast(node->storage); @@ -2768,7 +2769,7 @@ static void image_walk_ntree_all_users( } break; case NTREE_COMPOSIT: - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->id && node->type == CMP_NODE_IMAGE) { Image *ima = (Image *)node->id; ImageUser *iuser = static_cast(node->storage); diff --git a/source/blender/blenkernel/intern/material.cc b/source/blender/blenkernel/intern/material.cc index 597375f4f81..bcce1e61eb5 100644 --- a/source/blender/blenkernel/intern/material.cc +++ b/source/blender/blenkernel/intern/material.cc @@ -58,6 +58,7 @@ #include "BKE_material.h" #include "BKE_mesh.h" #include "BKE_node.h" +#include "BKE_node_runtime.hh" #include "BKE_object.h" #include "BKE_scene.h" #include "BKE_vfont.h" @@ -1387,7 +1388,7 @@ static bool ntree_foreach_texnode_recursive(bNodeTree *nodetree, { const bool do_image_nodes = (slot_filter & PAINT_SLOT_IMAGE) != 0; const bool do_color_attributes = (slot_filter & PAINT_SLOT_COLOR_ATTRIBUTE) != 0; - LISTBASE_FOREACH (bNode *, node, &nodetree->nodes) { + for (bNode *node : nodetree->all_nodes()) { if (do_image_nodes && node->typeinfo->nclass == NODE_CLASS_TEXTURE && node->typeinfo->type == SH_NODE_TEX_IMAGE && node->id) { if (!callback(node, userdata)) { diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc index c712d7ff668..c502381fc62 100644 --- a/source/blender/blenkernel/intern/node.cc +++ b/source/blender/blenkernel/intern/node.cc @@ -166,9 +166,9 @@ static void ntree_copy_data(Main * /*bmain*/, ID *id_dst, const ID *id_src, cons } /* update node->parent pointers */ - LISTBASE_FOREACH (bNode *, new_node, &ntree_dst->nodes) { - if (new_node->parent) { - new_node->parent = dst_runtime.nodes_by_id.lookup_key_as(new_node->parent->identifier); + for (bNode *node : ntree_dst->all_nodes()) { + if (node->parent) { + node->parent = dst_runtime.nodes_by_id.lookup_key_as(node->parent->identifier); } } @@ -323,7 +323,7 @@ static void node_foreach_id(ID *id, LibraryForeachIDData *data) BKE_LIB_FOREACHID_PROCESS_IDSUPER(data, ntree->gpd, IDWALK_CB_USER); - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { BKE_LIB_FOREACHID_PROCESS_ID(data, node->id, IDWALK_CB_USER); BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL( @@ -363,7 +363,7 @@ static void node_foreach_cache(ID *id, #endif if (nodetree->type == NTREE_COMPOSIT) { - LISTBASE_FOREACH (bNode *, node, &nodetree->nodes) { + for (bNode *node : nodetree->all_nodes()) { if (node->type == CMP_NODE_MOVIEDISTORTION) { key.offset_in_ID = size_t(BLI_ghashutil_strhash_p(node->name)); function_callback(id, &key, (void **)&node->storage, 0, user_data); @@ -378,7 +378,7 @@ static void node_foreach_path(ID *id, BPathForeachPathData *bpath_data) switch (ntree->type) { case NTREE_SHADER: { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->type == SH_NODE_SCRIPT) { NodeShaderScript *nss = reinterpret_cast(node->storage); BKE_bpath_foreach_path_fixed_process(bpath_data, nss->filepath); @@ -495,7 +495,7 @@ void ntreeBlendWrite(BlendWriter *writer, bNodeTree *ntree) BKE_animdata_blend_write(writer, ntree->adt); } - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { BLO_write_struct(writer, bNode, node); if (node->prop) { @@ -1229,7 +1229,7 @@ static void update_typeinfo(Main *bmain, } /* initialize nodes */ - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (nodetype && STREQ(node->idname, nodetype->idname)) { node_set_typeinfo(C, ntree, node, unregister ? nullptr : nodetype); } @@ -1266,7 +1266,7 @@ void ntreeSetTypes(const bContext *C, bNodeTree *ntree) { ntree_set_typeinfo(ntree, ntreeTypeFind(ntree->idname)); - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { node_set_typeinfo(C, ntree, node, nodeTypeFind(node->idname)); LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) { @@ -2023,7 +2023,7 @@ void nodeFindNode(bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_so bool nodeFindNodeTry(bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_sockindex) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { ListBase *sockets = (sock->in_out == SOCK_IN) ? &node->inputs : &node->outputs; int i; LISTBASE_FOREACH_INDEX (bNodeSocket *, tsock, sockets, i) { @@ -2778,7 +2778,7 @@ static void node_preview_init_tree_recursive(bNodeInstanceHash *previews, const int xsize, const int ysize) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { bNodeInstanceKey key = BKE_node_instance_key(parent_key, ntree, node); if (BKE_node_preview_used(node)) { @@ -2811,7 +2811,7 @@ static void node_preview_tag_used_recursive(bNodeInstanceHash *previews, bNodeTree *ntree, bNodeInstanceKey parent_key) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { bNodeInstanceKey key = BKE_node_instance_key(parent_key, ntree, node); if (BKE_node_preview_used(node)) { @@ -2926,7 +2926,7 @@ void nodeUnlinkNode(bNodeTree *ntree, bNode *node) static void node_unlink_attached(bNodeTree *ntree, bNode *parent) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->parent == parent) { nodeDetachNode(ntree, node); } @@ -3454,7 +3454,7 @@ bool ntreeHasTree(const bNodeTree *ntree, const bNodeTree *lookup) if (ntree == lookup) { return true; } - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (const bNode *node : ntree->all_nodes()) { if (ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && node->id) { if (ntreeHasTree((bNodeTree *)node->id, lookup)) { return true; @@ -3494,7 +3494,7 @@ bNode *nodeGetActive(bNodeTree *ntree) return nullptr; } - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->flag & NODE_ACTIVE) { return node; } @@ -3526,7 +3526,7 @@ void nodeClearActive(bNodeTree *ntree) return; } - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { node->flag &= ~NODE_ACTIVE; } } @@ -3540,7 +3540,7 @@ void nodeSetActive(bNodeTree *ntree, bNode *node) SET_FLAG_FROM_TEST(flags_to_set, is_texture_class, NODE_ACTIVE_TEXTURE); /* Make sure only one node is active per node tree. */ - LISTBASE_FOREACH (bNode *, tnode, &ntree->nodes) { + for (bNode *tnode : ntree->all_nodes()) { tnode->flag &= ~flags_to_set; } node->flag |= flags_to_set; @@ -3974,7 +3974,7 @@ void ntreeUpdateAllUsers(Main *main, ID *id) /* Update all users of ngroup, to add/remove sockets as needed. */ FOREACH_NODETREE_BEGIN (main, ntree, owner_id) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->id == id) { BKE_ntree_update_tag_node_property(ntree, node); need_update = true; @@ -4315,7 +4315,7 @@ bool BKE_node_tree_iter_step(NodeTreeIterStore *ntreeiter, bNodeTree **r_nodetre void BKE_nodetree_remove_layer_n(bNodeTree *ntree, Scene *scene, const int layer_index) { BLI_assert(layer_index != -1); - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->type == CMP_NODE_R_LAYERS && (Scene *)node->id == scene) { if (node->custom1 == layer_index) { node->custom1 = 0; diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc index 57d85c10677..bb063dadb06 100644 --- a/source/blender/blenkernel/intern/node_tree_update.cc +++ b/source/blender/blenkernel/intern/node_tree_update.cc @@ -733,7 +733,7 @@ struct NodeTreeRelations { this->ensure_all_trees(); for (bNodeTree *ntree : *all_trees_) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->id == nullptr) { continue; } @@ -1012,7 +1012,7 @@ class NodeTreeMainUpdater { #ifdef DEBUG /* Check the uniqueness of node identifiers. */ Set node_identifiers; - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { BLI_assert(node->identifier > 0); node_identifiers.add_new(node->identifier); } @@ -1053,7 +1053,7 @@ class NodeTreeMainUpdater { void update_individual_nodes(bNodeTree &ntree) { Vector group_inout_nodes; - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { nodeDeclarationEnsure(&ntree, node); if (this->should_update_individual_node(ntree, *node)) { bNodeType &ntype = *node->typeinfo; @@ -1610,7 +1610,7 @@ class NodeTreeMainUpdater { void reset_changed_flags(bNodeTree &ntree) { ntree.runtime->changed_flag = NTREE_CHANGED_NOTHING; - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { node->runtime->changed_flag = NTREE_CHANGED_NOTHING; node->runtime->update = 0; LISTBASE_FOREACH (bNodeSocket *, socket, &node->inputs) { @@ -1728,7 +1728,7 @@ void BKE_ntree_update_tag_parent_change(bNodeTree *ntree, bNode *node) void BKE_ntree_update_tag_id_changed(Main *bmain, ID *id) { FOREACH_NODETREE_BEGIN (bmain, ntree, ntree_id) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->id == id) { node->runtime->update |= NODE_UPDATE_ID; add_node_tag(ntree, node, NTREE_CHANGED_NODE_PROPERTY); diff --git a/source/blender/blenkernel/intern/scene.cc b/source/blender/blenkernel/intern/scene.cc index f86292c1471..8ec2d06adfc 100644 --- a/source/blender/blenkernel/intern/scene.cc +++ b/source/blender/blenkernel/intern/scene.cc @@ -79,6 +79,7 @@ #include "BKE_main.h" #include "BKE_mask.h" #include "BKE_node.h" +#include "BKE_node_runtime.hh" #include "BKE_object.h" #include "BKE_paint.h" #include "BKE_pointcache.h" @@ -1449,7 +1450,7 @@ static void scene_blend_read_data(BlendDataReader *reader, ID *id) /* patch for missing scene IDs, can't be in do-versions */ static void composite_patch(bNodeTree *ntree, Scene *scene) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->id == nullptr && ((node->type == CMP_NODE_R_LAYERS) || (node->type == CMP_NODE_CRYPTOMATTE && node->custom1 == CMP_CRYPTOMATTE_SRC_RENDER))) { diff --git a/source/blender/blenkernel/intern/texture.cc b/source/blender/blenkernel/intern/texture.cc index d60680fbe12..d709db7a4f8 100644 --- a/source/blender/blenkernel/intern/texture.cc +++ b/source/blender/blenkernel/intern/texture.cc @@ -730,7 +730,7 @@ static void texture_nodes_fetch_images_for_pool(Tex *texture, bNodeTree *ntree, struct ImagePool *pool) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->type == SH_NODE_TEX_IMAGE && node->id != nullptr) { Image *image = (Image *)node->id; BKE_image_pool_acquire_ibuf(image, &texture->iuser, pool); diff --git a/source/blender/blenloader/intern/versioning_common.cc b/source/blender/blenloader/intern/versioning_common.cc index 56ada76eae6..0bc3d7ee8ce 100644 --- a/source/blender/blenloader/intern/versioning_common.cc +++ b/source/blender/blenloader/intern/versioning_common.cc @@ -21,6 +21,7 @@ #include "BKE_main.h" #include "BKE_main_namemap.h" #include "BKE_node.h" +#include "BKE_node_runtime.hh" #include "MEM_guardedalloc.h" @@ -115,7 +116,7 @@ void version_node_socket_name(bNodeTree *ntree, const char *old_name, const char *new_name) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->type == node_type) { change_node_socket_name(&node->inputs, old_name, new_name); change_node_socket_name(&node->outputs, old_name, new_name); @@ -128,7 +129,7 @@ void version_node_input_socket_name(bNodeTree *ntree, const char *old_name, const char *new_name) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->type == node_type) { change_node_socket_name(&node->inputs, old_name, new_name); } @@ -140,7 +141,7 @@ void version_node_output_socket_name(bNodeTree *ntree, const char *old_name, const char *new_name) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->type == node_type) { change_node_socket_name(&node->outputs, old_name, new_name); } @@ -164,7 +165,7 @@ bNodeSocket *version_node_add_socket_if_not_exist(bNodeTree *ntree, void version_node_id(bNodeTree *ntree, const int node_type, const char *new_name) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->type == node_type) { if (!STREQ(node->idname, new_name)) { strcpy(node->idname, new_name); @@ -191,7 +192,7 @@ void version_node_socket_index_animdata(Main *bmain, continue; } - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->type != node_type) { continue; } @@ -216,7 +217,7 @@ void version_node_socket_index_animdata(Main *bmain, void version_socket_update_is_used(bNodeTree *ntree) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { LISTBASE_FOREACH (bNodeSocket *, socket, &node->inputs) { socket->flag &= ~SOCK_IN_USE; } diff --git a/source/blender/blenloader/intern/versioning_defaults.cc b/source/blender/blenloader/intern/versioning_defaults.cc index 3ae4d5479f0..cfa2d01697f 100644 --- a/source/blender/blenloader/intern/versioning_defaults.cc +++ b/source/blender/blenloader/intern/versioning_defaults.cc @@ -51,6 +51,7 @@ #include "BKE_material.h" #include "BKE_mesh.h" #include "BKE_node.h" +#include "BKE_node_runtime.hh" #include "BKE_node_tree_update.h" #include "BKE_paint.h" #include "BKE_screen.h" @@ -598,7 +599,7 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template) ma->roughness = 0.5f; if (ma->nodetree) { - LISTBASE_FOREACH (bNode *, node, &ma->nodetree->nodes) { + for (bNode *node : ma->nodetree->all_nodes()) { if (node->type == SH_NODE_BSDF_PRINCIPLED) { bNodeSocket *roughness_socket = nodeFindSocket(node, SOCK_IN, "Roughness"); bNodeSocketValueFloat *roughness_data = static_cast( diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index fc764b49e06..3f7db5f7349 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -1764,7 +1764,7 @@ void DepsgraphNodeBuilder::build_nodetree(bNodeTree *ntree) } /* nodetree's nodes... */ - LISTBASE_FOREACH (bNode *, bnode, &ntree->nodes) { + for (bNode *bnode : ntree->all_nodes()) { build_idproperties(bnode->prop); LISTBASE_FOREACH (bNodeSocket *, socket, &bnode->inputs) { build_nodetree_socket(socket); diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 0e5bcd349c8..53d56c3db36 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -2627,7 +2627,7 @@ void DepsgraphRelationBuilder::build_nodetree(bNodeTree *ntree) RELATION_FLAG_NO_FLUSH); } /* nodetree's nodes... */ - LISTBASE_FOREACH (bNode *, bnode, &ntree->nodes) { + for (bNode *bnode : ntree->all_nodes()) { build_idproperties(bnode->prop); LISTBASE_FOREACH (bNodeSocket *, socket, &bnode->inputs) { build_nodetree_socket(socket); diff --git a/source/blender/editors/space_buttons/buttons_texture.cc b/source/blender/editors/space_buttons/buttons_texture.cc index 478d55e5376..0557b5e9ca2 100644 --- a/source/blender/editors/space_buttons/buttons_texture.cc +++ b/source/blender/editors/space_buttons/buttons_texture.cc @@ -34,10 +34,9 @@ #include "BKE_linestyle.h" #include "BKE_modifier.h" #include "BKE_node.h" +#include "BKE_node_runtime.hh" #include "BKE_paint.h" #include "BKE_particle.h" -#ifdef WITH_FREESTYLE -#endif #include "RNA_access.h" #include "RNA_prototypes.h" @@ -163,7 +162,7 @@ static void buttons_texture_modifier_geonodes_users_add(Object *ob, PointerRNA ptr; PropertyRNA *prop; - LISTBASE_FOREACH (bNode *, node, &node_tree->nodes) { + for (bNode *node : node_tree->all_nodes()) { if (node->type == NODE_GROUP && node->id) { /* Recurse into the node group */ buttons_texture_modifier_geonodes_users_add(ob, nmd, (bNodeTree *)node->id, users); @@ -442,7 +441,7 @@ static void template_texture_select(bContext *C, void *user_p, void *UNUSED(arg) ct->texture = nullptr; /* Not totally sure if we should also change selection? */ - LISTBASE_FOREACH (bNode *, node, &user->ntree->nodes) { + for (bNode *node : user->ntree->all_nodes()) { nodeSetSelected(node, false); } nodeSetSelected(user->node, true); diff --git a/source/blender/editors/space_node/link_drag_search.cc b/source/blender/editors/space_node/link_drag_search.cc index 13a68a85ad1..8e156f409af 100644 --- a/source/blender/editors/space_node/link_drag_search.cc +++ b/source/blender/editors/space_node/link_drag_search.cc @@ -9,6 +9,7 @@ #include "BKE_context.h" #include "BKE_idprop.h" #include "BKE_lib_id.h" +#include "BKE_node_runtime.hh" #include "BKE_node_tree_update.h" #include "BKE_screen.h" @@ -91,7 +92,7 @@ static void add_group_input_node_fn(nodes::LinkSearchOpParams ¶ms) ED_node_tree_propagate_change(¶ms.C, CTX_data_main(¶ms.C), ¶ms.node_tree); /* Hide the new input in all other group input nodes, to avoid making them taller. */ - LISTBASE_FOREACH (bNode *, node, ¶ms.node_tree.nodes) { + for (bNode *node : params.node_tree.all_nodes()) { if (node->type == NODE_GROUP_INPUT) { bNodeSocket *new_group_input_socket = (bNodeSocket *)BLI_findlink(&node->outputs, group_input_index); diff --git a/source/blender/editors/space_node/node_draw.cc b/source/blender/editors/space_node/node_draw.cc index 31a146ed6a2..d2ad57a138c 100644 --- a/source/blender/editors/space_node/node_draw.cc +++ b/source/blender/editors/space_node/node_draw.cc @@ -2621,7 +2621,7 @@ static void count_multi_input_socket_links(bNodeTree &ntree, SpaceNode &snode) } } - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { LISTBASE_FOREACH (bNodeSocket *, socket, &node->inputs) { if (socket->flag & SOCK_MULTI_INPUT) { socket->runtime->total_inputs = counts.lookup_default(socket, 0); diff --git a/source/blender/editors/space_node/node_edit.cc b/source/blender/editors/space_node/node_edit.cc index 73d95f7af4b..005e441727a 100644 --- a/source/blender/editors/space_node/node_edit.cc +++ b/source/blender/editors/space_node/node_edit.cc @@ -116,7 +116,7 @@ float2 node_link_calculate_multi_input_position(const float2 &socket_position, static void compo_tag_output_nodes(bNodeTree *nodetree, int recalc_flags) { - LISTBASE_FOREACH (bNode *, node, &nodetree->nodes) { + for (bNode *node : nodetree->all_nodes()) { if (node->type == CMP_NODE_COMPOSITE) { if (recalc_flags & COM_RECALC_COMPOSITE) { node->flag |= NODE_DO_OUTPUT_RECALC; @@ -505,7 +505,7 @@ void ED_node_shader_default(const bContext *C, ID *id) ma->nodetree = ntreeCopyTree(bmain, ma_default->nodetree); ma->nodetree->owner_id = &ma->id; - LISTBASE_FOREACH (bNode *, node_iter, &ma->nodetree->nodes) { + for (bNode *node_iter : ma->nodetree->all_nodes()) { BLI_strncpy(node_iter->name, DATA_(node_iter->name), NODE_MAXSTR); nodeUniqueName(ma->nodetree, node_iter); } @@ -680,7 +680,7 @@ void ED_node_set_active( /* generic node group output: set node as active output */ if (node->type == NODE_GROUP_OUTPUT) { - LISTBASE_FOREACH (bNode *, node_iter, &ntree->nodes) { + for (bNode *node_iter : ntree->all_nodes()) { if (node_iter->type == NODE_GROUP_OUTPUT) { node_iter->flag &= ~NODE_DO_OUTPUT; } @@ -700,7 +700,7 @@ void ED_node_set_active( SH_NODE_OUTPUT_WORLD, SH_NODE_OUTPUT_LIGHT, SH_NODE_OUTPUT_LINESTYLE)) { - LISTBASE_FOREACH (bNode *, node_iter, &ntree->nodes) { + for (bNode *node_iter : ntree->all_nodes()) { if (node_iter->type == node->type) { node_iter->flag &= ~NODE_DO_OUTPUT; } @@ -759,7 +759,7 @@ void ED_node_set_active( else if (ntree->type == NTREE_COMPOSIT) { /* make active viewer, currently only 1 supported... */ if (ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { - LISTBASE_FOREACH (bNode *, node_iter, &ntree->nodes) { + for (bNode *node_iter : ntree->all_nodes()) { if (ELEM(node_iter->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { node_iter->flag &= ~NODE_DO_OUTPUT; } @@ -776,7 +776,7 @@ void ED_node_set_active( } else if (node->type == CMP_NODE_COMPOSITE) { if (was_output == 0) { - LISTBASE_FOREACH (bNode *, node_iter, &ntree->nodes) { + for (bNode *node_iter : ntree->all_nodes()) { if (node_iter->type == CMP_NODE_COMPOSITE) { node_iter->flag &= ~NODE_DO_OUTPUT; } @@ -804,7 +804,7 @@ void ED_node_set_active( else if (ntree->type == NTREE_GEOMETRY) { if (node->type == GEO_NODE_VIEWER) { if ((node->flag & NODE_DO_OUTPUT) == 0) { - LISTBASE_FOREACH (bNode *, node_iter, &ntree->nodes) { + for (bNode *node_iter : ntree->all_nodes()) { if (node_iter->type == GEO_NODE_VIEWER) { node_iter->flag &= ~NODE_DO_OUTPUT; } @@ -1362,7 +1362,7 @@ static int node_duplicate_exec(bContext *C, wmOperator *op) Map duplicated_node_groups; bNode *lastnode = (bNode *)ntree->nodes.last; - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->flag & SELECT) { bNode *new_node = bke::node_copy_with_mapping( ntree, *node, LIB_ID_COPY_DEFAULT, true, socket_map); @@ -1429,11 +1429,11 @@ static int node_duplicate_exec(bContext *C, wmOperator *op) } /* clear flags for recursive depth-first iteration */ - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { node->flag &= ~NODE_TEST; } /* reparent copied nodes */ - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if ((node->flag & SELECT) && !(node->flag & NODE_TEST)) { node_duplicate_reparent_recursive(ntree, node_map, node); } @@ -1445,7 +1445,7 @@ static int node_duplicate_exec(bContext *C, wmOperator *op) } /* deselect old nodes, select the copies instead */ - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->flag & SELECT) { /* has been set during copy above */ bNode *newnode = node_map.lookup(node); @@ -1500,6 +1500,7 @@ static int node_read_viewlayers_exec(bContext *C, wmOperator * /*op*/) Main *bmain = CTX_data_main(C); SpaceNode *snode = CTX_wm_space_node(C); Scene *curscene = CTX_data_scene(C); + bNodeTree &edit_tree = *snode->edittree; ED_preview_kill_jobs(CTX_wm_manager(C), bmain); @@ -1508,7 +1509,7 @@ static int node_read_viewlayers_exec(bContext *C, wmOperator * /*op*/) scene->id.tag |= LIB_TAG_DOIT; } - LISTBASE_FOREACH (bNode *, node, &snode->edittree->nodes) { + for (bNode *node : edit_tree.all_nodes()) { if ((node->type == CMP_NODE_R_LAYERS) || (node->type == CMP_NODE_CRYPTOMATTE && node->custom1 == CMP_CRYPTOMATTE_SRC_RENDER)) { ID *id = node->id; @@ -1523,7 +1524,7 @@ static int node_read_viewlayers_exec(bContext *C, wmOperator * /*op*/) } } - ED_node_tree_propagate_change(C, bmain, snode->edittree); + ED_node_tree_propagate_change(C, bmain, &edit_tree); return OPERATOR_FINISHED; } @@ -1551,7 +1552,7 @@ int node_render_changed_exec(bContext *C, wmOperator * /*op*/) * All the nodes are using same render result, so there is no need to do * anything smart about check how exactly scene is used. */ bNode *node = nullptr; - LISTBASE_FOREACH (bNode *, node_iter, &sce->nodetree->nodes) { + for (bNode *node_iter : sce->nodetree->all_nodes()) { if (node_iter->id == (ID *)sce) { node = node_iter; break; @@ -1610,7 +1611,7 @@ static void node_flag_toggle_exec(SpaceNode *snode, int toggle_flag) * If the flag is not set on all nodes, it is set. */ - LISTBASE_FOREACH (bNode *, node, &snode->edittree->nodes) { + for (bNode *node : snode->edittree->all_nodes()) { if (node->flag & SELECT) { if (toggle_flag == NODE_PREVIEW && (node->typeinfo->flag & NODE_PREVIEW) == 0) { @@ -1629,7 +1630,7 @@ static void node_flag_toggle_exec(SpaceNode *snode, int toggle_flag) } } } - LISTBASE_FOREACH (bNode *, node, &snode->edittree->nodes) { + for (bNode *node : snode->edittree->all_nodes()) { if (node->flag & SELECT) { if (toggle_flag == NODE_PREVIEW && (node->typeinfo->flag & NODE_PREVIEW) == 0) { @@ -1721,7 +1722,7 @@ static int node_deactivate_viewer_exec(bContext *C, wmOperator * /*op*/) bNode *active_viewer = viewer_path::find_geometry_nodes_viewer(workspace.viewer_path, snode); - LISTBASE_FOREACH (bNode *, node, &snode.edittree->nodes) { + for (bNode *node : snode.edittree->all_nodes()) { if (node->type != GEO_NODE_VIEWER) { continue; } @@ -1798,7 +1799,7 @@ static int node_socket_toggle_exec(bContext *C, wmOperator * /*op*/) /* Toggle for all selected nodes */ bool hidden = false; - LISTBASE_FOREACH (bNode *, node, &snode->edittree->nodes) { + for (bNode *node : snode->edittree->all_nodes()) { if (node->flag & SELECT) { if (node_has_hidden_sockets(node)) { hidden = true; @@ -1807,7 +1808,7 @@ static int node_socket_toggle_exec(bContext *C, wmOperator * /*op*/) } } - LISTBASE_FOREACH (bNode *, node, &snode->edittree->nodes) { + for (bNode *node : snode->edittree->all_nodes()) { if (node->flag & SELECT) { node_set_hidden_sockets(snode, node, !hidden); } @@ -1848,7 +1849,7 @@ static int node_mute_exec(bContext *C, wmOperator * /*op*/) ED_preview_kill_jobs(CTX_wm_manager(C), bmain); - LISTBASE_FOREACH (bNode *, node, &snode->edittree->nodes) { + for (bNode *node : snode->edittree->all_nodes()) { if ((node->flag & SELECT) && !node->typeinfo->no_muting) { node->flag ^= NODE_MUTED; BKE_ntree_update_tag_node_mute(snode->edittree, node); @@ -2198,7 +2199,7 @@ static int node_copy_color_exec(bContext *C, wmOperator * /*op*/) return OPERATOR_CANCELLED; } - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { if (node->flag & NODE_SELECT && node != active_node) { if (active_node->flag & NODE_CUSTOM_COLOR) { node->flag |= NODE_CUSTOM_COLOR; @@ -2249,7 +2250,7 @@ static int node_clipboard_copy_exec(bContext *C, wmOperator * /*op*/) Map node_map; Map socket_map; - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->flag & SELECT) { /* No ID refcounting, this node is virtual, * detached from any actual Blender data currently. */ @@ -2801,7 +2802,7 @@ static bool node_shader_script_update_text_recursive(RenderEngine *engine, done_trees.add_new(ntree); /* update each script that is using this text datablock */ - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->type == NODE_GROUP) { bNodeTree *ngroup = (bNodeTree *)node->id; if (ngroup && !done_trees.contains(ngroup)) { diff --git a/source/blender/editors/space_node/node_group.cc b/source/blender/editors/space_node/node_group.cc index dfbd95abb40..294bb687c4b 100644 --- a/source/blender/editors/space_node/node_group.cc +++ b/source/blender/editors/space_node/node_group.cc @@ -440,7 +440,7 @@ static bool node_group_separate_selected( Main &bmain, bNodeTree &ntree, bNodeTree &ngroup, const float2 &offset, const bool make_copy) { /* deselect all nodes in the target tree */ - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { nodeSetSelected(node, false); } @@ -642,7 +642,7 @@ void NODE_OT_group_separate(wmOperatorType *ot) /** \name Make Group Operator * \{ */ -static bool node_group_make_use_node(bNode &node, bNode *gnode) +static bool node_group_make_use_node(const bNode &node, bNode *gnode) { return (&node != gnode && !ELEM(node.type, NODE_GROUP_INPUT, NODE_GROUP_OUTPUT) && (node.flag & NODE_SELECT)); @@ -659,7 +659,7 @@ static bool node_group_make_test_selected(bNodeTree &ntree, bNodeTree *ngroup = ntreeAddTree(nullptr, "Pseudo Node Group", ntree_idname); /* check poll functions for selected nodes */ - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { if (node_group_make_use_node(*node, gnode)) { const char *disabled_hint = nullptr; if (node->typeinfo->poll_instance && @@ -699,7 +699,7 @@ static bool node_group_make_test_selected(bNodeTree &ntree, link->fromnode->runtime->done |= 2; } } - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { if (!(node->flag & NODE_SELECT) && node != gnode && node->runtime->done == 3) { return false; } @@ -713,7 +713,7 @@ static int node_get_selected_minmax( int totselect = 0; INIT_MINMAX2(min, max); - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (const bNode *node : ntree.all_nodes()) { if (node_group_make_use_node(*node, gnode)) { float2 loc; nodeToView(node, node->offsetx, node->offsety, &loc.x, &loc.y); @@ -814,7 +814,7 @@ static void node_group_make_insert_selected(const bContext &C, bNodeTree &ntree, static const float offsety = 0.0f; /* deselect all nodes in the target tree */ - LISTBASE_FOREACH (bNode *, node, &ngroup->nodes) { + for (bNode *node : ngroup->all_nodes()) { nodeSetSelected(node, false); } @@ -835,7 +835,7 @@ static void node_group_make_insert_selected(const bContext &C, bNodeTree &ntree, /* Detach unselected nodes inside frames when the frame is put into the group. Otherwise the * `parent` pointer becomes dangling. */ - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { if (node->parent == nullptr) { continue; } @@ -979,7 +979,7 @@ static void node_group_make_insert_selected(const bContext &C, bNodeTree &ntree, } /* move nodes in the group to the center */ - LISTBASE_FOREACH (bNode *, node, &ngroup->nodes) { + for (bNode *node : ngroup->all_nodes()) { if (node_group_make_use_node(*node, gnode) && !node->parent) { node->locx -= center[0]; node->locy -= center[1]; @@ -988,7 +988,7 @@ static void node_group_make_insert_selected(const bContext &C, bNodeTree &ntree, /* Expose all unlinked sockets too but only the visible ones. */ if (expose_visible) { - LISTBASE_FOREACH (bNode *, node, &ngroup->nodes) { + for (bNode *node : ngroup->all_nodes()) { if (node_group_make_use_node(*node, gnode)) { LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) { bool skip = false; diff --git a/source/blender/editors/space_node/node_relationships.cc b/source/blender/editors/space_node/node_relationships.cc index f37061e5efb..a9f19ec68b9 100644 --- a/source/blender/editors/space_node/node_relationships.cc +++ b/source/blender/editors/space_node/node_relationships.cc @@ -343,7 +343,7 @@ static void snode_autoconnect(SpaceNode &snode, const bool allow_multiple, const bNodeTree *ntree = snode.edittree; Vector sorted_nodes; - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->flag & NODE_SELECT) { sorted_nodes.append(node); } @@ -616,7 +616,7 @@ static int view_socket(const bContext &C, { bNode *viewer_node = nullptr; /* Try to find a viewer that is already active. */ - LISTBASE_FOREACH (bNode *, node, &btree.nodes) { + for (bNode *node : btree.all_nodes()) { if (is_viewer_node(*node)) { if (node->flag & NODE_DO_OUTPUT) { viewer_node = node; @@ -636,7 +636,7 @@ static int view_socket(const bContext &C, } if (viewer_node == nullptr) { - LISTBASE_FOREACH (bNode *, node, &btree.nodes) { + for (bNode *node : btree.all_nodes()) { if (is_viewer_node(*node)) { viewer_node = node; break; @@ -1554,7 +1554,7 @@ static int detach_links_exec(bContext *C, wmOperator * /*op*/) ED_preview_kill_jobs(CTX_wm_manager(C), CTX_data_main(C)); - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { if (node->flag & SELECT) { nodeInternalRelink(&ntree, node); } @@ -1593,7 +1593,7 @@ static int node_parent_set_exec(bContext *C, wmOperator * /*op*/) return OPERATOR_CANCELLED; } - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { if (node == frame) { continue; } @@ -1679,11 +1679,11 @@ static int node_join_exec(bContext *C, wmOperator * /*op*/) nodeSetActive(&ntree, frame_node); /* reset tags */ - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { node->runtime->done = 0; } - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { if (!(node->runtime->done & NODE_JOIN_DONE)) { node_join_attach_recursive(ntree, node, frame_node, selected_nodes); } @@ -1844,13 +1844,13 @@ static int node_detach_exec(bContext *C, wmOperator * /*op*/) bNodeTree &ntree = *snode.edittree; /* reset tags */ - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { node->runtime->done = 0; } /* detach nodes recursively * relative order is preserved here! */ - LISTBASE_FOREACH (bNode *, node, &ntree.nodes) { + for (bNode *node : ntree.all_nodes()) { if (!(node->runtime->done & NODE_DETACH_DONE)) { node_detach_recursive(ntree, node); } @@ -2166,7 +2166,7 @@ static void node_parent_offset_apply(NodeInsertOfsData *data, bNode *parent, con /* Flag all children as offset to prevent them from being offset * separately (they've already moved with the parent). */ - LISTBASE_FOREACH (bNode *, node, &data->ntree->nodes) { + for (bNode *node : data->ntree->all_nodes()) { if (nodeIsChildOf(parent, node)) { /* NODE_TEST is used to flag nodes that shouldn't be offset (again) */ node->flag |= NODE_TEST; @@ -2201,12 +2201,12 @@ static bool node_link_insert_offset_frame_chain_cb(bNode *fromnode, /** * Applies #NodeInsertOfsData.offset_x to all children of \a parent. */ -static void node_link_insert_offset_frame_chains(const bNodeTree *ntree, +static void node_link_insert_offset_frame_chains(bNodeTree *ntree, const bNode *parent, NodeInsertOfsData *data, const bool reversed) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (nodeIsChildOf(parent, node)) { nodeChainIter(ntree, node, node_link_insert_offset_frame_chain_cb, data, reversed); } @@ -2384,7 +2384,7 @@ static int node_insert_offset_modal(bContext *C, wmOperator *op, const wmEvent * /* handle animation - do this before possibly aborting due to duration, since * main thread might be so busy that node hasn't reached final position yet */ - LISTBASE_FOREACH (bNode *, node, &snode->edittree->nodes) { + for (bNode *node : snode->edittree->all_nodes()) { if (UNLIKELY(node->runtime->anim_ofsx)) { const float endval = node->runtime->anim_init_locx + node->runtime->anim_ofsx; if (IS_EQF(node->locx, endval) == false) { @@ -2410,7 +2410,7 @@ static int node_insert_offset_modal(bContext *C, wmOperator *op, const wmEvent * if (duration > NODE_INSOFS_ANIM_DURATION) { WM_event_remove_timer(CTX_wm_manager(C), nullptr, iofsd->anim_timer); - LISTBASE_FOREACH (bNode *, node, &snode->edittree->nodes) { + for (bNode *node : snode->edittree->all_nodes()) { node->runtime->anim_init_locx = node->runtime->anim_ofsx = 0.0f; } diff --git a/source/blender/editors/space_node/node_select.cc b/source/blender/editors/space_node/node_select.cc index 998d8b7d157..2476d329843 100644 --- a/source/blender/editors/space_node/node_select.cc +++ b/source/blender/editors/space_node/node_select.cc @@ -247,7 +247,7 @@ static void node_socket_toggle(bNode *node, bNodeSocket &sock, bool deselect_nod void node_deselect_all(SpaceNode &snode) { - LISTBASE_FOREACH (bNode *, node, &snode.edittree->nodes) { + for (bNode *node : snode.edittree->all_nodes()) { nodeSetSelected(node, false); } } @@ -259,7 +259,7 @@ void node_deselect_all_input_sockets(SpaceNode &snode, const bool deselect_nodes * We can do that more efficiently here. */ - LISTBASE_FOREACH (bNode *, node, &snode.edittree->nodes) { + for (bNode *node : snode.edittree->all_nodes()) { bool sel = false; LISTBASE_FOREACH (bNodeSocket *, socket, &node->inputs) { @@ -289,7 +289,7 @@ void node_deselect_all_output_sockets(SpaceNode &snode, const bool deselect_node * We can do that more efficiently here. */ - LISTBASE_FOREACH (bNode *, node, &snode.edittree->nodes) { + for (bNode *node : snode.edittree->all_nodes()) { bool sel = false; LISTBASE_FOREACH (bNodeSocket *, socket, &node->outputs) { @@ -334,7 +334,7 @@ Set get_selected_nodes(bNodeTree &node_tree) static bool node_select_grouped_type(bNodeTree &node_tree, bNode &node_act) { bool changed = false; - LISTBASE_FOREACH (bNode *, node, &node_tree.nodes) { + for (bNode *node : node_tree.all_nodes()) { if ((node->flag & SELECT) == 0) { if (node->type == node_act.type) { nodeSetSelected(node, true); @@ -348,7 +348,7 @@ static bool node_select_grouped_type(bNodeTree &node_tree, bNode &node_act) static bool node_select_grouped_color(bNodeTree &node_tree, bNode &node_act) { bool changed = false; - LISTBASE_FOREACH (bNode *, node, &node_tree.nodes) { + for (bNode *node : node_tree.all_nodes()) { if ((node->flag & SELECT) == 0) { if (compare_v3v3(node->color, node_act.color, 0.005f)) { nodeSetSelected(node, true); @@ -375,7 +375,7 @@ static bool node_select_grouped_name(bNodeTree &node_tree, bNode &node_act, cons suf_act = node_act.name; } - LISTBASE_FOREACH (bNode *, node, &node_tree.nodes) { + for (bNode *node : node_tree.all_nodes()) { if (node->flag & SELECT) { continue; } @@ -501,7 +501,7 @@ void node_select_single(bContext &C, bNode &node) const wmWindowManager *wm = CTX_wm_manager(&C); bool active_texture_changed = false; - LISTBASE_FOREACH (bNode *, node_iter, &node_tree.nodes) { + for (bNode *node_iter : node_tree.all_nodes()) { if (node_iter != &node) { nodeSetSelected(node_iter, false); } @@ -771,7 +771,7 @@ static int node_box_select_exec(bContext *C, wmOperator *op) node_deselect_all(snode); } - LISTBASE_FOREACH (bNode *, node, &node_tree.nodes) { + for (bNode *node : node_tree.all_nodes()) { bool is_inside = false; switch (node->type) { @@ -1326,7 +1326,7 @@ static void node_find_update_fn(const bContext *C, StringSearch *search = BLI_string_search_new(); - LISTBASE_FOREACH (bNode *, node, &snode->edittree->nodes) { + for (bNode *node : snode->edittree->all_nodes()) { char name[256]; node_find_create_label(node, name, ARRAY_SIZE(name)); BLI_string_search_add(search, name, node, 0); diff --git a/source/blender/editors/space_node/space_node.cc b/source/blender/editors/space_node/space_node.cc index cb124342a83..def49ad883b 100644 --- a/source/blender/editors/space_node/space_node.cc +++ b/source/blender/editors/space_node/space_node.cc @@ -19,6 +19,7 @@ #include "BKE_lib_id.h" #include "BKE_lib_remap.h" #include "BKE_node.h" +#include "BKE_node_runtime.hh" #include "BKE_screen.h" #include "ED_node.h" @@ -330,7 +331,7 @@ static bool any_node_uses_id(const bNodeTree *ntree, const ID *id) if (ELEM(nullptr, ntree, id)) { return false; } - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (const bNode *node : ntree->all_nodes()) { if (node->id == id) { return true; } diff --git a/source/blender/editors/transform/transform_convert_node.cc b/source/blender/editors/transform/transform_convert_node.cc index 446593a6cf8..bd6f419e16e 100644 --- a/source/blender/editors/transform/transform_convert_node.cc +++ b/source/blender/editors/transform/transform_convert_node.cc @@ -15,6 +15,7 @@ #include "BKE_context.h" #include "BKE_node.h" +#include "BKE_node_runtime.hh" #include "BKE_node_tree_update.h" #include "BKE_report.h" @@ -128,8 +129,8 @@ static void createTransNodeData(bContext * /*C*/, TransInfo *t) t->flag = t->flag & ~T_PROP_EDIT_ALL; /* set transform flags on nodes */ - LISTBASE_FOREACH (bNode *, node, &snode->edittree->nodes) { - if (node->flag & NODE_SELECT && is_node_parent_select(node) == false) { + for (bNode *node : snode->edittree->all_nodes()) { + if (node->flag & NODE_SELECT && !is_node_parent_select(node)) { node->flag |= NODE_TRANSFORM; tc->data_len++; } @@ -145,7 +146,7 @@ static void createTransNodeData(bContext * /*C*/, TransInfo *t) TransData *td = tc->data = MEM_cnew_array(tc->data_len, __func__); TransData2D *td2d = tc->data_2d = MEM_cnew_array(tc->data_len, __func__); - LISTBASE_FOREACH (bNode *, node, &snode->edittree->nodes) { + for (bNode *node : snode->edittree->all_nodes()) { if (node->flag & NODE_TRANSFORM) { NodeToTransData(td++, td2d++, node, dpi_fac); } diff --git a/source/blender/editors/util/ed_viewer_path.cc b/source/blender/editors/util/ed_viewer_path.cc index 48b1d08bf96..f0bbade6361 100644 --- a/source/blender/editors/util/ed_viewer_path.cc +++ b/source/blender/editors/util/ed_viewer_path.cc @@ -78,7 +78,7 @@ void activate_geometry_node(Main &bmain, SpaceNode &snode, bNode &node) if (wm == nullptr) { return; } - LISTBASE_FOREACH (bNode *, iter_node, &snode.edittree->nodes) { + for (bNode *iter_node : snode.edittree->all_nodes()) { if (iter_node->type == GEO_NODE_VIEWER) { SET_FLAG_FROM_TEST(iter_node->flag, iter_node == &node, NODE_DO_OUTPUT); } diff --git a/source/blender/io/usd/intern/usd_writer_material.cc b/source/blender/io/usd/intern/usd_writer_material.cc index 75abae79519..98cd4036fd0 100644 --- a/source/blender/io/usd/intern/usd_writer_material.cc +++ b/source/blender/io/usd/intern/usd_writer_material.cc @@ -9,6 +9,7 @@ #include "BKE_image_format.h" #include "BKE_main.h" #include "BKE_node.h" +#include "BKE_node_runtime.hh" #include "IMB_colormanagement.h" @@ -454,7 +455,7 @@ static bNode *traverse_channel(bNodeSocket *input, const short target_type) * material's node tree. Returns null if no instance of either type was found. */ static bNode *find_bsdf_node(Material *material) { - LISTBASE_FOREACH (bNode *, node, &material->nodetree->nodes) { + for (bNode *node : material->nodetree->all_nodes()) { if (ELEM(node->type, SH_NODE_BSDF_PRINCIPLED, SH_NODE_BSDF_DIFFUSE)) { return node; } diff --git a/source/blender/nodes/composite/node_composite_tree.cc b/source/blender/nodes/composite/node_composite_tree.cc index 60557b5d893..cf3594fc7b3 100644 --- a/source/blender/nodes/composite/node_composite_tree.cc +++ b/source/blender/nodes/composite/node_composite_tree.cc @@ -196,7 +196,7 @@ void ntreeCompositUpdateRLayers(bNodeTree *ntree) return; } - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->type == CMP_NODE_R_LAYERS) { node_cmp_rlayers_outputs(ntree, node); } @@ -213,7 +213,7 @@ void ntreeCompositTagRender(Scene *scene) for (Scene *sce_iter = (Scene *)G_MAIN->scenes.first; sce_iter; sce_iter = (Scene *)sce_iter->id.next) { if (sce_iter->nodetree) { - LISTBASE_FOREACH (bNode *, node, &sce_iter->nodetree->nodes) { + for (bNode *node : sce_iter->nodetree->all_nodes()) { if (node->id == (ID *)scene || node->type == CMP_NODE_COMPOSITE) { BKE_ntree_update_tag_node_property(sce_iter->nodetree, node); } @@ -233,7 +233,7 @@ void ntreeCompositClearTags(bNodeTree *ntree) return; } - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { node->runtime->need_exec = 0; if (node->type == NODE_GROUP) { ntreeCompositClearTags((bNodeTree *)node->id); diff --git a/source/blender/nodes/shader/node_shader_util.cc b/source/blender/nodes/shader/node_shader_util.cc index 929b11ded3e..fcf0e80a2e5 100644 --- a/source/blender/nodes/shader/node_shader_util.cc +++ b/source/blender/nodes/shader/node_shader_util.cc @@ -185,7 +185,7 @@ static bNode *node_get_active(bNodeTree *ntree, int sub_activity) return nullptr; } - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->flag & sub_activity) { activetexnode = node; /* if active we can return immediately */ @@ -221,7 +221,7 @@ static bNode *node_get_active(bNodeTree *ntree, int sub_activity) if (hasgroup) { /* node active texture node in this tree, look inside groups */ - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (bNode *node : ntree->all_nodes()) { if (node->type == NODE_GROUP) { bNode *tnode = node_get_active((bNodeTree *)node->id, sub_activity); if (tnode && ((tnode->flag & sub_activity) || !inactivenode)) { diff --git a/source/blender/nodes/shader/nodes/node_shader_common.cc b/source/blender/nodes/shader/nodes/node_shader_common.cc index 9d1d788da9d..613fa101d29 100644 --- a/source/blender/nodes/shader/nodes/node_shader_common.cc +++ b/source/blender/nodes/shader/nodes/node_shader_common.cc @@ -10,6 +10,7 @@ #include "BLI_utildefines.h" #include "BKE_node.h" +#include "BKE_node_runtime.hh" #include "NOD_common.h" #include "node_common.h" @@ -24,7 +25,7 @@ static void group_gpu_copy_inputs(bNode *gnode, GPUNodeStack *in, bNodeStack *gs { bNodeTree *ngroup = (bNodeTree *)gnode->id; - LISTBASE_FOREACH (bNode *, node, &ngroup->nodes) { + for (bNode *node : ngroup->all_nodes()) { if (node->type == NODE_GROUP_INPUT) { int a; LISTBASE_FOREACH_INDEX (bNodeSocket *, sock, &node->outputs, a) { @@ -44,7 +45,7 @@ static void group_gpu_move_outputs(bNode *gnode, GPUNodeStack *out, bNodeStack * { bNodeTree *ngroup = (bNodeTree *)gnode->id; - LISTBASE_FOREACH (bNode *, node, &ngroup->nodes) { + for (bNode *node : ngroup->all_nodes()) { if (node->type == NODE_GROUP_OUTPUT && (node->flag & NODE_DO_OUTPUT)) { int a; LISTBASE_FOREACH_INDEX (bNodeSocket *, sock, &node->inputs, a) { diff --git a/source/blender/render/intern/pipeline.cc b/source/blender/render/intern/pipeline.cc index 3b8a2a1df33..c3a6aa95700 100644 --- a/source/blender/render/intern/pipeline.cc +++ b/source/blender/render/intern/pipeline.cc @@ -1046,7 +1046,7 @@ static int compositor_needs_render(Scene *sce, int this_scene) return 1; } - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (const bNode *node : ntree->all_nodes()) { if (node->type == CMP_NODE_R_LAYERS && (node->flag & NODE_MUTED) == 0) { if (this_scene == 0 || node->id == nullptr || node->id == &sce->id) { return 1; @@ -1071,7 +1071,7 @@ static void do_render_compositor_scenes(Render *re) /* now foreach render-result node we do a full render */ /* results are stored in a way compositor will find it */ GSet *scenes_rendered = BLI_gset_ptr_new(__func__); - LISTBASE_FOREACH (bNode *, node, &re->scene->nodetree->nodes) { + for (bNode *node : re->scene->nodetree->all_nodes()) { if (node->type == CMP_NODE_R_LAYERS && (node->flag & NODE_MUTED) == 0) { if (node->id && node->id != (ID *)re->scene) { Scene *scene = (Scene *)node->id; @@ -1400,7 +1400,7 @@ static bool check_valid_compositing_camera(Scene *scene, ReportList *reports) { if (scene->r.scemode & R_DOCOMP && scene->use_nodes) { - LISTBASE_FOREACH (bNode *, node, &scene->nodetree->nodes) { + for (bNode *node : scene->nodetree->all_nodes()) { if (node->type == CMP_NODE_R_LAYERS && (node->flag & NODE_MUTED) == 0) { Scene *sce = node->id ? (Scene *)node->id : scene; if (sce->camera == nullptr) { @@ -1508,15 +1508,15 @@ static int check_valid_camera(Scene *scene, Object *camera_override, ReportList return true; } -static bool node_tree_has_compositor_output(bNodeTree *ntree) +static bool node_tree_has_compositor_output(const bNodeTree *ntree) { - LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { + for (const bNode *node : ntree->all_nodes()) { if (ELEM(node->type, CMP_NODE_COMPOSITE, CMP_NODE_OUTPUT_FILE)) { return true; } if (ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP)) { if (node->id) { - if (node_tree_has_compositor_output((bNodeTree *)node->id)) { + if (node_tree_has_compositor_output((const bNodeTree *)node->id)) { return true; } }