mirror of
https://github.com/blender/blender
synced 2026-09-29 04:37:17 +03:00
Speedup rigid body "Copy from Active" operator
If there were lots of selected objects without an existing rigid body, we would add rigid bodies to them one by one. This would be slow in python, now we instead do this as a batch operation in C. On my (Intel) MacBook it used to take 60 seconds and with this change it takes about 0.3 seconds. Reviewed By: Sebastian Parborg Differential Revision: http://developer.blender.org/D11957
This commit is contained in:
parent
443ae0f22d
commit
2ae04254b3
1 changed files with 13 additions and 8 deletions
|
|
@ -60,17 +60,22 @@ class CopyRigidbodySettings(Operator):
|
|||
|
||||
def execute(self, context):
|
||||
obj_act = context.object
|
||||
view_layer = context.view_layer
|
||||
|
||||
# deselect all but mesh objects
|
||||
# Deselect all non mesh objects and objects that
|
||||
# already have a rigid body attached.
|
||||
rb_objects = []
|
||||
for o in context.selected_objects:
|
||||
if o.type != 'MESH':
|
||||
if o.type != 'MESH' or o.rigid_body is not None:
|
||||
o.select_set(False)
|
||||
elif o.rigid_body is None:
|
||||
# Add rigidbody to object!
|
||||
view_layer.objects.active = o
|
||||
bpy.ops.rigidbody.object_add()
|
||||
view_layer.objects.active = obj_act
|
||||
if o.rigid_body is not None:
|
||||
rb_objects.append(o)
|
||||
|
||||
bpy.ops.rigidbody.objects_add()
|
||||
|
||||
# Ensure that the rigid body objects
|
||||
# we've de-selected are selected again.
|
||||
for o in rb_objects:
|
||||
o.select_set(True)
|
||||
|
||||
objects = context.selected_objects
|
||||
if objects:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue