Commit: 6fd18197a80a9621a384c7df5bea18dfc9702cd2 Author: Julian Eisel Date: Sat Jul 9 10:41:01 2016 +0200 Branches: soc-2016-layer_manager https://developer.blender.org/rB6fd18197a80a9621a384c7df5bea18dfc9702cd2
Add utility iterator for easy base iterations =================================================================== M source/blender/blenkernel/BKE_object.h =================================================================== diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h index 07aab06..8d6a1ca 100644 --- a/source/blender/blenkernel/BKE_object.h +++ b/source/blender/blenkernel/BKE_object.h @@ -275,10 +275,30 @@ bool BKE_object_modifier_update_subframe(struct Scene *scene, struct Object *ob, /* Object Layers */ #define BKE_OBJECTLAYER_BASES_ITER_START(oblayer, idx_name, base_name) \ - for (int idx_name = 0; idx_name < oblayer->tot_bases; idx_name++) { \ + for (unsigned int idx_name = 0; idx_name < oblayer->tot_bases; idx_name++) { \ Base *base_name = oblayer->bases[idx_name]; #define BKE_OBJECTLAYER_BASES_ITER_END } (void)0 +/* Use this if BKE_BASES_ITER_START doesn't give enough control over variable names.*/ +#define BKE_BASES_ITER_START_EX(scene, layeridx_name, litem_name, oblayer_name, baseidx_name, base_name) \ + BKE_LAYERTREE_ITER_START(scene->object_layers, 0, layeridx_name, litem_name) \ + { \ + if (litem_name->type->type == LAYER_ITEMTYPE_LAYER) { \ + LayerTypeObject *oblayer_name = (LayerTypeObject *)litem_name; \ + BKE_OBJECTLAYER_BASES_ITER_START(oblayer_name, baseidx_name, base_name) + +/* Start iterating over all bases of the scene. This is basically a wrapper around layer + * tree and object layer iterator to make access a bit easier. Uses default variable names. */ +#define BKE_BASES_ITER_START(scene) \ + BKE_BASES_ITER_START_EX(scene, i, litem, oblayer, j, base) + +/* End BKE_BASES_ITER_START or BKE_BASES_ITER_START_EX. */ +#define BKE_BASES_ITER_END \ + BKE_OBJECTLAYER_BASES_ITER_END; \ + } \ + } \ + BKE_LAYERTREE_ITER_END /* ends with (void)0 */ + struct LayerTreeItem *BKE_objectlayer_add(struct LayerTree *tree, struct LayerTreeItem *parent, const char *name); void BKE_objectlayer_free(struct LayerTreeItem *litem); void BKE_objectlayer_base_assign(struct Base *base, struct LayerTreeItem *litem, const bool has_reserved); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs