From 69de3d733d0e40a3700df97d66bcb35669dbca8b Mon Sep 17 00:00:00 2001 From: walon Date: Mon, 9 Oct 2023 15:39:32 +0800 Subject: [PATCH] =?UTF-8?q?[refactor]=20=E8=B0=83=E6=95=B4HybridCLR.Editor?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E4=B8=80=E4=BA=9B=E4=B8=8D=E8=A7=84=E8=8C=83?= =?UTF-8?q?=E7=9A=84=E5=91=BD=E5=90=8D=E7=A9=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Lil2cppSourceCodeToXcodeproj2021OrOlder.cs | 3 +- ...Lil2cppSourceCodeToXcodeproj2022OrNewer.cs | 2 +- Editor/BuildProcessors/CheckSettings.cs | 3 +- .../BuildProcessors/MsvcStdextWorkaround.cs | 30 ++++++---- Editor/Installer/InstallerController.cs | 1 + Editor/Meta/MetaUtil.cs | 1 + Editor/Settings/EditorStatusWatcher.cs | 33 ++++++----- Editor/Settings/HybridCLRSettingProvider.cs | 3 +- Editor/Settings/HybridCLRSettings.cs | 3 +- Editor/Settings/MenuProvider.cs | 59 ++++++++++--------- Editor/Settings/ScriptableSignleton.cs | 2 +- Editor/Settings/SettingsPresetReceiver.cs | 2 +- Editor/SettingsUtil.cs | 1 + 13 files changed, 81 insertions(+), 62 deletions(-) diff --git a/Editor/BuildProcessors/AddLil2cppSourceCodeToXcodeproj2021OrOlder.cs b/Editor/BuildProcessors/AddLil2cppSourceCodeToXcodeproj2021OrOlder.cs index 0622298..b0788aa 100644 --- a/Editor/BuildProcessors/AddLil2cppSourceCodeToXcodeproj2021OrOlder.cs +++ b/Editor/BuildProcessors/AddLil2cppSourceCodeToXcodeproj2021OrOlder.cs @@ -6,13 +6,14 @@ using System.Linq; using System.Text; using UnityEditor; using System.Reflection; +using HybridCLR.Editor.Settings; #if (UNITY_2020 || UNITY_2021) && UNITY_IOS using UnityEditor.Build; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; using UnityEngine; -namespace HybridCLR.Editor +namespace HybridCLR.Editor.BuildProcessors { public static class AddLil2cppSourceCodeToXcodeproj2021OrOlder { diff --git a/Editor/BuildProcessors/AddLil2cppSourceCodeToXcodeproj2022OrNewer.cs b/Editor/BuildProcessors/AddLil2cppSourceCodeToXcodeproj2022OrNewer.cs index e9987cd..ccfdc26 100644 --- a/Editor/BuildProcessors/AddLil2cppSourceCodeToXcodeproj2022OrNewer.cs +++ b/Editor/BuildProcessors/AddLil2cppSourceCodeToXcodeproj2022OrNewer.cs @@ -8,7 +8,7 @@ using UnityEngine; #if UNITY_2022_2_OR_NEWER && UNITY_IOS -namespace HybridCLR.Editor +namespace HybridCLR.Editor.BuildProcessors { public static class AddLil2cppSourceCodeToXcodeproj2022OrNewer { diff --git a/Editor/BuildProcessors/CheckSettings.cs b/Editor/BuildProcessors/CheckSettings.cs index 42896cf..dd397aa 100644 --- a/Editor/BuildProcessors/CheckSettings.cs +++ b/Editor/BuildProcessors/CheckSettings.cs @@ -1,4 +1,5 @@ -using System; +using HybridCLR.Editor.Settings; +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/Editor/BuildProcessors/MsvcStdextWorkaround.cs b/Editor/BuildProcessors/MsvcStdextWorkaround.cs index 6bc6041..f01a4dc 100644 --- a/Editor/BuildProcessors/MsvcStdextWorkaround.cs +++ b/Editor/BuildProcessors/MsvcStdextWorkaround.cs @@ -3,24 +3,28 @@ using System; using UnityEditor.Build; using UnityEditor.Build.Reporting; -public class MsvcStdextWorkaround : IPreprocessBuildWithReport +namespace HybridCLR.Editor.BuildProcessors { - const string kWorkaroundFlag = "/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS"; - public int callbackOrder => 0; - - public void OnPreprocessBuild(BuildReport report) + public class MsvcStdextWorkaround : IPreprocessBuildWithReport { - var clEnv = Environment.GetEnvironmentVariable("_CL_"); + const string kWorkaroundFlag = "/D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS"; - if (string.IsNullOrEmpty(clEnv)) + public int callbackOrder => 0; + + public void OnPreprocessBuild(BuildReport report) { - Environment.SetEnvironmentVariable("_CL_", kWorkaroundFlag); - } - else if (!clEnv.Contains(kWorkaroundFlag)) - { - clEnv += " " + kWorkaroundFlag; - Environment.SetEnvironmentVariable("_CL_", clEnv); + var clEnv = Environment.GetEnvironmentVariable("_CL_"); + + if (string.IsNullOrEmpty(clEnv)) + { + Environment.SetEnvironmentVariable("_CL_", kWorkaroundFlag); + } + else if (!clEnv.Contains(kWorkaroundFlag)) + { + clEnv += " " + kWorkaroundFlag; + Environment.SetEnvironmentVariable("_CL_", clEnv); + } } } } diff --git a/Editor/Installer/InstallerController.cs b/Editor/Installer/InstallerController.cs index c0a7721..768515f 100644 --- a/Editor/Installer/InstallerController.cs +++ b/Editor/Installer/InstallerController.cs @@ -7,6 +7,7 @@ using UnityEngine; using Debug = UnityEngine.Debug; using System.Text.RegularExpressions; using System.Linq; +using HybridCLR.Editor.Settings; namespace HybridCLR.Editor.Installer { diff --git a/Editor/Meta/MetaUtil.cs b/Editor/Meta/MetaUtil.cs index ba0fa1f..4f9a36e 100644 --- a/Editor/Meta/MetaUtil.cs +++ b/Editor/Meta/MetaUtil.cs @@ -1,5 +1,6 @@ using dnlib.DotNet; using HybridCLR.Editor.Meta; +using HybridCLR.Editor.Settings; using System; using System.Collections.Generic; using System.IO; diff --git a/Editor/Settings/EditorStatusWatcher.cs b/Editor/Settings/EditorStatusWatcher.cs index e53ebc0..0c3865e 100644 --- a/Editor/Settings/EditorStatusWatcher.cs +++ b/Editor/Settings/EditorStatusWatcher.cs @@ -3,25 +3,30 @@ using System; using UnityEditor; using UnityEditorInternal; -/// -/// 监听编辑器状态,当编辑器重新 focus 时,重新加载实例,避免某些情景下 svn 、git 等外部修改了数据却无法同步的异常。 -/// -[InitializeOnLoad] -public static class EditorStatusWatcher +namespace HybridCLR.Editor.Settings { - public static Action OnEditorFocused; - static bool isFocused; - static EditorStatusWatcher() => EditorApplication.update += Update; - static void Update() + + /// + /// 监听编辑器状态,当编辑器重新 focus 时,重新加载实例,避免某些情景下 svn 、git 等外部修改了数据却无法同步的异常。 + /// + [InitializeOnLoad] + public static class EditorStatusWatcher { - if (isFocused != InternalEditorUtility.isApplicationActive) + public static Action OnEditorFocused; + static bool isFocused; + static EditorStatusWatcher() => EditorApplication.update += Update; + static void Update() { - isFocused = InternalEditorUtility.isApplicationActive; - if (isFocused) + if (isFocused != InternalEditorUtility.isApplicationActive) { - HybridCLRSettings.LoadOrCreate(); - OnEditorFocused?.Invoke(); + isFocused = InternalEditorUtility.isApplicationActive; + if (isFocused) + { + HybridCLRSettings.LoadOrCreate(); + OnEditorFocused?.Invoke(); + } } } } + } \ No newline at end of file diff --git a/Editor/Settings/HybridCLRSettingProvider.cs b/Editor/Settings/HybridCLRSettingProvider.cs index c869f80..5ada220 100644 --- a/Editor/Settings/HybridCLRSettingProvider.cs +++ b/Editor/Settings/HybridCLRSettingProvider.cs @@ -4,7 +4,8 @@ using UnityEditor; using UnityEditor.Presets; using UnityEngine; using UnityEngine.UIElements; -namespace HybridCLR.Editor + +namespace HybridCLR.Editor.Settings { public class HybridCLRSettingsProvider : SettingsProvider { diff --git a/Editor/Settings/HybridCLRSettings.cs b/Editor/Settings/HybridCLRSettings.cs index c336af8..92247bf 100644 --- a/Editor/Settings/HybridCLRSettings.cs +++ b/Editor/Settings/HybridCLRSettings.cs @@ -1,6 +1,7 @@ using UnityEditorInternal; using UnityEngine; -namespace HybridCLR.Editor + +namespace HybridCLR.Editor.Settings { [FilePath("ProjectSettings/HybridCLRSettings.asset")] public class HybridCLRSettings : ScriptableSingleton diff --git a/Editor/Settings/MenuProvider.cs b/Editor/Settings/MenuProvider.cs index cefc6e0..3149cf3 100644 --- a/Editor/Settings/MenuProvider.cs +++ b/Editor/Settings/MenuProvider.cs @@ -2,35 +2,38 @@ using HybridCLR.Editor.Installer; using UnityEditor; using UnityEngine; -public static class MenuProvider +namespace HybridCLR.Editor.Settings { - - [MenuItem("HybridCLR/About HybridCLR", priority = 0)] - public static void OpenAbout() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/intro"); - - [MenuItem("HybridCLR/Installer...", priority = 60)] - private static void Open() + public static class MenuProvider { - InstallerWindow window = EditorWindow.GetWindow("HybridCLR Installer", true); - window.minSize = new Vector2(800f, 500f); + + [MenuItem("HybridCLR/About HybridCLR", priority = 0)] + public static void OpenAbout() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/intro"); + + [MenuItem("HybridCLR/Installer...", priority = 60)] + private static void Open() + { + InstallerWindow window = EditorWindow.GetWindow("HybridCLR Installer", true); + window.minSize = new Vector2(800f, 500f); + } + + [MenuItem("HybridCLR/Settings...", priority = 61)] + public static void OpenSettings() => SettingsService.OpenProjectSettings("Project/HybridCLR Settings"); + + [MenuItem("HybridCLR/Documents/Quick Start")] + public static void OpenQuickStart() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/beginner/quickstart"); + + [MenuItem("HybridCLR/Documents/Performance")] + public static void OpenPerformance() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/basic/performance"); + + [MenuItem("HybridCLR/Documents/FAQ")] + public static void OpenFAQ() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/help/faq"); + + [MenuItem("HybridCLR/Documents/Common Errors")] + public static void OpenCommonErrors() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/help/commonerrors"); + + [MenuItem("HybridCLR/Documents/Bug Report")] + public static void OpenBugReport() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/help/issue"); } - [MenuItem("HybridCLR/Settings...", priority = 61)] - public static void OpenSettings() => SettingsService.OpenProjectSettings("Project/HybridCLR Settings"); - - [MenuItem("HybridCLR/Documents/Quick Start")] - public static void OpenQuickStart() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/beginner/quickstart"); - - [MenuItem("HybridCLR/Documents/Performance")] - public static void OpenPerformance() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/basic/performance"); - - [MenuItem("HybridCLR/Documents/FAQ")] - public static void OpenFAQ() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/help/faq"); - - [MenuItem("HybridCLR/Documents/Common Errors")] - public static void OpenCommonErrors() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/help/commonerrors"); - - [MenuItem("HybridCLR/Documents/Bug Report")] - public static void OpenBugReport() => Application.OpenURL("https://hybridclr.doc.code-philosophy.com/docs/help/issue"); -} - +} \ No newline at end of file diff --git a/Editor/Settings/ScriptableSignleton.cs b/Editor/Settings/ScriptableSignleton.cs index 52e0247..cf2ee1b 100644 --- a/Editor/Settings/ScriptableSignleton.cs +++ b/Editor/Settings/ScriptableSignleton.cs @@ -5,7 +5,7 @@ using UnityEditor; using UnityEditorInternal; using UnityEngine; -namespace HybridCLR.Editor +namespace HybridCLR.Editor.Settings { public class ScriptableSingleton : ScriptableObject where T : ScriptableObject { diff --git a/Editor/Settings/SettingsPresetReceiver.cs b/Editor/Settings/SettingsPresetReceiver.cs index d8556c5..e60f3aa 100644 --- a/Editor/Settings/SettingsPresetReceiver.cs +++ b/Editor/Settings/SettingsPresetReceiver.cs @@ -2,7 +2,7 @@ using UnityEditor; using UnityEditor.Presets; using UnityEngine; -namespace HybridCLR.Editor +namespace HybridCLR.Editor.Settings { public class SettingsPresetReceiver : PresetSelectorReceiver { diff --git a/Editor/SettingsUtil.cs b/Editor/SettingsUtil.cs index 368c6c7..9a074ea 100644 --- a/Editor/SettingsUtil.cs +++ b/Editor/SettingsUtil.cs @@ -5,6 +5,7 @@ using System.Linq; using UnityEditor; using UnityEditorInternal; using UnityEngine; +using HybridCLR.Editor.Settings; namespace HybridCLR.Editor