forked from bartvdbraak/blender
Fix: Object selection delay with many objects
With object collection properties open there was a huge delay when switching active objects in a large scene, (~10k objects, ~5m vertices). This is due to a non-optimal function to query all the collections the object is in. To solve this the code can be simplified by using `bpy.types.Object.users_collection` This returns all the collections the object is in removing the need to compute this in python.
This commit is contained in:
parent
c20f209b1c
commit
5b90c046d5
@ -184,24 +184,18 @@ class OBJECT_PT_collections(ObjectButtonsPanel, Panel):
|
||||
row.operator("object.collection_add", text="Add to Collection")
|
||||
row.operator("object.collection_add", text="", icon='ADD')
|
||||
|
||||
obj_name = obj.name
|
||||
for collection in bpy.data.collections:
|
||||
# XXX this is slow and stupid!, we need 2 checks, one that's fast
|
||||
# and another that we can be sure its not a name collision
|
||||
# from linked library data
|
||||
collection_objects = collection.objects
|
||||
if obj_name in collection.objects and obj in collection_objects[:]:
|
||||
col = layout.column(align=True)
|
||||
for collection in obj.users_collection:
|
||||
col = layout.column(align=True)
|
||||
|
||||
col.context_pointer_set("collection", collection)
|
||||
col.context_pointer_set("collection", collection)
|
||||
|
||||
row = col.box().row()
|
||||
row.prop(collection, "name", text="")
|
||||
row.operator("object.collection_remove", text="", icon='X', emboss=False)
|
||||
row.menu("COLLECTION_MT_context_menu", icon='DOWNARROW_HLT', text="")
|
||||
row = col.box().row()
|
||||
row.prop(collection, "name", text="")
|
||||
row.operator("object.collection_remove", text="", icon='X', emboss=False)
|
||||
row.menu("COLLECTION_MT_context_menu", icon='DOWNARROW_HLT', text="")
|
||||
|
||||
row = col.box().row()
|
||||
row.prop(collection, "instance_offset", text="")
|
||||
row = col.box().row()
|
||||
row.prop(collection, "instance_offset", text="")
|
||||
|
||||
|
||||
class OBJECT_PT_display(ObjectButtonsPanel, Panel):
|
||||
|
Loading…
Reference in New Issue
Block a user