using System; using System.IO; namespace BepInEx.Preloader.Core; /// /// Doorstop environment variables, passed into the BepInEx preloader. /// https://github.com/NeighTools/UnityDoorstop/wiki#environment-variables /// public static class EnvVars { /// /// Path to the assembly that was invoked via Doorstop. Contains the same value as in "targetAssembly" configuration /// option in the config file. /// public static string DOORSTOP_INVOKE_DLL_PATH { get; private set; } /// /// Full path to the game's "Managed" folder that contains all the game's managed assemblies /// public static string DOORSTOP_MANAGED_FOLDER_DIR { get; private set; } /// /// Full path to the game executable currently running. /// public static string DOORSTOP_PROCESS_PATH { get; private set; } /// /// Array of paths where Mono searches DLLs from before assembly resolvers are invoked. /// public static string[] DOORSTOP_DLL_SEARCH_DIRS { get; private set; } /// /// Path of the DLL that contains mono imports. /// public static string DOORSTOP_MONO_LIB_PATH { get; private set; } internal static void LoadVars() { DOORSTOP_INVOKE_DLL_PATH = Environment.GetEnvironmentVariable("DOORSTOP_INVOKE_DLL_PATH"); DOORSTOP_MANAGED_FOLDER_DIR = Environment.GetEnvironmentVariable("DOORSTOP_MANAGED_FOLDER_DIR"); DOORSTOP_PROCESS_PATH = Environment.GetEnvironmentVariable("DOORSTOP_PROCESS_PATH"); DOORSTOP_MONO_LIB_PATH = Environment.GetEnvironmentVariable("DOORSTOP_MONO_LIB_PATH"); DOORSTOP_DLL_SEARCH_DIRS = Environment.GetEnvironmentVariable("DOORSTOP_DLL_SEARCH_DIRS")?.Split(Path.PathSeparator) ?? new string[0]; } }