object_prototypes = {}
unique_objects = []
export_names = {}
+ used_names = set()
for o in objs:
if o.name in object_prototypes:
continue
clones = [o]
- if not any(s.link=="OBJECT" for s in o.material_slots):
- for u in objs:
- if u is o:
- continue
- if u.data.name!=o.data.name:
- continue
- if any(s.link=="OBJECT" for s in u.material_slots):
- continue
+ 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)
+ clones.append(u)
prefix = o.name
for c in clones:
prefix = prefix[:pos]
if prefix:
- export_names[o.name+".object"] = prefix.strip(" .")+".object"
+ 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)
+
from .util import Progress
progress = Progress(self.show_progress and context)
progress.pop_task()
def export_scene(self, context, objs, progress, *, prototypes, resources):
- from .datafile import Resource, Statement
+ from .datafile import Resource, Statement, Token
scene_res = Resource("scene.scene", "scene")
+ scene_res.statements.append(Statement("type", Token(context.scene.scene_type.lower())))
+
for o in objs:
obj_res = resources[prototypes[o.name].name+".object"]
st = scene_res.create_reference_statement("object", obj_res, o.name)