Cleanup: simplify logic in node tree iterator

Return separately for each node tree type.

This patch originally started as a refactor to change the logic of
iterating through compositing node trees but we ended up choosing
a different solution so only the small cleanup part is submitted here.

Pull Request: https://projects.blender.org/blender/blender/pulls/138205
This commit is contained in:
Habib Gahbiche
2025-05-01 11:08:13 +02:00
parent 5c801a7600
commit 987fc14ada

View File

@@ -4941,42 +4941,46 @@ bool node_tree_iterator_step(NodeTreeIterStore *ntreeiter, bNodeTree **r_nodetre
*r_nodetree = &node_tree;
*r_id = &node_tree.id;
ntreeiter->ngroup = reinterpret_cast<bNodeTree *>(node_tree.id.next);
return true;
}
else if (ntreeiter->scene) {
if (ntreeiter->scene) {
*r_nodetree = reinterpret_cast<bNodeTree *>(ntreeiter->scene->nodetree);
*r_id = &ntreeiter->scene->id;
ntreeiter->scene = reinterpret_cast<Scene *>(ntreeiter->scene->id.next);
return true;
}
else if (ntreeiter->mat) {
if (ntreeiter->mat) {
*r_nodetree = reinterpret_cast<bNodeTree *>(ntreeiter->mat->nodetree);
*r_id = &ntreeiter->mat->id;
ntreeiter->mat = reinterpret_cast<Material *>(ntreeiter->mat->id.next);
return true;
}
else if (ntreeiter->tex) {
if (ntreeiter->tex) {
*r_nodetree = reinterpret_cast<bNodeTree *>(ntreeiter->tex->nodetree);
*r_id = &ntreeiter->tex->id;
ntreeiter->tex = reinterpret_cast<Tex *>(ntreeiter->tex->id.next);
return true;
}
else if (ntreeiter->light) {
if (ntreeiter->light) {
*r_nodetree = reinterpret_cast<bNodeTree *>(ntreeiter->light->nodetree);
*r_id = &ntreeiter->light->id;
ntreeiter->light = reinterpret_cast<Light *>(ntreeiter->light->id.next);
return true;
}
else if (ntreeiter->world) {
if (ntreeiter->world) {
*r_nodetree = reinterpret_cast<bNodeTree *>(ntreeiter->world->nodetree);
*r_id = &ntreeiter->world->id;
ntreeiter->world = reinterpret_cast<World *>(ntreeiter->world->id.next);
return true;
}
else if (ntreeiter->linestyle) {
if (ntreeiter->linestyle) {
*r_nodetree = reinterpret_cast<bNodeTree *>(ntreeiter->linestyle->nodetree);
*r_id = &ntreeiter->linestyle->id;
ntreeiter->linestyle = reinterpret_cast<FreestyleLineStyle *>(ntreeiter->linestyle->id.next);
}
else {
return false;
return true;
}
return true;
return false;
}
void node_tree_remove_layer_n(bNodeTree *ntree, Scene *scene, const int layer_index)