X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=blender%2Fio_mspgl%2Fexport_animation.py;h=e2c7733df69be358cd5e54029675a2caebc5361d;hp=b990e054ff0c8b8196207a1c1ef7c65e728eaf1d;hb=10994840972fb9bc6c1be210a9772a102f514149;hpb=c1df0788f783413fe8ccb779f0096cc7a3767149 diff --git a/blender/io_mspgl/export_animation.py b/blender/io_mspgl/export_animation.py index b990e054..e2c7733d 100644 --- a/blender/io_mspgl/export_animation.py +++ b/blender/io_mspgl/export_animation.py @@ -1,18 +1,57 @@ import math +import os class AnimationExporter: + def __init__(self): + self.export_all = False + self.collection = True + def export_to_file(self, context, out_fn): - anim_data = context.active_object.animation_data - if not anim_data: - raise Exception("Object has no animation data") - if not anim_data.action: - raise Exception("No active action") + if self.export_all: + actions = [] + for o in context.selected_objects: + if not o.animation_data: + continue + + for t in o.animation_data.nla_tracks: + for s in t.strips: + if s.action and s.action not in actions: + actions.append(s.action) + + if not actions: + raise Exception("No actions found") + + resources = {} + for a in actions: + resources[a.name+".anim"] = self.export_animation(context, a) + + path, base = os.path.split(out_fn) + base, ext = os.path.splitext(base) + + if self.collection: + from .datafile import Statement + with open(os.path.join(path, base+".mdc"), "w") as out_file: + for r in resources.values(): + st = Statement("animation", r.name) + st.sub = r.statements + st.write_to_file(out_file) + else: + for r in resources.values(): + with open(os.path.join(path, r.name), w) as out_file: + for s in r.statements: + s.write_to_file(out_file) + else: + anim_data = context.active_object.animation_data + if not anim_data: + raise Exception("Object has no animation data") + if not anim_data.action: + raise Exception("No active action") - resource = self.export_animation(context, anim_data.action) + resource = self.export_animation(context, anim_data.action) - with open(out_fn, "w") as out_file: - for s in resource.statements: - s.write_to_file(out_file) + with open(out_fn, "w") as out_file: + for s in resource.statements: + s.write_to_file(out_file) def export_animation(self, context, action): from .animation import create_animation_from_action