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:
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
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue