[Bf-blender-cvs] [0ab9b943a2a] blender2.8: Move util function to add new scene collection when active is not available from object to layer

Dalai Felinto noreply at git.blender.org
Fri May 26 17:47:41 CEST 2017


Commit: 0ab9b943a2aae617d36a4010bb60d3cbe8bd5d57
Author: Dalai Felinto
Date:   Fri May 26 15:10:35 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB0ab9b943a2aae617d36a4010bb60d3cbe8bd5d57

Move util function to add new scene collection when active is not available from object to layer

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

M	source/blender/blenkernel/BKE_layer.h
M	source/blender/blenkernel/intern/layer.c
M	source/blender/blenkernel/intern/object.c

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

diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index decba7c2ace..55b9f25a59c 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -79,6 +79,7 @@ void BKE_scene_layer_base_select(struct SceneLayer *sl, struct Base *selbase);
 void BKE_layer_collection_free(struct SceneLayer *sl, struct LayerCollection *lc);
 
 struct LayerCollection *BKE_layer_collection_active(struct SceneLayer *sl);
+struct LayerCollection *BKE_layer_collection_get_active_ensure(struct Scene *scene, struct SceneLayer *sl);
 
 int BKE_layer_collection_count(struct SceneLayer *sl);
 
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 8f384db40e3..77545016c57 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -370,6 +370,25 @@ LayerCollection *BKE_layer_collection_active(SceneLayer *sl)
 	return collection_from_index(&sl->layer_collections, sl->active_collection, &i);
 }
 
+
+/**
+ * Return layer collection to add new object(s).
+ * Create one if none exists.
+ */
+LayerCollection *BKE_layer_collection_get_active_ensure(Scene *scene, SceneLayer *sl)
+{
+	LayerCollection *lc = BKE_layer_collection_active(sl);
+
+	if (lc == NULL) {
+		BLI_assert(BLI_listbase_is_empty(&sl->layer_collections));
+		/* When there is no collection linked to this SceneLayer, create one. */
+		SceneCollection *sc = BKE_collection_add(scene, NULL, NULL);
+		lc = BKE_collection_link(sl, sc);
+	}
+
+	return lc;
+}
+
 /**
  * Recursively get the count of collections
  */
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 380b0a894df..8776e341b84 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -703,14 +703,7 @@ Object *BKE_object_add(
 
 	ob->data = BKE_object_obdata_add_from_type(bmain, type, name);
 
-	lc = BKE_layer_collection_active(sl);
-
-	if (lc == NULL) {
-		BLI_assert(BLI_listbase_count_ex(&sl->layer_collections, 1) == 0);
-		/* when there is no collection linked to this SceneLayer, create one */
-		SceneCollection *sc = BKE_collection_add(scene, NULL, NULL);
-		lc = BKE_collection_link(sl, sc);
-	}
+	lc = BKE_layer_collection_get_active_ensure(scene, sl);
 
 	BKE_collection_object_add(scene, lc->scene_collection, ob);




More information about the Bf-blender-cvs mailing list