160 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			160 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|   | #if UNITY_EDITOR | |||
|  | using UnityEngine; | |||
|  | using UnityEditor; | |||
|  | 
 | |||
|  | namespace Crosstales.FB.EditorUtil | |||
|  | { | |||
|  |    /// <summary>Editor configuration for the asset.</summary> | |||
|  |    [InitializeOnLoad] | |||
|  |    public static class EditorConfig | |||
|  |    { | |||
|  |       #region Variables | |||
|  | 
 | |||
|  |       /// <summary>Enable or disable update-checks for the asset.</summary> | |||
|  |       public static bool UPDATE_CHECK = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_UPDATE_CHECK; | |||
|  | 
 | |||
|  |       /// <summary>Enable or disable adding compile define "CT_FB" for the asset.</summary> | |||
|  |       public static bool COMPILE_DEFINES = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_COMPILE_DEFINES; | |||
|  | 
 | |||
|  |       /// <summary>Automatically load and add the prefabs to the scene.</summary> | |||
|  |       public static bool PREFAB_AUTOLOAD = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_PREFAB_AUTOLOAD; | |||
|  | 
 | |||
|  |       /// <summary>Enable or disable the icon in the hierarchy.</summary> | |||
|  |       public static bool HIERARCHY_ICON = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_HIERARCHY_ICON; | |||
|  | 
 | |||
|  |       /// <summary>Enable or disable the modifications of the bundle under macOS.</summary> | |||
|  |       public static bool MACOS_MODIFY_BUNDLE = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_MACOS_MODIFY_BUNDLE; | |||
|  | 
 | |||
|  |       /// <summary>Enable or disable the modifications of the Package.appxmanifest under UWP (WSA).</summary> | |||
|  |       public static bool WSA_MODIFY_MANIFEST = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_WSA_MODIFY_MANIFEST; | |||
|  | 
 | |||
|  |       /// <summary>Is the configuration loaded?</summary> | |||
|  |       public static bool isLoaded; | |||
|  | 
 | |||
|  |       private static string assetPath; | |||
|  |       private const string idPath = "Documentation/id/"; | |||
|  |       private static readonly string idName = $"{Crosstales.FB.EditorUtil.EditorConstants.ASSET_UID}.txt"; | |||
|  | 
 | |||
|  |       #endregion | |||
|  | 
 | |||
|  | 
 | |||
|  |       #region Constructor | |||
|  | 
 | |||
|  |       static EditorConfig() | |||
|  |       { | |||
|  |          if (!isLoaded) | |||
|  |          { | |||
|  |             Load(); | |||
|  |          } | |||
|  |       } | |||
|  | 
 | |||
|  |       #endregion | |||
|  | 
 | |||
|  | 
 | |||
|  |       #region Properties | |||
|  | 
 | |||
|  |       /// <summary>Returns the path to the asset inside the Unity project.</summary> | |||
|  |       /// <returns>The path to the asset inside the Unity project.</returns> | |||
|  |       public static string ASSET_PATH | |||
|  |       { | |||
|  |          get | |||
|  |          { | |||
|  |             if (assetPath == null) | |||
|  |             { | |||
|  |                try | |||
|  |                { | |||
|  |                   if (Crosstales.Common.Util.FileHelper.ExistsFile(Application.dataPath + Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_ASSET_PATH + idPath + idName)) | |||
|  |                   { | |||
|  |                      assetPath = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_ASSET_PATH; | |||
|  |                   } | |||
|  |                   else | |||
|  |                   { | |||
|  |                      string[] files = System.IO.Directory.GetFiles(Application.dataPath, idName, System.IO.SearchOption.AllDirectories); | |||
|  | 
 | |||
|  |                      if (files.Length > 0) | |||
|  |                      { | |||
|  |                         string name = files[0].Substring(Application.dataPath.Length); | |||
|  |                         assetPath = name.Substring(0, name.Length - idPath.Length - idName.Length).Replace("\\", "/"); | |||
|  |                      } | |||
|  |                      else | |||
|  |                      { | |||
|  |                         Debug.LogWarning($"Could not locate the asset! File not found: {idName}"); | |||
|  |                         assetPath = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_ASSET_PATH; | |||
|  |                      } | |||
|  |                   } | |||
|  | 
 | |||
|  |                   Crosstales.Common.Util.CTPlayerPrefs.SetString(Crosstales.FB.Util.Constants.KEY_ASSET_PATH, assetPath); | |||
|  |                   Crosstales.Common.Util.CTPlayerPrefs.Save(); | |||
|  |                } | |||
|  |                catch (System.Exception ex) | |||
|  |                { | |||
|  |                   Debug.LogWarning($"Could not locate asset: {ex}"); | |||
|  |                } | |||
|  |             } | |||
|  | 
 | |||
|  |             return assetPath; | |||
|  |          } | |||
|  |       } | |||
|  | 
 | |||
|  |       /// <summary>Returns the path of the prefabs.</summary> | |||
|  |       /// <returns>The path of the prefabs.</returns> | |||
|  |       public static string PREFAB_PATH => ASSET_PATH + Crosstales.FB.EditorUtil.EditorConstants.PREFAB_SUBPATH; | |||
|  | 
 | |||
|  |       #endregion | |||
|  | 
 | |||
|  | 
 | |||
|  |       #region Public static methods | |||
|  | 
 | |||
|  |       /// <summary>Resets all changeable variables to their default value.</summary> | |||
|  |       public static void Reset() | |||
|  |       { | |||
|  |          UPDATE_CHECK = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_UPDATE_CHECK; | |||
|  |          COMPILE_DEFINES = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_COMPILE_DEFINES; | |||
|  |          PREFAB_AUTOLOAD = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_PREFAB_AUTOLOAD; | |||
|  |          HIERARCHY_ICON = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_HIERARCHY_ICON; | |||
|  |          MACOS_MODIFY_BUNDLE = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_MACOS_MODIFY_BUNDLE; | |||
|  |          WSA_MODIFY_MANIFEST = Crosstales.FB.EditorUtil.EditorConstants.DEFAULT_WSA_MODIFY_MANIFEST; | |||
|  |       } | |||
|  | 
 | |||
|  |       /// <summary>Loads the all changeable variables.</summary> | |||
|  |       public static void Load() | |||
|  |       { | |||
|  |          if (Crosstales.Common.Util.CTPlayerPrefs.HasKey(Crosstales.FB.EditorUtil.EditorConstants.KEY_UPDATE_CHECK)) | |||
|  |             UPDATE_CHECK = Crosstales.Common.Util.CTPlayerPrefs.GetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_UPDATE_CHECK); | |||
|  | 
 | |||
|  |          if (Crosstales.Common.Util.CTPlayerPrefs.HasKey(Crosstales.FB.EditorUtil.EditorConstants.KEY_COMPILE_DEFINES)) | |||
|  |             COMPILE_DEFINES = Crosstales.Common.Util.CTPlayerPrefs.GetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_COMPILE_DEFINES); | |||
|  | 
 | |||
|  |          if (Crosstales.Common.Util.CTPlayerPrefs.HasKey(Crosstales.FB.EditorUtil.EditorConstants.KEY_PREFAB_AUTOLOAD)) | |||
|  |             PREFAB_AUTOLOAD = Crosstales.Common.Util.CTPlayerPrefs.GetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_PREFAB_AUTOLOAD); | |||
|  | 
 | |||
