public void Read(Vault vault, BinaryReader br) { Key = br.ReadUInt32(); InlineDataPointer = br.BaseStream.Position; if (IsInline()) { InlineData = TypeRegistry.CreateInstance(vault.Database.Options.GameId, Collection.Class, Collection.Class[Key], Collection); } else { InlineData = new VLTAttribType(Collection.Class, Collection.Class[Key], Collection); } InlineData.Read(vault, br); br.AlignReader(4); TypeIndex = br.ReadUInt16(); NodeFlags = (NodeFlagsEnum)br.ReadUInt16(); Debug.Assert((ushort)NodeFlags <= 0x20); }
public override bool ReadData(Vault vault, BinaryReader br) { if (Collection.Class.TryGetField(Key, out VltClassField field)) { if (HasInlineFlag()) { InlineData = TypeRegistry.CreateInstance(vault.Database.Options.GameId, Collection.Class, field, Collection); } else { InlineData = new VLTAttribType(Collection.Class, field, Collection); } br.BaseStream.Position = InlineDataPointer; InlineData.Read(vault, br); return(true); } return(false); }
public override bool ReadData(Vault vault, BinaryReader br) { if (Collection.Class.HasField(Key)) { br.BaseStream.Position = InlineDataPointer; if (IsInline()) { InlineData = TypeRegistry.CreateInstance(vault.Database.Options.GameId, Collection.Class, Collection.Class[Key], Collection); } else { InlineData = new VLTAttribType(Collection.Class, Collection.Class[Key], Collection); } InlineData.Read(vault, br); return(true); } return(false); }