Files
BepInEx/BepInEx.IL2CPP/Preloader.cs
T

72 lines
1.8 KiB
C#

using System;
using System.Diagnostics;
using BepInEx.Logging;
using BepInEx.Preloader.Core;
using BepInEx.Preloader.Core.Logging;
namespace BepInEx.IL2CPP
{
public static class Preloader
{
public static string IL2CPPUnhollowedPath { get; internal set; }
private static PreloaderConsoleListener PreloaderLog { get; set; }
internal static ManualLogSource Log => PreloaderLogger.Log;
internal static ManualLogSource UnhollowerLog { get; set; }
public static IL2CPPChainloader Chainloader { get; private set; }
public static void Run()
{
try
{
PreloaderLog = new PreloaderConsoleListener(true);
Logger.Listeners.Add(PreloaderLog);
if (ConsoleManager.ConfigConsoleEnabled.Value && !ConsoleManager.ConsoleActive)
{
ConsoleManager.CreateConsole();
Logger.Listeners.Add(new ConsoleLogListener());
}
BasicLogInfo.PrintLogInfo(Log);
Log.LogInfo($"Running under Unity v{FileVersionInfo.GetVersionInfo(Paths.ExecutablePath).FileVersion}");
Log.LogDebug($"Game executable path: {Paths.ExecutablePath}");
Log.LogDebug($"Unhollowed assembly directory: {IL2CPPUnhollowedPath}");
Log.LogDebug($"BepInEx root path: {Paths.BepInExRootPath}");
UnhollowerLog = Logger.CreateLogSource("Unhollower");
UnhollowerBaseLib.LogSupport.InfoHandler += UnhollowerLog.LogInfo;
UnhollowerBaseLib.LogSupport.WarningHandler += UnhollowerLog.LogWarning;
UnhollowerBaseLib.LogSupport.TraceHandler += UnhollowerLog.LogDebug;
UnhollowerBaseLib.LogSupport.ErrorHandler += UnhollowerLog.LogError;
if (ProxyAssemblyGenerator.CheckIfGenerationRequired())
ProxyAssemblyGenerator.GenerateAssemblies();
Logger.Listeners.Remove(PreloaderLog);
Chainloader = new IL2CPPChainloader();
Chainloader.Initialize();
}
catch (Exception ex)
{
Log.LogFatal(ex);
throw;
}
}
}
}