- from .export_object import ObjectExporter
- object_export = ObjectExporter()
- object_export.compound = True
- object_export.external_tech = self.external_tech
+ object_prototypes = {}
+ unique_objects = []
+ export_names = {}
+ used_names = set()
+ for o in objs:
+ if o.name in object_prototypes:
+ continue
+
+ clones = [o]
+ for u in objs:
+ if u is o:
+ continue
+ if u.data.name!=o.data.name:
+ continue
+ if any(m1.name!=m2.name for m1, m2 in zip(o.material_slots, u.material_slots)):
+ continue
+
+ clones.append(u)
+
+ prefix = o.name
+ for c in clones:
+ while not c.name.startswith(prefix):
+ pos = max(prefix.rfind(' '), prefix.rfind('.'))
+ if pos<0:
+ break;
+ prefix = prefix[:pos]
+
+ if prefix:
+ export_names[o.name+".object"] = prefix.strip(" .")
+ else:
+ used_names.add(o.name)
+
+ unique_objects.append(o)
+ for c in clones:
+ object_prototypes[c.name] = o
+
+ for n, e in export_names.items():
+ if e in used_names:
+ number = 1
+ while "{}_{}".format(e, number) in used_names:
+ number += 1
+ e += "_{}".format(number)
+ export_names[n] = e+".object"
+ used_names.add(e)