| 1 | 
 using System; | 
 
 
 
 
 
 | 2 | 
  | 
 
 
 
 
 
 | 3 | 
 namespace Oni.Physics | 
 
 
 
 
 
 | 4 | 
 { | 
 
 
 
 
 
 | 5 | 
     internal class ObjectDatWriter | 
 
 
 
 
 
 | 6 | 
     { | 
 
 
 
 
 
 | 7 | 
         internal static ImporterDescriptor WriteAnimation(ObjectAnimation animation, Importer importer) | 
 
 
 
 
 
 | 8 | 
         { | 
 
 
 
 
 
 | 9 | 
             var frame0 = animation.Keys[0]; | 
 
 
 
 
 
 | 10 | 
             var scaleMatrix = Matrix.CreateScale(frame0.Scale); | 
 
 
 
 
 
 | 11 | 
  | 
 
 
 
 
 
 | 12 | 
             var startMatrix = scaleMatrix | 
 
 
 
 
 
 | 13 | 
                 * Matrix.CreateFromQuaternion(frame0.Rotation) | 
 
 
 
 
 
 | 14 | 
                 * Matrix.CreateTranslation(frame0.Translation); | 
 
 
 
 
 
 | 15 | 
  | 
 
 
 
 
 
 | 16 | 
             var oban = importer.CreateInstance(TemplateTag.OBAN, animation.Name); | 
 
 
 
 
 
 | 17 | 
  | 
 
 
 
 
 
 | 18 | 
             using (var writer = oban.OpenWrite(12)) | 
 
 
 
 
 
 | 19 | 
             { | 
 
 
 
 
 
 | 20 | 
                 writer.Write((int)animation.Flags); | 
 
 
 
 
 
 | 21 | 
                 writer.WriteMatrix4x3(startMatrix); | 
 
 
 
 
 
 | 22 | 
                 writer.WriteMatrix4x3(scaleMatrix); | 
 
 
 
 
 
 | 23 | 
                 writer.WriteInt16(1); | 
 
 
 
 
 
 | 24 | 
                 writer.WriteUInt16(animation.Length); | 
 
 
 
 
 
 | 25 | 
                 writer.WriteInt16(animation.Stop); | 
 
 
 
 
 
 | 26 | 
                 writer.WriteUInt16(animation.Keys.Length); | 
 
 
 
 
 
 | 27 | 
  | 
 
 
 
 
 
 | 28 | 
                 foreach (var key in animation.Keys) | 
 
 
 
 
 
 | 29 | 
                 { | 
 
 
 
 
 
 | 30 | 
                     writer.Write(key.Rotation); | 
 
 
 
 
 
 | 31 | 
                     writer.Write(key.Translation); | 
 
 
 
 
 
 | 32 | 
                     writer.Write(key.Time); | 
 
 
 
 
 
 | 33 | 
                 } | 
 
 
 
 
 
 | 34 | 
             } | 
 
 
 
 
 
 | 35 | 
  | 
 
 
 
 
 
 | 36 | 
             return oban; | 
 
 
 
 
 
 | 37 | 
         } | 
 
 
 
 
 
 | 38 | 
     } | 
 
 
 
 
 
 | 39 | 
 } |