X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=blender%2Fio_mspgl%2Fexport_scene.py;h=cb623a1587f8fc14a0b15fe41c4eb30d4b3d6a4b;hb=736a076cf12aca02492eae6c77eff846bde0cdda;hp=abdd61b062ed6ae72bc2297b1b7d5e3c75d0e3bc;hpb=be787bc40ba0bb9c7bb622b6172f24b8b8119ec6;p=libs%2Fgl.git diff --git a/blender/io_mspgl/export_scene.py b/blender/io_mspgl/export_scene.py index abdd61b0..cb623a15 100644 --- a/blender/io_mspgl/export_scene.py +++ b/blender/io_mspgl/export_scene.py @@ -3,12 +3,23 @@ import os class SceneExporter: def __init__(self): + self.selected_only = False + self.visible_collections = True self.resource_collection = True + self.skip_existing = True self.show_progress = True def export_to_file(self, context, out_fn): - objs = [o for o in context.selected_objects if o.type=="MESH" and not o.lod_for_parent] + if self.selected_only: + objs = context.selected_objects + else: + objs = context.scene.objects + if self.visible_collections: + collections = [c.collection for c in context.view_layer.layer_collection.children if not (c.hide_viewport or c.collection.hide_viewport)] + objs = [o for o in objs if any((o.name in c.all_objects) for c in collections)] + objs = [o for o in objs if o.type=="MESH" and not o.lod_for_parent] objs = [o for o in objs if (not o.compound or o.parent not in objs)] + objs.sort(key=lambda x:x.name) path, base = os.path.split(out_fn) base, ext = os.path.splitext(base) @@ -30,8 +41,6 @@ class SceneExporter: 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 @@ -64,8 +73,8 @@ class SceneExporter: scene_res = self.export_scene(context, objs, progress, prototypes=object_prototypes, resources=resources) refs = scene_res.collect_references() - from .datafile import Statement if self.resource_collection: + from .datafile import Statement keywords = { ".mat": "material", ".mesh": "mesh", ".object": "object", @@ -73,6 +82,9 @@ class SceneExporter: ".tex2d": "texture2d" } with open(os.path.join(path, base+"_resources.mdc"), "w") as res_out: for r in refs: + if self.skip_existing and os.path.exists(os.path.join(path, r.name)): + continue + st = Statement(keywords[os.path.splitext(r.name)[1]], r.name) st.sub = r.statements st.write_to_file(res_out)