diff --git a/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs b/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs index 080be59..bb1dba4 100644 --- a/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs +++ b/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs @@ -385,10 +385,29 @@ namespace Obfuz.ObfusPasses.SymbolObfus if (mod != null) { var types = mod.GetTypes().ToDictionary(t => _typeRenames.TryGetValue(t, out var rec) ? rec.oldName : t.FullName, t => t); - var sortedTypes = new SortedDictionary(types); - foreach (TypeDef type in sortedTypes.Values) + if (_assemblies.TryGetValue(assName, out var ass)) { - WriteTypeMapping(assemblyNode, type); + var totalTypeNames = types.Keys.Concat(ass.types.Keys).ToHashSet().ToList(); + totalTypeNames.Sort((a, b) => a.CompareTo((b))); + foreach (string typeName in totalTypeNames) + { + if (types.TryGetValue(typeName, out TypeDef typeDef)) + { + WriteTypeMapping(assemblyNode, typeDef); + } + else + { + WriteTypeMapping(assemblyNode, typeName, ass.types[typeName]); + } + } + } + else + { + var sortedTypes = new SortedDictionary(types); + foreach (TypeDef type in sortedTypes.Values) + { + WriteTypeMapping(assemblyNode, type); + } } } else