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 txt1(EndianBinaryReader er) : base(er) { long baseoffset = er.BaseStream.Position - 0x4C; NrCharacters = er.ReadUInt16(); NrCharacters2 = er.ReadUInt16(); MaterialId = er.ReadUInt16(); FontId = er.ReadUInt16(); PositionType = er.ReadByte(); TextAlignment = er.ReadByte(); TextFlags = er.ReadByte(); Padding = er.ReadByte(); StringOffset = er.ReadUInt32(); TopColor = er.ReadColor8(); BottomColor = er.ReadColor8(); FontSize = er.ReadVector2(); CharSize = er.ReadSingle(); LineSize = er.ReadSingle(); er.BaseStream.Position = baseoffset + StringOffset; Text = er.ReadStringNT(Encoding.Unicode); er.BaseStream.Position = baseoffset + SectionSize; }
public TXOB(EndianBinaryReader er) { Type = er.ReadUInt32(); Signature = er.ReadString(Encoding.ASCII, 4); if (Signature != "TXOB") throw new SignatureNotCorrectException(Signature, "TXOB", er.BaseStream.Position); Revision = er.ReadUInt32(); NameOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32(); Unknown2 = er.ReadUInt32(); Unknown3 = er.ReadUInt32(); long curpos = er.BaseStream.Position; er.BaseStream.Position = NameOffset; Name = er.ReadStringNT(Encoding.ASCII); er.BaseStream.Position = curpos; }
public ReferenceTexture(EndianBinaryReader er) : base(er) { LinkedTextureNameOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32(); LinkedTextureOffset = er.ReadUInt32(); if (LinkedTextureOffset != 0) LinkedTextureOffset += (UInt32)er.BaseStream.Position - 4; long curpos = er.BaseStream.Position; er.BaseStream.Position = LinkedTextureNameOffset; LinkedTextureName = er.ReadStringNT(Encoding.ASCII); er.BaseStream.Position = curpos; }
public StringList(EndianBinaryReader reader) { Address = reader.BaseStream.Position; Strings = new Collection<string>(); int count = reader.ReadInt32() & 0xffffff; int[] offsets = reader.ReadInt32s(count); foreach (var item in offsets) { reader.BaseStream.Seek(Address + item, SeekOrigin.Begin); Strings.Add(reader.ReadStringNT(Encoding.ASCII)); } Length = reader.BaseStream.Position - Length; }
public Node(EndianBinaryReader er) { RefBit = er.ReadUInt32(); LeftIndex = er.ReadUInt16(); RightIndex = er.ReadUInt16(); NameOffset = er.ReadUInt32(); if (NameOffset != 0) NameOffset += (UInt32)er.BaseStream.Position - 4; DataOffset = er.ReadUInt32(); if (DataOffset != 0) DataOffset += (UInt32)er.BaseStream.Position - 4; if (NameOffset != 0) { long curpos = er.BaseStream.Position; er.BaseStream.Position = NameOffset; Name = er.ReadStringNT(Encoding.ASCII); er.BaseStream.Position = curpos; } }
public MemberAnimationData(EndianBinaryReader er) { Flags = er.ReadUInt32(); PathOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32(); PrimitiveType = (AnimationType)er.ReadUInt32(); /*switch (PrimitiveType) { case AnimationType.Vector2Animation: var v = new Single[2][]; if ((Flags & 1) != 0) v[0] = new float[] { er.ReadSingle() };//constant else if ((Flags & 4) != 0) er.ReadUInt32();//nothing = empty reference Data = v; break; }*/ long curpos = er.BaseStream.Position; er.BaseStream.Position = PathOffset; Path = er.ReadStringNT(Encoding.ASCII); er.BaseStream.Position = curpos; }