mirror of
https://github.com/sinai-dev/UnityExplorer.git
synced 2025-06-17 22:48:04 +08:00
Change ExplorerFolder path and refactor
This commit is contained in:
parent
f19a1dd25e
commit
96451477ee
@ -123,7 +123,7 @@ namespace UnityExplorer.Config
|
|||||||
|
|
||||||
Default_Output_Path = new ConfigElement<string>("Default Output Path",
|
Default_Output_Path = new ConfigElement<string>("Default Output Path",
|
||||||
"The default output path when exporting things from UnityExplorer.",
|
"The default output path when exporting things from UnityExplorer.",
|
||||||
Path.Combine(ExplorerCore.Loader.ExplorerFolder, "Output"));
|
Path.Combine(ExplorerCore.ExplorerFolder, "Output"));
|
||||||
|
|
||||||
Startup_Delay_Time = new ConfigElement<float>("Startup Delay Time",
|
Startup_Delay_Time = new ConfigElement<float>("Startup Delay Time",
|
||||||
"The delay on startup before the UI is created.",
|
"The delay on startup before the UI is created.",
|
||||||
|
@ -16,7 +16,7 @@ namespace UnityExplorer.Config
|
|||||||
|
|
||||||
public override void Init()
|
public override void Init()
|
||||||
{
|
{
|
||||||
CONFIG_PATH = Path.Combine(ExplorerCore.Loader.ExplorerFolder, "data.cfg");
|
CONFIG_PATH = Path.Combine(ExplorerCore.ExplorerFolder, "data.cfg");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void LoadConfig()
|
public override void LoadConfig()
|
||||||
|
@ -15,11 +15,13 @@ namespace UnityExplorer
|
|||||||
public static class ExplorerCore
|
public static class ExplorerCore
|
||||||
{
|
{
|
||||||
public const string NAME = "UnityExplorer";
|
public const string NAME = "UnityExplorer";
|
||||||
public const string VERSION = "4.6.4";
|
public const string VERSION = "4.7.0";
|
||||||
public const string AUTHOR = "Sinai";
|
public const string AUTHOR = "Sinai";
|
||||||
public const string GUID = "com.sinai.unityexplorer";
|
public const string GUID = "com.sinai.unityexplorer";
|
||||||
|
|
||||||
public static IExplorerLoader Loader { get; private set; }
|
public static IExplorerLoader Loader { get; private set; }
|
||||||
|
public static string ExplorerFolder => Path.Combine(Loader.ExplorerFolderDestination, Loader.ExplorerFolderName);
|
||||||
|
public const string DEFAULT_EXPLORER_FOLDER_NAME = "sinai-dev-UnityExplorer";
|
||||||
|
|
||||||
public static HarmonyLib.Harmony Harmony { get; } = new HarmonyLib.Harmony(GUID);
|
public static HarmonyLib.Harmony Harmony { get; } = new HarmonyLib.Harmony(GUID);
|
||||||
|
|
||||||
@ -35,7 +37,8 @@ namespace UnityExplorer
|
|||||||
|
|
||||||
Log($"{NAME} {VERSION} initializing...");
|
Log($"{NAME} {VERSION} initializing...");
|
||||||
|
|
||||||
Directory.CreateDirectory(Loader.ExplorerFolder);
|
CheckLegacyExplorerFolder();
|
||||||
|
Directory.CreateDirectory(ExplorerFolder);
|
||||||
ConfigManager.Init(Loader.ConfigHandler);
|
ConfigManager.Init(Loader.ConfigHandler);
|
||||||
|
|
||||||
UERuntimeHelper.Init();
|
UERuntimeHelper.Init();
|
||||||
@ -64,8 +67,6 @@ namespace UnityExplorer
|
|||||||
UIManager.InitUI();
|
UIManager.InitUI();
|
||||||
|
|
||||||
Log($"{NAME} {VERSION} ({Universe.Context}) initialized.");
|
Log($"{NAME} {VERSION} ({Universe.Context}) initialized.");
|
||||||
|
|
||||||
//InspectorManager.Inspect(typeof(Tests.TestClass));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static void Update()
|
internal static void Update()
|
||||||
@ -73,6 +74,63 @@ namespace UnityExplorer
|
|||||||
// check master toggle
|
// check master toggle
|
||||||
if (InputManager.GetKeyDown(ConfigManager.Master_Toggle.Value))
|
if (InputManager.GetKeyDown(ConfigManager.Master_Toggle.Value))
|
||||||
UIManager.ShowMenu = !UIManager.ShowMenu;
|
UIManager.ShowMenu = !UIManager.ShowMenu;
|
||||||
|
|
||||||
|
UIManager.Update();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Can be removed eventually. For migration from <4.7.0
|
||||||
|
static void CheckLegacyExplorerFolder()
|
||||||
|
{
|
||||||
|
string legacyPath = Path.Combine(Loader.ExplorerFolderDestination, "UnityExplorer");
|
||||||
|
if (Directory.Exists(legacyPath))
|
||||||
|
{
|
||||||
|
LogWarning($"Attempting to migrate old 'UnityExplorer/' folder to 'sinai-dev-UnityExplorer/'...");
|
||||||
|
|
||||||
|
// If new folder doesn't exist yet, let's just use Move().
|
||||||
|
if (!Directory.Exists(ExplorerFolder))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Directory.Move(legacyPath, ExplorerFolder);
|
||||||
|
Log("Migrated successfully.");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogWarning($"Exception migrating folder: {ex}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // We have to merge
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
CopyAll(new(legacyPath), new(ExplorerFolder));
|
||||||
|
Directory.Delete(legacyPath, true);
|
||||||
|
Log("Migrated successfully.");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LogWarning($"Exception migrating folder: {ex}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
|
||||||
|
{
|
||||||
|
// Check if the target directory exists, if not, create it.
|
||||||
|
if (!Directory.Exists(target.FullName))
|
||||||
|
Directory.CreateDirectory(target.FullName);
|
||||||
|
|
||||||
|
// Copy each file into it's new directory.
|
||||||
|
foreach (FileInfo fi in source.GetFiles())
|
||||||
|
fi.MoveTo(Path.Combine(target.ToString(), fi.Name));
|
||||||
|
|
||||||
|
// Copy each subdirectory using recursion.
|
||||||
|
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
|
||||||
|
{
|
||||||
|
DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name);
|
||||||
|
CopyAll(diSourceSubDir, nextTargetSubDir);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region LOGGING
|
#region LOGGING
|
||||||
|
@ -44,9 +44,10 @@ namespace UnityExplorer
|
|||||||
private BepInExConfigHandler _configHandler;
|
private BepInExConfigHandler _configHandler;
|
||||||
|
|
||||||
public Harmony HarmonyInstance => s_harmony;
|
public Harmony HarmonyInstance => s_harmony;
|
||||||
private static readonly Harmony s_harmony = new Harmony(ExplorerCore.GUID);
|
private static readonly Harmony s_harmony = new(ExplorerCore.GUID);
|
||||||
|
|
||||||
public string ExplorerFolder => Path.Combine(Paths.PluginPath, ExplorerCore.NAME);
|
public string ExplorerFolderName => ExplorerCore.DEFAULT_EXPLORER_FOLDER_NAME;
|
||||||
|
public string ExplorerFolderDestination => Paths.PluginPath;
|
||||||
|
|
||||||
public Action<object> OnLogMessage => LogSource.LogMessage;
|
public Action<object> OnLogMessage => LogSource.LogMessage;
|
||||||
public Action<object> OnLogWarning => LogSource.LogWarning;
|
public Action<object> OnLogWarning => LogSource.LogWarning;
|
||||||
|
@ -8,7 +8,8 @@ namespace UnityExplorer
|
|||||||
{
|
{
|
||||||
public interface IExplorerLoader
|
public interface IExplorerLoader
|
||||||
{
|
{
|
||||||
string ExplorerFolder { get; }
|
string ExplorerFolderDestination { get; }
|
||||||
|
string ExplorerFolderName { get; }
|
||||||
string UnhollowedModulesFolder { get; }
|
string UnhollowedModulesFolder { get; }
|
||||||
|
|
||||||
ConfigHandler ConfigHandler { get; }
|
ConfigHandler ConfigHandler { get; }
|
||||||
|
@ -20,9 +20,8 @@ namespace UnityExplorer
|
|||||||
{
|
{
|
||||||
public class ExplorerMelonMod : MelonMod, IExplorerLoader
|
public class ExplorerMelonMod : MelonMod, IExplorerLoader
|
||||||
{
|
{
|
||||||
public static ExplorerMelonMod Instance;
|
public string ExplorerFolderName => ExplorerCore.DEFAULT_EXPLORER_FOLDER_NAME;
|
||||||
|
public string ExplorerFolderDestination => MelonHandler.ModsDirectory;
|
||||||
public string ExplorerFolder => Path.Combine(MelonHandler.ModsDirectory, ExplorerCore.NAME);
|
|
||||||
|
|
||||||
public string UnhollowedModulesFolder => Path.Combine(
|
public string UnhollowedModulesFolder => Path.Combine(
|
||||||
Path.GetDirectoryName(MelonHandler.ModsDirectory),
|
Path.GetDirectoryName(MelonHandler.ModsDirectory),
|
||||||
@ -37,9 +36,7 @@ namespace UnityExplorer
|
|||||||
|
|
||||||
public override void OnApplicationStart()
|
public override void OnApplicationStart()
|
||||||
{
|
{
|
||||||
Instance = this;
|
|
||||||
_configHandler = new MelonLoaderConfigHandler();
|
_configHandler = new MelonLoaderConfigHandler();
|
||||||
|
|
||||||
ExplorerCore.Init(this);
|
ExplorerCore.Init(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,8 @@ namespace UnityExplorer.Loader.Standalone
|
|||||||
{
|
{
|
||||||
public class ExplorerEditorLoader : ExplorerStandalone
|
public class ExplorerEditorLoader : ExplorerStandalone
|
||||||
{
|
{
|
||||||
|
public new string ExplorerFolderName => $"{ExplorerCore.DEFAULT_EXPLORER_FOLDER_NAME}~";
|
||||||
|
|
||||||
public static void Initialize()
|
public static void Initialize()
|
||||||
{
|
{
|
||||||
Instance = new ExplorerEditorLoader();
|
Instance = new ExplorerEditorLoader();
|
||||||
@ -33,8 +35,8 @@ namespace UnityExplorer.Loader.Standalone
|
|||||||
|
|
||||||
protected override void CheckExplorerFolder()
|
protected override void CheckExplorerFolder()
|
||||||
{
|
{
|
||||||
if (explorerFolder == null)
|
if (explorerFolderDest == null)
|
||||||
explorerFolder = Path.Combine(Application.dataPath, "UnityExplorer~");
|
explorerFolderDest = Application.dataPath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,15 +29,16 @@ namespace UnityExplorer
|
|||||||
public ConfigHandler ConfigHandler => configHandler;
|
public ConfigHandler ConfigHandler => configHandler;
|
||||||
internal StandaloneConfigHandler configHandler;
|
internal StandaloneConfigHandler configHandler;
|
||||||
|
|
||||||
public string ExplorerFolder
|
public string ExplorerFolderName => ExplorerCore.DEFAULT_EXPLORER_FOLDER_NAME;
|
||||||
|
public string ExplorerFolderDestination
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
CheckExplorerFolder();
|
CheckExplorerFolder();
|
||||||
return explorerFolder;
|
return explorerFolderDest;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
protected static string explorerFolder;
|
protected static string explorerFolderDest;
|
||||||
|
|
||||||
Action<object> IExplorerLoader.OnLogMessage => (object log) => { OnLog?.Invoke(log?.ToString() ?? "", LogType.Log); };
|
Action<object> IExplorerLoader.OnLogMessage => (object log) => { OnLog?.Invoke(log?.ToString() ?? "", LogType.Log); };
|
||||||
Action<object> IExplorerLoader.OnLogWarning => (object log) => { OnLog?.Invoke(log?.ToString() ?? "", LogType.Warning); };
|
Action<object> IExplorerLoader.OnLogWarning => (object log) => { OnLog?.Invoke(log?.ToString() ?? "", LogType.Warning); };
|
||||||
@ -45,14 +46,14 @@ namespace UnityExplorer
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Call this to initialize UnityExplorer without adding a log listener or Unhollowed modules path.
|
/// Call this to initialize UnityExplorer without adding a log listener or Unhollowed modules path.
|
||||||
/// The default Unhollowed path "UnityExplorer\Modules\" will be used.
|
/// The default Unhollowed path "sinai-dev-UnityExplorer\Modules\" will be used.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>The new (or active, if one exists) instance of ExplorerStandalone.</returns>
|
/// <returns>The new (or active, if one exists) instance of ExplorerStandalone.</returns>
|
||||||
public static ExplorerStandalone CreateInstance() => CreateInstance(null, null);
|
public static ExplorerStandalone CreateInstance() => CreateInstance(null, null);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Call this to initialize UnityExplorer and add a listener for UnityExplorer's log messages, without specifying an Unhollowed modules path.
|
/// Call this to initialize UnityExplorer and add a listener for UnityExplorer's log messages, without specifying an Unhollowed modules path.
|
||||||
/// The default Unhollowed path "UnityExplorer\Modules\" will be used.
|
/// The default Unhollowed path "sinai-dev-UnityExplorer\Modules\" will be used.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="logListener">Your log listener to handle UnityExplorer logs.</param>
|
/// <param name="logListener">Your log listener to handle UnityExplorer logs.</param>
|
||||||
/// <returns>The new (or active, if one exists) instance of ExplorerStandalone.</returns>
|
/// <returns>The new (or active, if one exists) instance of ExplorerStandalone.</returns>
|
||||||
@ -77,7 +78,7 @@ namespace UnityExplorer
|
|||||||
OnLog += logListener;
|
OnLog += logListener;
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(unhollowedModulesPath) || !Directory.Exists(unhollowedModulesPath))
|
if (string.IsNullOrEmpty(unhollowedModulesPath) || !Directory.Exists(unhollowedModulesPath))
|
||||||
instance.unhollowedPath = Path.Combine(instance.ExplorerFolder, "Modules");
|
instance.unhollowedPath = Path.Combine(ExplorerCore.ExplorerFolder, "Modules");
|
||||||
else
|
else
|
||||||
instance.unhollowedPath = unhollowedModulesPath;
|
instance.unhollowedPath = unhollowedModulesPath;
|
||||||
|
|
||||||
@ -94,16 +95,10 @@ namespace UnityExplorer
|
|||||||
|
|
||||||
protected virtual void CheckExplorerFolder()
|
protected virtual void CheckExplorerFolder()
|
||||||
{
|
{
|
||||||
if (explorerFolder == null)
|
if (explorerFolderDest == null)
|
||||||
{
|
{
|
||||||
explorerFolder =
|
string assemblyLocation = Uri.UnescapeDataString(new Uri(typeof(ExplorerCore).Assembly.CodeBase).AbsolutePath);
|
||||||
Path.Combine(
|
explorerFolderDest = Path.GetDirectoryName(assemblyLocation);
|
||||||
Path.GetDirectoryName(
|
|
||||||
Uri.UnescapeDataString(new Uri(Assembly.GetExecutingAssembly().CodeBase).AbsolutePath)),
|
|
||||||
"UnityExplorer");
|
|
||||||
|
|
||||||
if (!Directory.Exists(explorerFolder))
|
|
||||||
Directory.CreateDirectory(explorerFolder);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ namespace UnityExplorer.Loader.Standalone
|
|||||||
|
|
||||||
public override void Init()
|
public override void Init()
|
||||||
{
|
{
|
||||||
CONFIG_PATH = Path.Combine(ExplorerCore.Loader.ExplorerFolder, "config.cfg");
|
CONFIG_PATH = Path.Combine(ExplorerCore.ExplorerFolder, "config.cfg");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void LoadConfig()
|
public override void LoadConfig()
|
||||||
@ -92,8 +92,8 @@ namespace UnityExplorer.Loader.Standalone
|
|||||||
foreach (var config in ConfigManager.ConfigElements)
|
foreach (var config in ConfigManager.ConfigElements)
|
||||||
document.Put(config.Key, config.Value.BoxedValue.ToString());
|
document.Put(config.Key, config.Value.BoxedValue.ToString());
|
||||||
|
|
||||||
if (!Directory.Exists(ExplorerCore.Loader.ExplorerFolder))
|
if (!Directory.Exists(ExplorerCore.ExplorerFolder))
|
||||||
Directory.CreateDirectory(ExplorerCore.Loader.ExplorerFolder);
|
Directory.CreateDirectory(ExplorerCore.ExplorerFolder);
|
||||||
|
|
||||||
File.WriteAllText(CONFIG_PATH, document.SerializedValue);
|
File.WriteAllText(CONFIG_PATH, document.SerializedValue);
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ namespace UnityExplorer.UI.Panels
|
|||||||
{
|
{
|
||||||
var fileName = $"UnityExplorer {DateTime.Now:u}.txt";
|
var fileName = $"UnityExplorer {DateTime.Now:u}.txt";
|
||||||
fileName = IOUtility.EnsureValidFilename(fileName);
|
fileName = IOUtility.EnsureValidFilename(fileName);
|
||||||
var path = Path.Combine(ExplorerCore.Loader.ExplorerFolder, "Logs");
|
var path = Path.Combine(ExplorerCore.ExplorerFolder, "Logs");
|
||||||
CurrentStreamPath = IOUtility.EnsureValidFilePath(Path.Combine(path, fileName));
|
CurrentStreamPath = IOUtility.EnsureValidFilePath(Path.Combine(path, fileName));
|
||||||
|
|
||||||
// clean old log(s)
|
// clean old log(s)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user