[Bf-blender-cvs] [3438a84] soc-2016-layer_manager: Fix compiling without WITH_ADVANCED_LAYERS enabled (tm)
Julian Eisel
noreply at git.blender.org
Sat Jul 9 18:24:52 CEST 2016
Commit: 3438a84277d7176d2169786b1eb1fee853b975b5
Author: Julian Eisel
Date: Sat Jul 9 18:23:51 2016 +0200
Branches: soc-2016-layer_manager
https://developer.blender.org/rB3438a84277d7176d2169786b1eb1fee853b975b5
Fix compiling without WITH_ADVANCED_LAYERS enabled (tm)
===================================================================
M source/blender/blenkernel/BKE_object.h
M source/blender/blenkernel/intern/scene.c
M source/blender/editors/object/object_add.c
M source/blender/editors/space_layers/CMakeLists.txt
M source/blender/editors/space_view3d/view3d_draw.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 8d6a1ca..e2d63c9 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -274,18 +274,25 @@ bool BKE_object_modifier_update_subframe(struct Scene *scene, struct Object *ob,
/* -------------------------------------------------------------------- */
/* Object Layers */
+#ifdef WITH_ADVANCED_LAYERS
#define BKE_OBJECTLAYER_BASES_ITER_START(oblayer, idx_name, base_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
+#endif
/* 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) \
+#ifdef WITH_ADVANCED_LAYERS
+ #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)
+#else
+ #define BKE_BASES_ITER_START_EX(scene, layeridx_name, litem_name, oblayer_name, baseidx_name, base_name) \
+ for (Base *base_name = scene->base.first; base_name; base_name = base_name->next) {
+#endif /* WITH_ADVANCED_LAYERS */
/* 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. */
@@ -293,11 +300,15 @@ bool BKE_object_modifier_update_subframe(struct Scene *scene, struct Object *ob,
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 \
+#ifdef WITH_ADVANCED_LAYERS
+ #define BKE_BASES_ITER_END \
BKE_OBJECTLAYER_BASES_ITER_END; \
} \
} \
BKE_LAYERTREE_ITER_END /* ends with (void)0 */
+#else
+ #define BKE_BASES_ITER_END } (void)0
+#endif
struct LayerTreeItem *BKE_objectlayer_add(struct LayerTree *tree, struct LayerTreeItem *parent, const char *name);
void BKE_objectlayer_free(struct LayerTreeItem *litem);
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index c3fd1b9..88e9736 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -1148,8 +1148,10 @@ Base *BKE_scene_base_add(Scene *sce, Object *ob)
Base *b = MEM_callocN(sizeof(*b), __func__);
BLI_addhead(&sce->base, b);
+#ifdef WITH_ADVANCED_LAYERS
BLI_assert(sce->object_layers->active_layer != NULL); /* XXX quite easy to break currently */
BKE_objectlayer_base_assign(b, sce->object_layers->active_layer, false);
+#endif
b->object = ob;
b->flag = ob->flag;
@@ -1166,8 +1168,10 @@ void BKE_scene_base_unlink(Scene *sce, Base *base)
/* remove rigid body object from world before removing object */
if (base->object->rigidbody_object)
BKE_rigidbody_remove_object(sce, base->object);
+#ifdef WITH_ADVANCED_LAYERS
if (base->layer)
BKE_objectlayer_base_unassign(base);
+#endif
BLI_remlink(&sce->base, base);
if (sce->basact == base)
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index c7f2178..03fb530 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -1918,8 +1918,10 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base
*basen = *base;
BLI_addhead(&scene->base, basen); /* addhead: prevent eternal loop */
basen->object = obn;
+#ifdef WITH_ADVANCED_LAYERS
BLI_assert(scene->object_layers->active_layer);
BKE_objectlayer_base_assign(basen, scene->object_layers->active_layer, false);
+#endif
/* 1) duplis should end up in same group as the original
* 2) Rigid Body sim participants MUST always be part of a group...
diff --git a/source/blender/editors/space_layers/CMakeLists.txt b/source/blender/editors/space_layers/CMakeLists.txt
index 22d0449..e5299f8 100644
--- a/source/blender/editors/space_layers/CMakeLists.txt
+++ b/source/blender/editors/space_layers/CMakeLists.txt
@@ -44,4 +44,8 @@ set(SRC
layers_intern.h
)
+if(WITH_ADVANCED_LAYERS)
+ add_definitions(-DWITH_ADVANCED_LAYERS)
+endif()
+
blender_add_lib(bf_editor_space_layers "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 43b8b20..27991f6 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2844,7 +2844,8 @@ static void view3d_objectlayers_drawstep_draw(
else if (drawstep == OB_DRAWSTEP_DUPLI_UNSEL) {
*r_lay_used |= base->lay;
}
- BKE_BASES_ITER_END;
+ }
+ BKE_BASES_ITER_END;
#endif
}
More information about the Bf-blender-cvs
mailing list