Ejemplo n.º 1
0
        private static List <PsaAnimChunk> ReadAnimBlock(BinaryReader Reader, PsaHeader Header)
        {
            var Result = new List <PsaAnimChunk>();

            for (int i = 0; i < Header.DataCount; i++)
            {
                using (var DataReader = new BinaryReader(new MemoryStream(Reader.ReadBytes(Header.DataSize))))
                {
                    var Chunk = new PsaAnimChunk();

                    Chunk.Name             = Encoding.ASCII.GetString(DataReader.ReadBytes(64)).Replace("\0", "");
                    Chunk.Group            = Encoding.ASCII.GetString(DataReader.ReadBytes(64)).Replace("\0", "");
                    Chunk.BoneCount        = DataReader.ReadInt32();
                    Chunk.RootInclude      = DataReader.ReadInt32();
                    Chunk.CompressionFlags = DataReader.ReadInt32();
                    Chunk.KeyQuotum        = DataReader.ReadInt32();
                    Chunk.KeyReduction     = DataReader.ReadSingle();
                    Chunk.TrackTime        = DataReader.ReadSingle();
                    Chunk.AnimationRate    = DataReader.ReadSingle();
                    Chunk.StartBone        = DataReader.ReadInt32();
                    Chunk.FirstRawFrame    = DataReader.ReadInt32();
                    Chunk.RawFrameCount    = DataReader.ReadInt32();

                    Result.Add(Chunk);
                }
            }

            return(Result);
        }
Ejemplo n.º 2
0
        private static List <PsaBone> ReadBoneBlock(BinaryReader Reader, PsaHeader Header)
        {
            var Result = new List <PsaBone>();

            for (int i = 0; i < Header.DataCount; i++)
            {
                using (var DataReader = new BinaryReader(new MemoryStream(Reader.ReadBytes(Header.DataSize))))
                {
                    var Bone = new PsaBone();

                    Bone.Name        = Encoding.ASCII.GetString(DataReader.ReadBytes(64)).Replace("\0", "");
                    Bone.Flags       = DataReader.ReadInt32();
                    Bone.Children    = DataReader.ReadInt32();
                    Bone.ParentIndex = DataReader.ReadInt32();
                    Bone.RotationX   = DataReader.ReadSingle();
                    Bone.RotationY   = DataReader.ReadSingle();
                    Bone.RotationZ   = DataReader.ReadSingle();
                    Bone.RotationW   = DataReader.ReadSingle();
                    Bone.PositionX   = DataReader.ReadSingle();
                    Bone.PositionY   = DataReader.ReadSingle();
                    Bone.PositionZ   = DataReader.ReadSingle();

                    Result.Add(Bone);
                }
            }

            return(Result);
        }
Ejemplo n.º 3
0
        private static List <PsaAnimKey> ReadKeyBlock(BinaryReader Reader, PsaHeader Header)
        {
            var Result = new List <PsaAnimKey>();

            for (int i = 0; i < Header.DataCount; i++)
            {
                using (var DataReader = new BinaryReader(new MemoryStream(Reader.ReadBytes(Header.DataSize))))
                {
                    var Key = new PsaAnimKey();

                    Key.PositionX = DataReader.ReadSingle();
                    Key.PositionY = DataReader.ReadSingle();
                    Key.PositionZ = DataReader.ReadSingle();
                    Key.RotationX = DataReader.ReadSingle();
                    Key.RotationY = DataReader.ReadSingle();
                    Key.RotationZ = DataReader.ReadSingle();
                    Key.RotationW = DataReader.ReadSingle();
                    Key.Time      = DataReader.ReadSingle();

                    Result.Add(Key);
                }
            }

            return(Result);
        }
Ejemplo n.º 4
0
        private static PsaHeader ReadHeader(BinaryReader Reader)
        {
            var Result = new PsaHeader();

            Result.ChunkID   = Encoding.ASCII.GetString(Reader.ReadBytes(0x14)).Replace("\0", "");
            Result.TypeFlag  = Reader.ReadInt32();
            Result.DataSize  = Reader.ReadInt32();
            Result.DataCount = Reader.ReadInt32();

            return(Result);
        }