X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=blender%2Fio_mspgl%2Fexport.py;h=cf4312d2631993aeb37d7e4d9fd925c70952ff1f;hb=ffeb9a14765703d3d2e73cec751f5099e0d4c341;hp=4751468b416a4b1316ae7c089dc3990c09707e0e;hpb=4ae86b67b65259a3d73ef191ca7cef3e7f3135d8;p=libs%2Fgl.git diff --git a/blender/io_mspgl/export.py b/blender/io_mspgl/export.py index 4751468b..cf4312d2 100644 --- a/blender/io_mspgl/export.py +++ b/blender/io_mspgl/export.py @@ -1,14 +1,10 @@ import os +import itertools class DataExporter: - def __init__(self): - self.show_progress = True - self.collection = False - self.shared_resources = True - - def export_to_file(self, context, out_fn): + def export_to_file(self, context, out_fn, *, collection=False, shared_resources=False): from .util import Progress - progress = Progress(self.show_progress and context) + progress = Progress(context) objects = context.selected_objects @@ -21,7 +17,7 @@ class DataExporter: base, ext = os.path.splitext(base) refs = dummy_res.collect_references() - if not self.shared_resources: + if not shared_resources: numbers = {} for r in refs: res_ext = os.path.splitext(r.name)[1] @@ -32,7 +28,7 @@ class DataExporter: r.name = base+res_ext numbers[res_ext] = n+1 - if self.collection: + if collection: dummy_res.write_collection(out_fn, exclude_self=True) else: for r in refs: @@ -45,6 +41,7 @@ class DataExporter: object_exporter = None camera_exporter = None armature_exporter = None + light_exporter = None from .datafile import Resource dummy_res = Resource("dummy", "dummy") @@ -75,6 +72,13 @@ class DataExporter: from .export_armature import ArmatureExporter armature_exporter = ArmatureExporter() res = armature_exporter.export_armature(context, obj) + elif obj.type=='LIGHT': + res_name = obj.name+".light" + if res_name not in resources: + if not light_exporter: + from .export_light import LightExporter + light_exporter = LightExporter() + res = light_exporter.export_light(obj) if res: resources[res_name] = res @@ -83,3 +87,59 @@ class DataExporter: progress.pop_task() return dummy_res + +class ProjectExporter: + def export_to_directory(self, context, out_dir): + from .util import Progress + progress = Progress(context) + + from .scene import create_scene_chain + + scenes = {} + sequences = [] + for s in context.blend_data.scenes: + if s.export_disposition=='IGNORE': + continue + + if s.export_disposition=='SEQUENCE': + scene = create_scene_chain(s, scenes) + sequences.append(scene) + elif s.name not in scenes: + scene = create_scene(s) + if s.export_disposition=='SCENE': + scenes[scene.name] = scene + + all_objects = [] + for s in scenes.values(): + all_objects += s.prototypes + all_objects += s.lights + if s.camera: + all_objects.append(s.camera) + + from .util import make_unique + all_objects = make_unique(all_objects) + + from .export_scene import SceneExporter + scene_exporter = SceneExporter() + data_exporter = DataExporter() + + resources = {} + dummy_res = data_exporter.export_resources(context, all_objects, resources, None, progress) + for s in scenes.values(): + scene_name = s.name+".scene" + if scene_name not in resources: + scene_res = scene_exporter.export_scene(s, resources) + resources[scene_name] = scene_res + dummy_res.create_reference_statement("ref", scene_res) + + for s in sequences: + seq_name = s.name+".seq" + if seq_name not in resources: + scene_exporter.export_sequence_resources(s, resources) + seq_res = scene_exporter.export_sequence(s, resources) + resources[seq_name] = seq_res + dummy_res.create_reference_statement("ref", seq_res) + + refs = dummy_res.collect_references() + for r in refs: + r.write_to_file(os.path.join(out_dir, r.name))