[Bf-blender-cvs] [ae2af469200] master: Fix inconsistent naming and behavior for base visible/selected/editable.

Brecht Van Lommel noreply at git.blender.org
Tue Jan 8 18:51:36 CET 2019


Commit: ae2af4692009fe2c3fc97783f6d69aaa7cac5123
Author: Brecht Van Lommel
Date:   Tue Jan 8 18:19:12 2019 +0100
Branches: master
https://developer.blender.org/rBae2af4692009fe2c3fc97783f6d69aaa7cac5123

Fix inconsistent naming and behavior for base visible/selected/editable.

Fixes T60251.

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

M	source/blender/blenkernel/BKE_layer.h
M	source/blender/blenkernel/intern/layer.c
M	source/blender/blenkernel/intern/object.c
M	source/blender/editors/gpencil/gpencil_utils.c
M	source/blender/editors/object/object_edit.c
M	source/blender/editors/object/object_relations.c
M	source/blender/editors/screen/screen_context.c
M	source/blender/editors/space_view3d/view3d_edit.c
M	source/blender/editors/space_view3d/view3d_view.c
M	source/blender/editors/transform/transform_conversions.c
M	source/blender/editors/transform/transform_gizmo_3d.c
M	source/blender/editors/transform/transform_orientations.c
M	source/blender/editors/transform/transform_snap_object.c
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_object_api.c

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

diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 9ac0c56d93f..746733e4e0e 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -156,10 +156,6 @@ struct ObjectsInModeIteratorData {
 	struct Base *base_active;
 };
 
-void BKE_view_layer_renderable_objects_iterator_begin(BLI_Iterator *iter, void *data_in);
-void BKE_view_layer_renderable_objects_iterator_next(BLI_Iterator *iter);
-void BKE_view_layer_renderable_objects_iterator_end(BLI_Iterator *iter);
-
 void BKE_view_layer_bases_in_mode_iterator_begin(BLI_Iterator *iter, void *data_in);
 void BKE_view_layer_bases_in_mode_iterator_next(BLI_Iterator *iter);
 void BKE_view_layer_bases_in_mode_iterator_end(BLI_Iterator *iter);
@@ -320,34 +316,6 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter);
 	ITER_END;                                                                 \
 } ((void)0)
 
-struct ObjectsRenderableIteratorData {
-	struct Scene *scene;
-	struct Base base_temp;
-	struct Scene scene_temp;
-
-	struct {
-		struct ViewLayer *view_layer;
-		struct Base *base;
-		struct Scene *set;
-	} iter;
-};
-
-#define FOREACH_OBJECT_RENDERABLE_BEGIN(scene_, _instance)                    \
-{                                                                             \
-	struct ObjectsRenderableIteratorData data_ = {                            \
-	    .scene = (scene_),                                                    \
-	};                                                                        \
-	ITER_BEGIN(BKE_view_layer_renderable_objects_iterator_begin,              \
-	           BKE_view_layer_renderable_objects_iterator_next,               \
-	           BKE_view_layer_renderable_objects_iterator_end,                \
-	           &data_, Object *, _instance)
-
-
-#define FOREACH_OBJECT_RENDERABLE_END                                         \
-	ITER_END;                                                                 \
-} ((void)0)
-
-
 /* layer_utils.c */
 
 struct ObjectsInModeParams {
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 28833383029..304702ce475 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -1071,29 +1071,9 @@ typedef struct LayerObjectBaseIteratorData {
 	Base *base;
 } LayerObjectBaseIteratorData;
 
-static bool object_bases_iterator_is_valid_ex(View3D *v3d, Base *base, const int flag)
+static bool object_bases_iterator_is_valid(View3D *v3d, Base *base, const int flag)
 {
-	if (v3d != NULL) {
-		BLI_assert(v3d->spacetype == SPACE_VIEW3D);
-		if ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0) {
-			return false;
-		}
-
-		if (v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
-			return false;
-		}
-	}
-
-	if ((base->flag & flag) == 0) {
-		return false;
-	}
-
-	return true;
-}
-
-static bool object_bases_iterator_is_valid(View3D *v3d, Base *base)
-{
-	return object_bases_iterator_is_valid_ex(v3d, base, ~(0));
+	return BASE_VISIBLE(v3d, base) && ((base->flag & flag) == flag);
 }
 
 static void object_bases_iterator_begin(BLI_Iterator *iter, void *data_in_v, const int flag)
