Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'object_collection_manager/internals.py')
-rw-r--r--object_collection_manager/internals.py55
1 files changed, 36 insertions, 19 deletions
diff --git a/object_collection_manager/internals.py b/object_collection_manager/internals.py
index 8e0c5b90..8a225443 100644
--- a/object_collection_manager/internals.py
+++ b/object_collection_manager/internals.py
@@ -210,46 +210,63 @@ class QCDSlots():
if self.length() > 20:
break
- def renumerate(self, *, depth_first=False, beginning=False):
+ def renumerate(self, *, beginning=False, depth_first=False, constrain=False):
if beginning:
self.clear_slots()
self.overrides.clear()
starting_laycol_name = self.get_name("1")
- if starting_laycol_name:
- laycol = layer_collections[starting_laycol_name]["parent"]["ptr"]
- else:
+ if not starting_laycol_name:
laycol = bpy.context.view_layer.layer_collection
starting_laycol_name = laycol.children[0].name
self.clear_slots()
self.overrides.clear()
- laycol_iter_list = []
- for laycol in laycol.children:
- if laycol.name == starting_laycol_name or laycol_iter_list:
- laycol_iter_list.append(laycol)
+ if depth_first:
+ parent = layer_collections[starting_laycol_name]["parent"]
+ x = 1
+
+ for laycol in layer_collections.values():
+ if self.length() == 0 and starting_laycol_name != laycol["name"]:
+ continue
+
+ if constrain:
+ if self.length():
+ if laycol["parent"]["name"] == parent["name"]:
+ break
- while laycol_iter_list:
- layer_collection = laycol_iter_list.pop(0)
+ self.add_slot(f"{x}", laycol["name"])
- for x in range(20):
- if self.contains(name=layer_collection.name):
+ x += 1
+
+ if self.length() > 20:
break
- if not self.contains(idx=f"{x+1}"):
- self.add_slot(f"{x+1}", layer_collection.name)
+ else:
+ laycol = layer_collections[starting_laycol_name]["parent"]["ptr"]
+ laycol_iter_list = []
+ for laycol in laycol.children:
+ if laycol.name == starting_laycol_name:
+ laycol_iter_list.append(laycol)
- if depth_first:
- laycol_iter_list[0:0] = list(layer_collection.children)
+ elif not constrain and laycol_iter_list:
+ laycol_iter_list.append(laycol)
+
+ x = 1
+ while laycol_iter_list:
+ layer_collection = laycol_iter_list.pop(0)
+
+ self.add_slot(f"{x}", layer_collection.name)
- else:
laycol_iter_list.extend(list(layer_collection.children))
- if self.length() > 20:
- break
+ x += 1
+
+ if self.length() > 20:
+ break
for laycol in layer_collections.values():