/// <summary>
/// Reads a *.anim file into this Anim instance.
/// </summary>
/// <param name="FileData">The filedata for the *.anim file.</param>
public Anim(byte[] FileData)
{
MemoryStream MemStream = new MemoryStream(FileData);
BinaryReader Reader = new BinaryReader(MemStream);
m_Version = Endian.SwapUInt32(Reader.ReadUInt32());
m_Name = Encoding.ASCII.GetString(Reader.ReadBytes(Endian.SwapInt16(Reader.ReadInt16())));
m_Duration = Reader.ReadSingle() / 1000; //Why does this have to be divided by 1000? o_O
m_Distance = Reader.ReadSingle();
m_IsMoving = Reader.ReadByte();
m_NumTranslations = Endian.SwapUInt32(Reader.ReadUInt32());
m_TranslationsTableOffset = Reader.BaseStream.Position;
Reader.BaseStream.Seek(m_TranslationsTableOffset + 12 * m_NumTranslations, SeekOrigin.Begin);
m_NumRotations = Endian.SwapUInt32(Reader.ReadUInt32());
m_RotationsTableOffset = Reader.BaseStream.Position;
Reader.BaseStream.Seek(m_RotationsTableOffset + 16 * m_NumRotations, SeekOrigin.Begin);
m_MotionCount = Endian.SwapUInt32(Reader.ReadUInt32());
for (int i = 0; i < m_MotionCount; i++)
m_Motions.Add(ReadMotion(Reader));
}