Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2018-03-30 02:00:34 +0300
committerDalai Felinto <dfelinto@gmail.com>2018-03-30 02:03:47 +0300
commit41a81fece4ff031b512d2303ca8956824d76e6ff (patch)
tree088c76e02fbf5ff3b554fc97cc58696e4e6df720 /source/blender/blenkernel/intern/collection.c
parent534916258d619554106f5e8fd6bb62558e8980bc (diff)
Collections: API to select all scene collection objects
Diffstat (limited to 'source/blender/blenkernel/intern/collection.c')
-rw-r--r--source/blender/blenkernel/intern/collection.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c
index 669bbfb00cc..29e3539ab59 100644
--- a/source/blender/blenkernel/intern/collection.c
+++ b/source/blender/blenkernel/intern/collection.c
@@ -574,6 +574,33 @@ static void layer_collection_sync(LayerCollection *lc_dst, LayerCollection *lc_s
}
/**
+ * Select all the objects in this SceneCollection (and its nested collections) for this ViewLayer.
+ * Return true if any object was selected.
+ */
+bool BKE_collection_objects_select(ViewLayer *view_layer, SceneCollection *scene_collection)
+{
+ LayerCollection *layer_collection = BKE_layer_collection_first_from_scene_collection(view_layer, scene_collection);
+ if (layer_collection != NULL) {
+ BKE_layer_collection_objects_select(layer_collection);
+ return true;
+ }
+ else {
+ /* Slower approach, we need to iterate over all the objects and for each one we see if there is a base. */
+ bool changed = false;
+ for (LinkData *link = scene_collection->objects.first; link; link = link->next) {
+ Base *base = BKE_view_layer_base_find(view_layer, link->data);
+ if (base != NULL) {
+ if (((base->flag & BASE_SELECTED) == 0) && ((base->flag & BASE_SELECTABLED) != 0)) {
+ base->flag |= BASE_SELECTED;
+ changed = true;
+ }
+ }
+ }
+ return changed;
+ }
+}
+
+/**
* Leave only the master collection in, remove everything else.
* @param group
*/