Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-03-27 02:37:41 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-03-27 02:37:41 +0400
commit9f91fc10ab648c7a0a28b3b3ef87078675b497c7 (patch)
tree603af2eeab0ac05bfb7379b2ac86c46bda79585c /source/blender/blenkernel/intern/node.c
parent1942452ce52fa917198fee6f389f1bc7e4c620fe (diff)
move FOREACH_NODETREE internal checks into functions.
BKE_node_tree_iter_init,step()
Diffstat (limited to 'source/blender/blenkernel/intern/node.c')
-rw-r--r--source/blender/blenkernel/intern/node.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index a1d9d8af627..7fcbc14a593 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -3593,3 +3593,56 @@ void clear_scene_in_nodes(Main *bmain, Scene *sce)
}
}
}
+
+
+/* -------------------------------------------------------------------- */
+/* NodeTree Iterator Helpers (FOREACH_NODETREE) */
+
+void BKE_node_tree_iter_init(struct NodeTreeIterStore *ntreeiter, struct Main *bmain)
+{
+ ntreeiter->ngroup = bmain->nodetree.first;
+ ntreeiter->scene = bmain->scene.first;
+ ntreeiter->mat = bmain->mat.first;
+ ntreeiter->tex = bmain->tex.first;
+ ntreeiter->lamp = bmain->lamp.first;
+ ntreeiter->world = bmain->world.first;
+}
+bool BKE_node_tree_iter_step(struct NodeTreeIterStore *ntreeiter,
+ bNodeTree **r_nodetree, struct ID **r_id)
+{
+ if (ntreeiter->ngroup) {
+ *r_nodetree = ntreeiter->ngroup;
+ *r_id = (ID *)ntreeiter->ngroup;
+ ntreeiter->ngroup = ntreeiter->ngroup->id.next;
+ }
+ else if (ntreeiter->scene) {
+ *r_nodetree = ntreeiter->scene->nodetree;
+ *r_id = (ID *)ntreeiter->scene;
+ ntreeiter->scene = ntreeiter->scene->id.next;
+ }
+ else if (ntreeiter->mat) {
+ *r_nodetree = ntreeiter->mat->nodetree;
+ *r_id = (ID *)ntreeiter->mat;
+ ntreeiter->mat = ntreeiter->mat->id.next;
+ }
+ else if (ntreeiter->tex) {
+ *r_nodetree = ntreeiter->tex->nodetree;
+ *r_id = (ID *)ntreeiter->tex;
+ ntreeiter->tex = ntreeiter->tex->id.next;
+ }
+ else if (ntreeiter->lamp) {
+ *r_nodetree = ntreeiter->lamp->nodetree;
+ *r_id = (ID *)ntreeiter->lamp;
+ ntreeiter->lamp = ntreeiter->lamp->id.next;
+ }
+ else if (ntreeiter->world) {
+ *r_nodetree = ntreeiter->world->nodetree;
+ *r_id = (ID *)ntreeiter->world;
+ ntreeiter->world = ntreeiter->world->id.next;
+ }
+ else {
+ return false;
+ }
+
+ return true;
+}