]> git.tdb.fi Git - libs/gl.git/blobdiff - blender/io_mspgl/export_animation.py
Ignore already existing resources in DataExporter
[libs/gl.git] / blender / io_mspgl / export_animation.py
index e2c7733df69be358cd5e54029675a2caebc5361d..90d5d4125197d0557741febe92eb75d311181778 100644 (file)
@@ -5,6 +5,7 @@ class AnimationExporter:
        def __init__(self):
                self.export_all = False
                self.collection = True
+               self.looping_threshold = 0.001
 
        def export_to_file(self, context, out_fn):
                if self.export_all:
@@ -29,17 +30,13 @@ class AnimationExporter:
                        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)
+                               from .datafile import Resource
+                               dummy = Resource("dummy", "dummy")
+                               dummy.references = list(sorted(resources.values(), key=lambda r: r.name))
+                               dummy.write_collection(os.path.join(path, base+".mdc"), exclude_self=True)
                        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)
+                                       r.write_to_file(os.path.join(path, r.name))
                else:
                        anim_data = context.active_object.animation_data
                        if not anim_data:
@@ -49,16 +46,14 @@ class AnimationExporter:
 
                        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)
+                       resource.write_to_file(out_fn)
 
        def export_animation(self, context, action):
                from .animation import create_animation_from_action
-               anim = create_animation_from_action(context, action)
+               anim = create_animation_from_action(context, action, looping_threshold=self.looping_threshold)
 
                from .datafile import Resource, Statement
-               resource = Resource(action.name+".anim")
+               resource = Resource(action.name+".anim", "animation")
 
                components = [(0, "location", "position"), (1, "rotation_euler", "euler"), (2, "scale", "scale")]
                coords = "xyz"
@@ -100,5 +95,7 @@ class AnimationExporter:
 
                        resource.statements.append(st)
 
+               resource.statements.append(Statement("looping", anim.looping))
+
                return resource