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); }
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); }
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); }
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); }