Fix T42394: Copy Rigid Body Tools would not work as expected if dest ob had no rigidbody yet.

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!
This commit is contained in:
Bastien Montagne 2014-10-29 13:06:08 +01:00
parent a6c2d02366
commit 279cfdeef5
Notes: blender-bot 2023-02-14 10:49:38 +01:00
Referenced by issue #42394, UI update issue - Rigid Body Tools -> Copy Rigid Body Tools - Wrong behavior, when copying to objects that are NOT rigid bodies
Referenced by issue #39658, Rigid Body Tool_ Copy from active
1 changed files with 6 additions and 4 deletions

View 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))