示例#1
0
        public virtual void ReadFromFile(MemoryStream stream, bool isBigEndian)
        {
            DataType     = stream.ReadInt32(isBigEndian);
            Size         = stream.ReadInt32(isBigEndian);
            Unk00        = stream.ReadInt32(isBigEndian);
            KeyDataSize  = stream.ReadInt32(isBigEndian);
            Unk01        = stream.ReadInt32(isBigEndian);
            NumKeyFrames = stream.ReadInt32(isBigEndian);

            KeyFrames = new IKeyType[NumKeyFrames];

            for (int i = 0; i < NumKeyFrames; i++)
            {
                Debug.Assert(stream.Position != stream.Length, "Reached the end to early?");

                int Header = stream.ReadInt32(isBigEndian);
                Debug.Assert(Header == 1000, "Keyframe magic did not equal 1000");
                int Size    = stream.ReadInt32(isBigEndian);
                int KeyType = stream.ReadInt32(isBigEndian);
                AnimKeyParamTypes KeyParamType = (AnimKeyParamTypes)KeyType;

                IKeyType KeyParam = CutsceneKeyParamFactory.ReadAnimEntityFromFile(KeyParamType, Size, stream);
                KeyFrames[i] = KeyParam;
            }
        }
示例#2
0
        public virtual void WriteToFile(MemoryStream stream, bool isBigEndian)
        {
            stream.Write(DataType, isBigEndian);
            stream.Write(Size, isBigEndian);
            stream.Write(Unk00, isBigEndian);
            stream.Write(KeyDataSize, isBigEndian);
            stream.Write(Unk01, isBigEndian);
            stream.Write(NumKeyFrames, isBigEndian);

            for (int i = 0; i < NumKeyFrames; i++)
            {
                using (MemoryStream KeyParamStream = new MemoryStream())
                {
                    // Get KeyParam
                    IKeyType KeyParam = KeyFrames[i];
                    KeyParamStream.Write(1000, isBigEndian); // Write the header
                    KeyParamStream.Write(KeyParam.Size, isBigEndian);
                    KeyParamStream.Write(KeyParam.KeyType, isBigEndian);
                    KeyParam.WriteToFile(KeyParamStream, isBigEndian);

                    KeyParamStream.Seek(4, SeekOrigin.Begin);
                    KeyParamStream.Write((uint)KeyParamStream.Length, isBigEndian);
                    KeyParamStream.Seek(0, SeekOrigin.End);
                    stream.Write(KeyParamStream.ToArray());
                }
            }
        }
示例#3
0
 public void Add(IKeyType key, IValue value)
 {
     values.Add(key, value);
 }