Fix T42394: Copy Rigid Body Tools would not work as expected if dest ob had no rigidb...
authorBastien Montagne <montagne29@wanadoo.fr>
Wed, 29 Oct 2014 12:06:08 +0000 (13:06 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Wed, 29 Oct 2014 12:11:10 +0000 (13:11 +0100)
Adding new object to RigidBodyWorld obgroup is not a good way to do that, since it only
takes effect (create rigid_body for new objects) when you change current frame.

Better to use rigidbody.object_add() operator here!

release/scripts/startup/bl_operators/rigidbody.py

index 9a3aae53cebf279fca8900b1af32d3ba8c3e225e..237c2d55672b19dbdca3bde1d650be668deddf2c 100644 (file)
@@ -64,17 +64,19 @@ class CopyRigidbodySettings(Operator):
         for o in context.selected_objects:
             if o.type != 'MESH':
                 o.select = False
+            elif o.rigid_body is None:
+                # Add rigidbody to object!
+                scene.objects.active = o
+                bpy.ops.rigidbody.object_add()
+        scene.objects.active = obj_act
 
         objects = context.selected_objects
         if objects:
-            # add selected objects to active one groups and recalculate
-            bpy.ops.group.objects_add_active()
-            scene.frame_set(scene.frame_current)
             rb_from = obj_act.rigid_body
             # copy settings
             for o in objects:
                 rb_to = o.rigid_body
-                if (o == obj_act) or (rb_to is None):
+                if o == obj_act:
                     continue
                 for attr in self._attrs:
                     setattr(rb_to, attr, getattr(rb_from, attr))