public CANM(EndianBinaryReader er) { Signature = er.ReadString(Encoding.ASCII, 4); if (Signature != "CANM") { throw new SignatureNotCorrectException(Signature, "CANM", er.BaseStream.Position); } Revision = er.ReadUInt32(); NameOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32(); TargetAnimationGroupNameOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32(); LoopMode = er.ReadUInt32(); FrameSize = er.ReadSingle(); NrMemberAnimations = er.ReadUInt32(); MemberAnimationDictOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32(); NrUserDataEntries = er.ReadUInt32(); UserDataOffset = er.ReadUInt32(); long curpos = er.BaseStream.Position; er.BaseStream.Position = NameOffset; Name = er.ReadStringNT(Encoding.ASCII); er.BaseStream.Position = TargetAnimationGroupNameOffset; TargetAnimationGroupName = er.ReadStringNT(Encoding.ASCII); er.BaseStream.Position = MemberAnimationDictOffset; MemberAnimationDictionary = new DICT(er); MemberAnimations = new MemberAnimationData[NrMemberAnimations]; for (int i = 0; i < NrMemberAnimations; i++) { er.BaseStream.Position = MemberAnimationDictionary[i].DataOffset; MemberAnimations[i] = new MemberAnimationData(er); } er.BaseStream.Position = curpos; }
public CANM(EndianBinaryReader er) { Signature = er.ReadString(Encoding.ASCII, 4); if (Signature != "CANM") throw new SignatureNotCorrectException(Signature, "CANM", er.BaseStream.Position); Revision = er.ReadUInt32(); NameOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32(); TargetAnimationGroupNameOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32(); LoopMode = er.ReadUInt32(); FrameSize = er.ReadSingle(); NrMemberAnimations = er.ReadUInt32(); MemberAnimationDictOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32(); NrUserDataEntries = er.ReadUInt32(); UserDataOffset = er.ReadUInt32(); long curpos = er.BaseStream.Position; er.BaseStream.Position = NameOffset; Name = er.ReadStringNT(Encoding.ASCII); er.BaseStream.Position = TargetAnimationGroupNameOffset; TargetAnimationGroupName = er.ReadStringNT(Encoding.ASCII); er.BaseStream.Position = MemberAnimationDictOffset; MemberAnimationDictionary = new DICT(er); MemberAnimations = new MemberAnimationData[NrMemberAnimations]; for (int i = 0; i < NrMemberAnimations; i++) { er.BaseStream.Position = MemberAnimationDictionary[i].DataOffset; MemberAnimations[i] = new MemberAnimationData(er); } er.BaseStream.Position = curpos; }