using System; namespace Oni.Physics { internal class ObjectDatWriter { internal static ImporterDescriptor WriteAnimation(ObjectAnimation animation, Importer importer) { var frame0 = animation.Keys[0]; var scaleMatrix = Matrix.CreateScale(frame0.Scale); var startMatrix = scaleMatrix * Matrix.CreateFromQuaternion(frame0.Rotation) * Matrix.CreateTranslation(frame0.Translation); var oban = importer.CreateInstance(TemplateTag.OBAN, animation.Name); using (var writer = oban.OpenWrite(12)) { writer.Write((int)animation.Flags); writer.WriteMatrix4x3(startMatrix); writer.WriteMatrix4x3(scaleMatrix); writer.WriteInt16(1); writer.WriteUInt16(animation.Length); writer.WriteInt16(animation.Stop); writer.WriteUInt16(animation.Keys.Length); foreach (var key in animation.Keys) { writer.Write(key.Rotation); writer.Write(key.Translation); writer.Write(key.Time); } } return oban; } } }