private void MetaBuildEnumInfos(MetaInformationXml xmlInfo) { meta.EnumInfos = new ResourceSimpleArray <EnumInfo_GTA5_pc>(); foreach (var xmlEnumInfo in xmlInfo.Enums) { var enumInfo = new EnumInfo_GTA5_pc(); enumInfo.EnumNameHash = xmlEnumInfo.NameHash; enumInfo.EnumKey = xmlEnumInfo.Key; enumInfo.Entries = new ResourceSimpleArray <EnumEntryInfo_GTA5_pc>(); foreach (var xmlEnumEntryInfo in xmlEnumInfo.Entries) { var enumEntryInfo = new EnumEntryInfo_GTA5_pc(); enumEntryInfo.EntryNameHash = xmlEnumEntryInfo.NameHash; enumEntryInfo.EntryValue = xmlEnumEntryInfo.Value; enumInfo.Entries.Add(enumEntryInfo); } meta.EnumInfos.Add(enumInfo); } }
private void MetaBuildStructureInfos(MetaInformationXml xmlInfo) { strList = new ResourceSimpleArray <StructureInfo_GTA5_pc>(); foreach (var xmlStructureInfo in xmlInfo.Structures) { var structureInfo = new StructureInfo_GTA5_pc(); structureInfo.StructureNameHash = xmlStructureInfo.NameHash; structureInfo.StructureKey = xmlStructureInfo.Key; structureInfo.Unknown_8h = xmlStructureInfo.Unknown; structureInfo.StructureLength = xmlStructureInfo.Length; structureInfo.Entries = new ResourceSimpleArray <StructureEntryInfo_GTA5_pc>(); foreach (var xmlStructureEntryInfo in xmlStructureInfo.Entries) { var xmlArrayTypeStack = new Stack <MetaStructureArrayTypeXml>(); var xmlArrayType = xmlStructureEntryInfo.ArrayType; while (xmlArrayType != null) { xmlArrayTypeStack.Push(xmlArrayType); xmlArrayType = xmlArrayType.ArrayType; } while (xmlArrayTypeStack.Count > 0) { xmlArrayType = xmlArrayTypeStack.Pop(); var arrayStructureEntryInfo = new StructureEntryInfo_GTA5_pc(); arrayStructureEntryInfo.EntryNameHash = 0x100; arrayStructureEntryInfo.DataOffset = 0; arrayStructureEntryInfo.DataType = (StructureEntryDataType)xmlArrayType.Type; arrayStructureEntryInfo.Unknown_9h = 0; if (arrayStructureEntryInfo.DataType == StructureEntryDataType.Array) { arrayStructureEntryInfo.ReferenceTypeIndex = (short)(structureInfo.Entries.Count - 1); } else { arrayStructureEntryInfo.ReferenceTypeIndex = 0; } arrayStructureEntryInfo.ReferenceKey = xmlArrayType.TypeHash; structureInfo.Entries.Add(arrayStructureEntryInfo); } var structureEntryInfo = new StructureEntryInfo_GTA5_pc(); structureEntryInfo.EntryNameHash = xmlStructureEntryInfo.NameHash; structureEntryInfo.DataOffset = xmlStructureEntryInfo.Offset; structureEntryInfo.DataType = (StructureEntryDataType)xmlStructureEntryInfo.Type; structureEntryInfo.Unknown_9h = (byte)xmlStructureEntryInfo.Unknown; if (structureEntryInfo.DataType == StructureEntryDataType.Array) { structureEntryInfo.ReferenceTypeIndex = (short)(structureInfo.Entries.Count - 1); } else { structureEntryInfo.ReferenceTypeIndex = 0; } structureEntryInfo.ReferenceKey = xmlStructureEntryInfo.TypeHash; structureInfo.Entries.Add(structureEntryInfo); } strList.Add(structureInfo); } }
public MetaXmlImporter(MetaInformationXml xmlinfos) { this.xmlInfos = xmlinfos; MetaBuildStructureInfos(xmlinfos); }