@@ -1116,7 +1096,7 @@ static void object_bases_iterator_begin(BLI_Iterator *iter, void *data_in_v, con
 	data->v3d = v3d;
 	data->base = base;
 
-	if (object_bases_iterator_is_valid_ex(v3d, base, flag) == false) {
+	if (object_bases_iterator_is_valid(v3d, base, flag) == false) {
 		object_bases_iterator_next(iter, flag);
 	}
 	else {
@@ -1130,7 +1110,7 @@ static void object_bases_iterator_next(BLI_Iterator *iter, const int flag)
 	Base *base = data->base->next;
 
 	while (base) {
-		if (object_bases_iterator_is_valid_ex(data->v3d, base, flag)) {
+		if (object_bases_iterator_is_valid(data->v3d, base, flag)) {
 			iter->current = base;
 			data->base = base;
 			return;
@@ -1197,12 +1177,12 @@ void BKE_view_layer_selected_objects_iterator_end(BLI_Iterator *iter)
 
 void BKE_view_layer_visible_objects_iterator_begin(BLI_Iterator *iter, void *data_in)
 {
-	objects_iterator_begin(iter, data_in, BASE_VISIBLE);
+	objects_iterator_begin(iter, data_in, 0);
 }
 
 void BKE_view_layer_visible_objects_iterator_next(BLI_Iterator *iter)
 {
-	objects_iterator_next(iter, BASE_VISIBLE);
+	objects_iterator_next(iter, 0);
 }
 
 void BKE_view_layer_visible_objects_iterator_end(BLI_Iterator *iter)
@@ -1273,12 +1253,12 @@ void BKE_view_layer_selected_bases_iterator_end(BLI_Iterator *iter)
 
 void BKE_view_layer_visible_bases_iterator_begin(BLI_Iterator *iter, void *data_in)
 {
-	object_bases_iterator_begin(iter, data_in, BASE_VISIBLE);
+	object_bases_iterator_begin(iter, data_in, 0);
 }
 
 void BKE_view_layer_visible_bases_iterator_next(BLI_Iterator *iter)
 {
-	object_bases_iterator_next(iter, BASE_VISIBLE);
+	object_bases_iterator_next(iter, 0);
 }
 
 void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter)
@@ -1288,104 +1268,15 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter)
 
 /** \} */
 
-/* -------------------------------------------------------------------- */
-/** \name BKE_view_layer_renderable_objects_iterator
- * \{ */
-
-void BKE_view_layer_renderable_objects_iterator_begin(BLI_Iterator *iter, void *data_in)
-{
-	struct ObjectsRenderableIteratorData *data = data_in;
-
-	/* Tag objects to prevent going over the same object twice. */
-	for (Scene *scene = data->scene; scene; scene = scene->set) {
-		for (ViewLayer *view_layer = scene->view_layers.first; view_layer; view_layer = view_layer->next) {
-			for (Base *base = view_layer->object_bases.first; base; base = base->next) {
-				 base->object->id.flag |= LIB_TAG_DOIT;
-			}
-		}
-	}
-
-	ViewLayer *view_layer = data->scene->view_layers.first;
-	data->iter.view_layer = view_layer;
-
-	data->base_temp.next = view_layer->object_bases.first;
-	data->iter.base = &data->base_temp;
-
-	data->iter.set = NULL;
-
-	iter->data = data_in;
-	BKE_view_layer_renderable_objects_iterator_next(iter);
-}
-
-void BKE_view_layer_renderable_objects_iterator_next(BLI_Iterator *iter)
-{
-	/* Set it early in case we need to exit and we are running from within a loop. */
-	iter->skip = true;
-
-	struct ObjectsRenderableIteratorData *data = iter->data;
-	Base *base = data->iter.base->next;
-
-	/* There is still a base in the current scene layer. */
-	if (base != NULL) {
-		Object *ob = base->object;
-
-		/* We need to set the iter.base even if the rest fail otherwise
-		 * we keep checking the exactly same base over and over again. */
-		data->iter.base = base;
-
-		if (ob->id.flag & LIB_TAG_DOIT) {
-			ob->id.flag &= ~LIB_TAG_DOIT;
-
-			if ((base->flag & BASE_VISIBLE) != 0) {
-				iter->skip = false;
-				iter->current = ob;
-			}
-		}
-		return;
-	}
-
-	/* Time to go to the next scene layer. */
-	if (data->iter.set == NULL) {
-		while ((data->iter.view_layer = data->iter.view_layer->next)) {
-			ViewLayer *view_layer = data->iter.view_layer;
-			if (view_layer->flag & VIEW_LAYER_RENDER) {
-				data->base_temp.next = view_layer->object_bases.first;
-				data->iter.base = &data->base_temp;
-				return;
-			}
-		}
-
-		/* Setup the "set" for the next iteration. */
-		data->scene_temp.set = data->scene;
-		data->iter.set = &data->scene_temp;
-		return;
-	}
-
-	/* Look for an object in the next set. */
-	while ((data->iter.set = data->iter.set->set)) {
-		ViewLayer *view_layer = BKE_view_layer_default_render(data->iter.set);
-		data->base_temp.next = view_layer->object_bases.first;
-		data->iter.base = &data->base_temp;
-		return;
-	}
-
-	iter->valid = false;
-}
-
-void BKE_view_layer_renderable_objects_iterator_end(BLI_Iterator *UNUSED(iter))
-{
-	/* Do nothing - iter->data was static allocated, we can't free it. */
-}
-
-/** \} */
-
 /* -------------------------------------------------------------------- */
 /** \name BKE_view_layer_bases_in_mode_iterator
  * \{ */
 
 static bool base_is_in_mode(struct ObjectsInModeIteratorData *data, Base *base)
 {
-	return (base->object->type == data->object_type) && (base->object->mode & data->object_mode) != 0;
+	return BASE_VISIBLE(data->v3d, base) &&
+	       (base->object->type == data->object_type) &&
+	       (base->object->mode & data->object_mode) != 0;
 }
 
 void BKE_view_layer_bases_in_mode_iterator_begin(BLI_Iterator *iter, void *data_in)
@@ -1406,7 +1297,7 @@ void BKE_view_layer_bases_in_mode_iterator_begin(BLI_Iterator *iter, void *data_
 		data->object_type = base->object->type;
 	}
 
-	if (object_bases_iterator_is_valid(data->v3d, base) == false || !base_is_in_mode(data, base)) {
+	if (!base_is_in_mode(data, base)) {
 		BKE_view_layer_bases_in_mode_iterator_next(iter);
 	}
 }
@@ -1428,10 +1319,7 @@ void BKE_view_layer_bases_in_mode_iterator_next(BLI_Iterator *iter)
 	}
 
 	while (base) {
-		if ((base != data->base_active) &&
-		    base_is_in_mode(data, base) &&
-		    object_bases_iterator_is_valid(data->v3d, base))
-		{
+		if ((base != data->base_active) && base_is_in_mode(data, base)) {
 			iter->current = base;
 			return;
 		}
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 8ce43049265..78e22c203ab 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -3670,8 +3670,8 @@ LinkNode *BKE_object_relational_superset(struct ViewLayer *view_layer, eObjectSe
 			obrel_list_add(&links, ob);
 		}
 		else {
-			if ((objectSet == OB_SET_SELECTED && TESTBASELIB_BGMODE(((View3D *)NULL), base)) ||
-			    (objectSet == OB_SET_VISIBLE  && BASE_EDITABLE_BGMODE(((View3D *)NULL), base)))
+			if ((objectSet == OB_SET_SELECTED && BASE_SELECTED_EDITABLE(((View3D *)NULL), base)) ||
+			    (objectSet == OB_SET_VISIBLE  && BASE_EDITABLE(((View3D *)NULL), base)))
 			{
 				Object *ob = base->object;
 
@@ -3701,7 +3701,7 @@ LinkNode *BKE_object_relational_superset(struct ViewLayer *view_layer, eObjectSe
 				if (includeFilter & (OB_REL_CHILDREN | OB_REL_CHILDREN_RECURSIVE)) {
 					Base *local_base;
 					for (local_base = view_layer->object_bases.first; local_base; local_base = local_base->next) {
-						if (BASE_EDITABLE_BGMODE(((View3D *)NULL), local_base)) {
+				

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list