X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=blender%2Fio_mspgl%2Fexport_scene.py;h=a538f4da3ba0f7cd6126e923d5d36693cb3b5a4a;hb=35f3540e50fdb9f45cd8e53cbe131610aa030a68;hp=fcd634fbf7330036c7880c4ef4ef2eca5f0fceb5;hpb=1a561b4e8d77fd14711b2304152e0b2408a49fdf;p=libs%2Fgl.git diff --git a/blender/io_mspgl/export_scene.py b/blender/io_mspgl/export_scene.py index fcd634fb..a538f4da 100644 --- a/blender/io_mspgl/export_scene.py +++ b/blender/io_mspgl/export_scene.py @@ -3,7 +3,6 @@ import os class SceneExporter: def __init__(self): - self.external_tech = True self.resource_collection = True def export(self, context, out_file): @@ -18,8 +17,30 @@ class SceneExporter: from .export_object import ObjectExporter object_export = ObjectExporter() - object_export.compound = True - object_export.external_tech = self.external_tech + + object_prototypes = {} + unique_objects = [] + 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 u.technique!=o.technique: + continue + if any(s.link=="OBJECT" for s in u.material_slots): + continue + + clones.append(u) + + unique_objects.append(o) + for c in clones: + object_prototypes[c.name] = o from .util import Progress progress = Progress(context) @@ -27,25 +48,26 @@ class SceneExporter: res_out = open_output(os.path.join(path, base+"_resources.mdc")) # TODO Export techniques as separate items in the collection - for i, o in enumerate(objs): + for i, o in enumerate(unique_objects): res_out.begin("object", '"{}.object"'.format(o.name)) progress.push_task(o.name, i/len(objs), (i+1)/len(objs)) - object_export.export(context, res_out, [o], progress) + object_export.export(context, res_out, o, progress) progress.pop_task() res_out.end() else: + object_export.separate_mesh = True object_export.separate_tech = True res_dir = os.path.join(path, base+"_resources") if not os.path.exists(res_dir): os.makedirs(res_dir) - for o in objs: + for i, o in enumerate(unique_objects): obj_out = open_output(os.path.join(res_dir, o.name+".object")) progress.push_task(o.name, i/len(objs), (i+1)/len(objs)) - object_export.export(context, obj_out, [o], progress) + object_export.export(context, obj_out, o, progress) progress.pop_task() for o in objs: - out_file.begin("object", '"{}.object"'.format(o.name)) + out_file.begin("object", '"{}.object"'.format(object_prototypes[o.name].name)) # XXX Parent relationships screw up the location and rotation out_file.write("position", o.location[0], o.location[1], o.location[2]) if o.rotation_mode=="AXIS_ANGLE":