private void CreateProperties(BinaryReader reader, XmbEntry entry, PropertyData[] propertyData) { foreach (var property in propertyData) { var propertyName = reader.ReadAscii(Header.NamesOffset + property.NameOffset); var propertyValue = reader.ReadAscii(Header.ValuesOffset + property.ValueOffset); entry.Properties[propertyName] = propertyValue; } }
private void CreateEntries(BinaryReader reader, EntryData[] entryData) { for (int entryIndex = 0; entryIndex < Header.NodeCount; entryIndex++) { var entry = new XmbEntry { Data = entryData[entryIndex], Name = reader.ReadAscii(Header.NamesOffset + entryData[entryIndex].NameOffset), Index = (sbyte)entryIndex }; reader.BaseStream.Position = Header.PropertiesTableOffset + entry.Data.PropertyStartIndex * Marshal.SizeOf(typeof(PropertyData)); var propertyData = reader.ReadStructs <PropertyData>(entry.Data.PropertyCount); CreateProperties(reader, entry, propertyData); Nodes.Add(entry); } }