public ulong Read(AssetsFileReader reader, ulong filePos, int version) { classId = reader.ReadInt32(); baseClass = reader.ReadInt32(); name = new ClassDatabaseFileString(); name.Read(reader, reader.Position); uint fieldCount = reader.ReadUInt32(); fields = new List <ClassDatabaseTypeField>(); for (int i = 0; i < fieldCount; i++) { ClassDatabaseTypeField cdtf = new ClassDatabaseTypeField(); cdtf.Read(reader, filePos, version); fields.Add(cdtf); } return(reader.Position); }
public void Read(AssetsFileReader reader, int version, byte flags) { classId = reader.ReadInt32(); baseClass = reader.ReadInt32(); name = new ClassDatabaseFileString(); name.Read(reader); if ((flags & 1) != 0) { assemblyFileName = new ClassDatabaseFileString(); assemblyFileName.Read(reader); } uint fieldCount = reader.ReadUInt32(); fields = new List <ClassDatabaseTypeField>(); for (int i = 0; i < fieldCount; i++) { ClassDatabaseTypeField cdtf = new ClassDatabaseTypeField(); cdtf.Read(reader, version); fields.Add(cdtf); } }
private void AddStringTableEntry(ClassDatabaseFile cldb, StringBuilder strTable, Dictionary <string, uint> strMap, ref ClassDatabaseFileString str) { string stringValue = str.GetString(cldb); if (strTable != null) { //search for string first and use that index if possible if (!strMap.ContainsKey(stringValue)) { strMap[stringValue] = (uint)strTable.Length; strTable.Append(stringValue + '\0'); } str.str.stringTableOffset = strMap[stringValue]; } else { //always add string str.str.stringTableOffset = (uint)strTable.Length; strTable.Append(stringValue + '\0'); } }
private void AddStringTableEntry(StringBuilder strTable, Dictionary <string, uint> strMap, ref ClassDatabaseFileString str) { string stringValue = str.GetString(this); if (!strMap.ContainsKey(stringValue)) { strMap[stringValue] = (uint)strTable.Length; strTable.Append(stringValue + '\0'); } str.str.stringTableOffset = strMap[stringValue]; }