[Bf-blender-cvs] [e0b8dccd623] master: Fix T65674: Rigid bodies in duplicated collections are not automatically added to Rigid Body World.

Bastien Montagne noreply at git.blender.org
Mon Jun 17 16:10:25 CEST 2019


Commit: e0b8dccd623a39fe0bcc351484483932fde9d310
Author: Bastien Montagne
Date:   Mon Jun 17 16:07:19 2019 +0200
Branches: master
https://developer.blender.org/rBe0b8dccd623a39fe0bcc351484483932fde9d310

Fix T65674: Rigid bodies in duplicated collections are not automatically added to Rigid Body World.

As title says, we need to add back new copies of objects that are RB
items to the RBW collections...

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

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

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

diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c
index 88ec4f8793f..5b718909601 100644
--- a/source/blender/blenkernel/intern/collection.c
+++ b/source/blender/blenkernel/intern/collection.c
@@ -43,6 +43,7 @@
 #include "DNA_collection_types.h"
 #include "DNA_layer_types.h"
 #include "DNA_object_types.h"
+#include "DNA_rigidbody_types.h"
 #include "DNA_scene_types.h"
 
 #include "DEG_depsgraph.h"
@@ -286,6 +287,16 @@ static Collection *collection_duplicate_recursive(Main *bmain,
 
       collection_object_add(bmain, collection_new, ob_new, 0, true);
       collection_object_remove(bmain, collection_new, ob_old, false);
+
+      if (ob_new->rigidbody_object != NULL) {
+        BLI_assert(ob_old->rigidbody_object != NULL);
+        for (Scene *scene = bmain->scenes.first; scene != NULL; scene = scene->id.next) {
+          if (scene->rigidbody_world != NULL &&
+              BKE_collection_has_object(scene->rigidbody_world->group, ob_old)) {
+            collection_object_add(bmain, scene->rigidbody_world->group, ob_new, 0, true);
+          }
+        }
+      }
     }
   }



More information about the Bf-blender-cvs mailing list