[Bf-blender-cvs] [3bdc42f97a8] master: Fix T82996: Library Overrides: Duplicate of overridden collection on Resync

Bastien Montagne noreply at git.blender.org
Mon Nov 30 17:19:36 CET 2020


Commit: 3bdc42f97a837766aec2bcd57917ef631570304f
Author: Bastien Montagne
Date:   Mon Nov 30 17:17:43 2020 +0100
Branches: master
https://developer.blender.org/rB3bdc42f97a837766aec2bcd57917ef631570304f

Fix T82996: Library Overrides: Duplicate of overridden collection on Resync

Properly use given reference pointer in
`lib_override_library_create_post_process` when it is a Collection one
too.

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

M	source/blender/blenkernel/intern/lib_override.c

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

diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index bcefcd5f001..d82315a0e7f 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -551,6 +551,10 @@ static void lib_override_library_create_post_process(
       if (ob_reference != NULL) {
         BKE_collection_add_from_object(bmain, scene, ob_reference, collection_new);
       }
+      else if (id_reference != NULL) {
+        BKE_collection_add_from_collection(
+            bmain, scene, ((Collection *)id_reference), collection_new);
+      }
       else {
         BKE_collection_add_from_collection(bmain, scene, ((Collection *)id_root), collection_new);
       }
@@ -841,6 +845,10 @@ bool BKE_lib_override_library_resync(Main *bmain, Scene *scene, ViewLayer *view_
   id_root = id_root_reference->newid;
 
   /* Essentially ensures that potentially new overrides of new objects will be instantiated. */
+  /* Note: Here 'reference' collection and 'newly added' collection are the same, which is fine
+   * since we already relinked old root override collection to new resync'ed one above. So this
+   * call is not expected to instantiate this new resync'ed collection anywhere, just to ensure
+   * that we do not have any stray objects. */
   lib_override_library_create_post_process(bmain, scene, view_layer, id_root_reference, id_root);
 
   /* Cleanup. */



More information about the Bf-blender-cvs mailing list