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:
@@ -64,17 +64,19 @@ class CopyRigidbodySettings(Operator):
|
|||||||
for o in context.selected_objects:
|
for o in context.selected_objects:
|
||||||
if o.type != 'MESH':
|
if o.type != 'MESH':
|
||||||
o.select = False
|
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
|
objects = context.selected_objects
|
||||||
if 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
|
rb_from = obj_act.rigid_body
|
||||||
# copy settings
|
# copy settings
|
||||||
for o in objects:
|
for o in objects:
|
||||||
rb_to = o.rigid_body
|
rb_to = o.rigid_body
|
||||||
if (o == obj_act) or (rb_to is None):
|
if o == obj_act:
|
||||||
continue
|
continue
|
||||||
for attr in self._attrs:
|
for attr in self._attrs:
|
||||||
setattr(rb_to, attr, getattr(rb_from, attr))
|
setattr(rb_to, attr, getattr(rb_from, attr))
|
||||||
|
|||||||
Reference in New Issue
Block a user