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:
Diffstat (limited to 'source/blender/blenkernel/intern/layer.c')
-rw-r--r--source/blender/blenkernel/intern/layer.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 4da59ff302d..1ad34fde0fa 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -931,6 +931,8 @@ void BKE_main_collection_sync(const Main *bmain)
for (const Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) {
BKE_scene_collection_sync(scene);
}
+
+ BKE_layer_collection_local_sync_all(bmain);
}
void BKE_main_collection_sync_remap(const Main *bmain)
@@ -1246,6 +1248,28 @@ void BKE_layer_collection_local_sync(ViewLayer *view_layer, const View3D *v3d)
}
/**
+ * Sync the local collection for all the view-ports.
+ */
+void BKE_layer_collection_local_sync_all(const Main *bmain)
+{
+ LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
+ LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
+ LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
+ LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
+ if (area->spacetype != SPACE_VIEW3D) {
+ continue;
+ }
+ View3D *v3d = area->spacedata.first;
+ if (v3d->flag & V3D_LOCAL_COLLECTIONS) {
+ BKE_layer_collection_local_sync(view_layer, v3d);
+ }
+ }
+ }
+ }
+ }
+}
+
+/**
* Isolate the collection locally
*
* Same as BKE_layer_collection_isolate_local but for a viewport