public ContentProcessorContext(string workingDirectory = "") { this.WorkingDirectory = workingDirectory; window = new GameWindow(); ThreadingHelper.Initialize(window.WindowInfo, 3, 1, GraphicsContextFlags.Debug); GraphicsDevice = new GraphicsDevice(null, window.Context); }
/// <summary> /// Initializes BepInEx to be able to start the chainloader. /// </summary> public static void Initialize(string gameExePath, bool startConsole = true) { if (_initialized) { return; } ThreadingHelper.Initialize(); // Set vitals if (gameExePath != null) { // Checking for null allows a more advanced initialization workflow, where the Paths class has been initialized before calling Chainloader.Initialize // This is used by Preloader to use environment variables, for example Paths.SetExecutablePath(gameExePath); } // Start logging if (ConsoleWindow.ConfigConsoleEnabled.Value && startConsole) { ConsoleWindow.Attach(); Logger.Listeners.Add(new ConsoleLogListener()); } // Fix for standard output getting overwritten by UnityLogger if (ConsoleWindow.StandardOut != null) { Console.SetOut(ConsoleWindow.StandardOut); var encoding = ConsoleWindow.ConfigConsoleShiftJis.Value ? 932 : (uint)Encoding.UTF8.CodePage; ConsoleEncoding.ConsoleCodePage = encoding; Console.OutputEncoding = ConsoleEncoding.GetEncoding(encoding); } Logger.Listeners.Add(new UnityLogListener()); if (ConfigDiskLogging.Value) { Logger.Listeners.Add(new DiskLogListener("LogOutput.log", ConfigDiskConsoleDisplayedLevel.Value, ConfigDiskAppend.Value, ConfigDiskWriteUnityLog.Value)); } if (!TraceLogSource.IsListening) { Logger.Sources.Add(TraceLogSource.CreateSource()); } if (ConfigUnityLogging.Value) { Logger.Sources.Add(new UnityLogSource()); } Logger.LogMessage("Chainloader ready"); _initialized = true; }
/// <summary> /// Initializes BepInEx to be able to start the chainloader. /// </summary> public static void Initialize(string gameExePath, bool startConsole = true, ICollection <LogEventArgs> preloaderLogEvents = null) { if (_initialized) { return; } ThreadingHelper.Initialize(); // Set vitals if (gameExePath != null) { // Checking for null allows a more advanced initialization workflow, where the Paths class has been initialized before calling Chainloader.Initialize // This is used by Preloader to use environment variables, for example Paths.SetExecutablePath(gameExePath); } // Start logging if (ConsoleManager.ConfigConsoleEnabled.Value && startConsole) { ConsoleManager.CreateConsole(); Logger.Listeners.Add(new ConsoleLogListener()); } Logger.InitializeInternalLoggers(); if (ConfigDiskLogging.Value) { Logger.Listeners.Add(new DiskLogListener("LogOutput.log", ConfigDiskConsoleDisplayedLevel.Value, ConfigDiskAppend.Value, ConfigDiskWriteUnityLog.Value)); } if (!TraceLogSource.IsListening) { Logger.Sources.Add(TraceLogSource.CreateSource()); } ReplayPreloaderLogs(preloaderLogEvents); // Add Unity log source only after replaying to prevent duplication in console if (ConfigUnityLogging.Value) { Logger.Sources.Add(new UnityLogSource()); } Logger.Listeners.Add(new UnityLogListener()); if (Utility.CurrentOs == Platform.Linux) { Logger.LogInfo($"Detected Unity version: v{Application.unityVersion}"); } Logger.LogMessage("Chainloader ready"); _initialized = true; }
/// <summary> /// Initializes BepInEx to be able to start the chainloader. /// </summary> public static void Initialize(string gameExePath, bool startConsole = true, ICollection <LogEventArgs> preloaderLogEvents = null) { if (_initialized) { return; } ThreadingHelper.Initialize(); // Set vitals if (gameExePath != null) { // Checking for null allows a more advanced initialization workflow, where the Paths class has been initialized before calling Chainloader.Initialize // This is used by Preloader to use environment variables, for example Paths.SetExecutablePath(gameExePath); } // Start logging if (ConsoleManager.ConfigConsoleEnabled.Value && startConsole) { ConsoleManager.CreateConsole(); Logger.Listeners.Add(new ConsoleLogListener()); } // Fix for standard output getting overwritten by UnityLogger if (ConsoleManager.ConsoleActive) { ConsoleManager.SetConsoleStreams(); ConsoleManager.SetConsoleEncoding(); } Logger.InitializeInternalLoggers(); Logger.Listeners.Add(new UnityLogListener()); if (ConfigDiskLogging.Value) { Logger.Listeners.Add(new DiskLogListener("LogOutput.log", ConfigDiskConsoleDisplayedLevel.Value, ConfigDiskAppend.Value, ConfigDiskWriteUnityLog.Value)); } if (!TraceLogSource.IsListening) { Logger.Sources.Add(TraceLogSource.CreateSource()); } if (ConfigUnityLogging.Value) { Logger.Sources.Add(new UnityLogSource()); } // Temporarily disable the console log listener as we replay the preloader logs var logListener = Logger.Listeners.FirstOrDefault(logger => logger is ConsoleLogListener); if (logListener != null) { Logger.Listeners.Remove(logListener); } // Write preloader log events if there are any, including the original log source name if (preloaderLogEvents != null) { var preloaderLogSource = Logger.CreateLogSource("Preloader"); foreach (var preloaderLogEvent in preloaderLogEvents) { Logger.InternalLogEvent(preloaderLogSource, preloaderLogEvent); } Logger.Sources.Remove(preloaderLogSource); } if (logListener != null) { Logger.Listeners.Add(logListener); } if (Utility.CurrentOs == Platform.Linux) { Logger.LogInfo($"Detected Unity version: v{Application.unityVersion}"); } Logger.LogMessage("Chainloader ready"); _initialized = true; }
/// <summary> /// Initializes BepInEx to be able to start the chainloader. /// </summary> public static void Initialize(string gameExePath, bool startConsole = true, ICollection <LogEventArgs> preloaderLogEvents = null) { if (_initialized) { return; } ThreadingHelper.Initialize(); // Set vitals if (gameExePath != null) { // Checking for null allows a more advanced initialization workflow, where the Paths class has been initialized before calling Chainloader.Initialize // This is used by Preloader to use environment variables, for example Paths.SetExecutablePath(gameExePath); } // Start logging if (ConsoleWindow.ConfigConsoleEnabled.Value && startConsole) { ConsoleWindow.Attach(); Logger.Listeners.Add(new ConsoleLogListener()); } // Fix for standard output getting overwritten by UnityLogger if (ConsoleWindow.StandardOut != null) { Console.SetOut(ConsoleWindow.StandardOut); var encoding = ConsoleWindow.ConfigConsoleShiftJis.Value ? 932 : (uint)Encoding.UTF8.CodePage; ConsoleEncoding.ConsoleCodePage = encoding; Console.OutputEncoding = ConsoleEncoding.GetEncoding(encoding); } Logger.Listeners.Add(new UnityLogListener()); if (ConfigDiskLogging.Value) { Logger.Listeners.Add(new DiskLogListener("LogOutput.log", ConfigDiskConsoleDisplayedLevel.Value, ConfigDiskAppend.Value, ConfigDiskWriteUnityLog.Value)); } if (!TraceLogSource.IsListening) { Logger.Sources.Add(TraceLogSource.CreateSource()); } if (ConfigUnityLogging.Value) { Logger.Sources.Add(new UnityLogSource()); } // Temporarily disable the console log listener as we replay the preloader logs var logListener = Logger.Listeners.FirstOrDefault(logger => logger is ConsoleLogListener); if (logListener != null) { Logger.Listeners.Remove(logListener); } // Write preloader log events if there are any, including the original log source name if (preloaderLogEvents != null) { var preloaderLogSource = Logger.CreateLogSource("Preloader"); foreach (var preloaderLogEvent in preloaderLogEvents) { preloaderLogSource.Log(preloaderLogEvent.Level, $"[{preloaderLogEvent.Source.SourceName,10}] {preloaderLogEvent.Data}"); } Logger.Sources.Remove(preloaderLogSource); } if (logListener != null) { Logger.Listeners.Add(logListener); } Logger.LogMessage("Chainloader ready"); _initialized = true; }