public override void Read(BinaryReader reader, Resource resource) { reader.BaseStream.Position = Offset; var offset = reader.ReadUInt32(); var size = reader.ReadUInt32(); if (size == 0) { return; } reader.BaseStream.Position += offset - 8; // 8 is 2 uint32s we just read for (var i = 0; i < size; i++) { var resInfo = new ResourceReferenceInfo(); resInfo.Id = reader.ReadUInt64(); var previousPosition = reader.BaseStream.Position; // jump to string // offset is counted from current position, // so we will need to add 8 to position later reader.BaseStream.Position += reader.ReadInt64(); resInfo.Name = reader.ReadNullTermString(Encoding.UTF8); ResourceRefInfoList.Add(resInfo); reader.BaseStream.Position = previousPosition + 8; // 8 is to account for string offset } }