[Bf-blender-cvs] [2a8463e] soc-2016-layer_manager: Fix compiling/viewport drawing with WITH_ADVANCED_LAYERS disabled

Julian Eisel noreply at git.blender.org
Sun Jun 5 20:03:38 CEST 2016


Commit: 2a8463ee11670ed0d45775796188616a94d39fe4
Author: Julian Eisel
Date:   Sun Jun 5 20:02:32 2016 +0200
Branches: soc-2016-layer_manager
https://developer.blender.org/rB2a8463ee11670ed0d45775796188616a94d39fe4

Fix compiling/viewport drawing with WITH_ADVANCED_LAYERS disabled

===================================================================

M	source/blender/editors/space_view3d/view3d_draw.c

===================================================================

diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 2af3528..72ab423 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2739,6 +2739,56 @@ typedef struct {
 	unsigned int r_lay_used;
 } ObjectDrawData;
 
+static void view3d_object_drawstep_draw(ObjectDrawData *ddata, Base *base)
+{
+#define DRAW_OBJECT draw_object(ddata->scene, ddata->ar, ddata->v3d, base, ddata->dflag)
+#define DRAW_DUPLI  draw_dupli_objects(ddata->scene, ddata->ar, ddata->v3d, base)
+
+	switch (ddata->drawstep) {
+		case OB_DRAWSTEP_SET:
+			UI_ThemeColorBlend(TH_WIRE, TH_BACK, 0.6f);
+			DRAW_OBJECT;
+
+			if (base->object->transflag & OB_DUPLI) {
+				draw_dupli_objects_color(ddata->scene, ddata->ar, ddata->v3d, base, ddata->dflag, TH_UNDEFINED);
+			}
+			break;
+
+		case OB_DRAWSTEP_DUPLI_UNSEL:
+			ddata->r_lay_used |= base->lay;
+
+			/* dupli drawing */
+			if (base->object->transflag & OB_DUPLI) {
+				DRAW_DUPLI;
+			}
+			if ((base->flag & SELECT) == 0) {
+				if (base->object != ddata->scene->obedit)
+					DRAW_OBJECT;
+			}
+			break;
+
+		case OB_DRAWSTEP_SEL_EDIT:
+			if (base->object == ddata->scene->obedit || (base->flag & SELECT)) {
+				DRAW_OBJECT;
+			}
+			break;
+
+		case OB_DRAWSTEP_OFFSCREEN:
+			/* dupli drawing */
+			if (base->object->transflag & OB_DUPLI)
+				DRAW_DUPLI;
+
+			DRAW_OBJECT;
+			break;
+		default:
+			BLI_assert(0);
+	}
+
+#undef DRAW_OBJECT
+#undef DRAW_DUPLI
+}
+
+#ifdef WITH_ADVANCED_LAYERS
 /**
  * \brief Main object layer draw callback.
  *
@@ -2750,59 +2800,15 @@ static bool view3d_layer_objects_draw_cb(LayerTreeItem *litem, void *customdata)
 	LayerTypeObject *oblayer = (LayerTypeObject *)litem;
 	ObjectDrawData *ddata = customdata;
 
-#define DRAW_OBJECT draw_object(ddata->scene, ddata->ar, ddata->v3d, base, ddata->dflag)
-#define DRAW_DUPLI  draw_dupli_objects(ddata->scene, ddata->ar, ddata->v3d, base)
-
 	GHashIterator gh_iter;
 	GHASH_ITER(gh_iter, oblayer->basehash) {
 		Base *base = BLI_ghashIterator_getValue(&gh_iter);
-
-		switch (ddata->drawstep) {
-			case OB_DRAWSTEP_SET:
-				UI_ThemeColorBlend(TH_WIRE, TH_BACK, 0.6f);
-				DRAW_OBJECT;
-
-				if (base->object->transflag & OB_DUPLI) {
-					draw_dupli_objects_color(ddata->scene, ddata->ar, ddata->v3d, base, ddata->dflag, TH_UNDEFINED);
-				}
-				break;
-
-			case OB_DRAWSTEP_DUPLI_UNSEL:
-				ddata->r_lay_used |= base->lay;
-
-				/* dupli drawing */
-				if (base->object->transflag & OB_DUPLI) {
-					DRAW_DUPLI;
-				}
-				if ((base->flag & SELECT) == 0) {
-					if (base->object != ddata->scene->obedit)
-						DRAW_OBJECT;
-				}
-				break;
-
-			case OB_DRAWSTEP_SEL_EDIT:
-				if (base->object == ddata->scene->obedit || (base->flag & SELECT)) {
-					DRAW_OBJECT;
-				}
-				break;
-
-			case OB_DRAWSTEP_OFFSCREEN:
-				/* dupli drawing */
-				if (base->object->transflag & OB_DUPLI)
-					DRAW_DUPLI;
-
-				DRAW_OBJECT;
-				break;
-			default:
-				BLI_assert(0);
-		}
+		view3d_object_drawstep_draw(ddata, base);
 	}
 
-#undef DRAW_OBJECT
-#undef DRAW_DUPLI
-
 	return true;
 }
+#endif
 
 /**
  * \brief Draw all object layers.
@@ -2815,7 +2821,18 @@ static bool view3d_layer_objects_draw_cb(LayerTreeItem *litem, void *customdata)
 static void view3d_objectlayers_drawstep_draw(ObjectDrawData *ddata, ObjectDrawStep step)
 {
 	ddata->drawstep = step;
+#ifdef WITH_ADVANCED_LAYERS
 	BKE_layertree_iterate(ddata->scene->object_layers, view3d_layer_objects_draw_cb, ddata, false);
+#else
+	for (Base *base = ddata->scene->base.first; base; base = base->next) {
+		if (ddata->v3d->lay & base->lay) {
+			view3d_object_drawstep_draw(ddata, base);
+		}
+		else if (ddata->drawstep == OB_DRAWSTEP_DUPLI_UNSEL) {
+			ddata->r_lay_used |= base->lay;
+		}
+	}
+#endif
 }
 
 /**




More information about the Bf-blender-cvs mailing list