|  |          if (Crosstales.Common.Util.CTPlayerPrefs.HasKey(Crosstales.FB.EditorUtil.EditorConstants.KEY_HIERARCHY_ICON)) | |||
|  |             HIERARCHY_ICON = Crosstales.Common.Util.CTPlayerPrefs.GetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_HIERARCHY_ICON); | |||
|  | 
 | |||
|  |          if (Crosstales.Common.Util.CTPlayerPrefs.HasKey(Crosstales.FB.EditorUtil.EditorConstants.KEY_MACOS_MODIFY_BUNDLE)) | |||
|  |             MACOS_MODIFY_BUNDLE = Crosstales.Common.Util.CTPlayerPrefs.GetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_MACOS_MODIFY_BUNDLE); | |||
|  | 
 | |||
|  |          if (Crosstales.Common.Util.CTPlayerPrefs.HasKey(Crosstales.FB.EditorUtil.EditorConstants.KEY_WSA_MODIFY_MANIFEST)) | |||
|  |             WSA_MODIFY_MANIFEST = Crosstales.Common.Util.CTPlayerPrefs.GetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_WSA_MODIFY_MANIFEST); | |||
|  | 
 | |||
|  |          isLoaded = true; | |||
|  |       } | |||
|  | 
 | |||
|  |       /// <summary>Saves the all changeable variables.</summary> | |||
|  |       public static void Save() | |||
|  |       { | |||
|  |          Crosstales.Common.Util.CTPlayerPrefs.SetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_UPDATE_CHECK, UPDATE_CHECK); | |||
|  |          Crosstales.Common.Util.CTPlayerPrefs.SetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_COMPILE_DEFINES, COMPILE_DEFINES); | |||
|  |          Crosstales.Common.Util.CTPlayerPrefs.SetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_PREFAB_AUTOLOAD, PREFAB_AUTOLOAD); | |||
|  |          Crosstales.Common.Util.CTPlayerPrefs.SetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_HIERARCHY_ICON, HIERARCHY_ICON); | |||
|  |          Crosstales.Common.Util.CTPlayerPrefs.SetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_MACOS_MODIFY_BUNDLE, MACOS_MODIFY_BUNDLE); | |||
|  |          Crosstales.Common.Util.CTPlayerPrefs.SetBool(Crosstales.FB.EditorUtil.EditorConstants.KEY_WSA_MODIFY_MANIFEST, WSA_MODIFY_MANIFEST); | |||
|  | 
 | |||
|  |          Crosstales.Common.Util.CTPlayerPrefs.Save(); | |||
|  |       } | |||
|  | 
 | |||
|  |       #endregion | |||
|  |    } | |||
|  | } | |||
|  | #endif | |||
|  | // © 2017-2023 crosstales LLC (https://www.crosstales.com) |