diff --git a/RecodeItLib/Remapper/ReMapper.cs b/RecodeItLib/Remapper/ReMapper.cs index 613bd25..10f5db2 100644 --- a/RecodeItLib/Remapper/ReMapper.cs +++ b/RecodeItLib/Remapper/ReMapper.cs @@ -322,9 +322,8 @@ public class ReMapper Logger.LogSync(e); throw; } - - Logger.LogSync("\nCreating Hollow...", ConsoleColor.Green); - Hollow(); + + StartHollow(); var hollowedDir = Path.GetDirectoryName(OutPath); var hollowedPath = Path.Combine(hollowedDir!, "Assembly-CSharp-hollowed.dll"); @@ -354,17 +353,37 @@ public class ReMapper /// /// Hollows out all logic from the dll /// - private void Hollow() + private void StartHollow() { - foreach (var type in Module!.GetTypes()) + Logger.LogSync("\nCreating Hollow...", ConsoleColor.Green); + + var tasks = new List(Module!.GetTypes().Count()); + foreach (var type in Module.GetTypes()) { - foreach (var method in type.Methods.Where(m => m.HasBody)) + tasks.Add(Task.Run(() => { - if (!method.HasBody) continue; + try + { + HollowType(type); + } + catch (Exception ex) + { + Logger.LogSync($"Exception in task: {ex.Message}", ConsoleColor.Red); + } + })); + } + + Task.WaitAll(tasks.ToArray()); + } - method.Body = new CilBody(); - method.Body.Instructions.Add(OpCodes.Ret.ToInstruction()); - } + private void HollowType(TypeDef type) + { + foreach (var method in type.Methods.Where(m => m.HasBody)) + { + if (!method.HasBody) continue; + + method.Body = new CilBody(); + method.Body.Instructions.Add(OpCodes.Ret.ToInstruction()); } } } \ No newline at end of file