// Distant Lands 2024 // COZY: Stylized Weather 3 // All code included in this file is protected under the Unity Asset Store Eula using System.Collections.Generic; using System.IO; using System.Linq; using UnityEditor; using UnityEditor.PackageManager; using UnityEditor.PackageManager.Requests; using PackageInfo = UnityEditor.PackageManager.PackageInfo; using UnityEngine; namespace DistantLands.Cozy.EditorScripts { [InitializeOnLoad] public class E_AddCozyDefines : Editor { /// /// Symbols that will be added to the editor /// public static readonly string[] Symbols = new string[] { "COZY_WEATHER", "COZY_3_AND_UP" }; /// /// Add define symbols as soon as Unity gets done compiling. /// static E_AddCozyDefines() { if (PlayerPrefs.GetInt("CZY_AddDefines", 1) == 1) { string definesString = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); List allDefines = definesString.Split(';').ToList(); allDefines.AddRange(Symbols.Except(allDefines)); if (IsPackageInstalled("com.unity.render-pipelines.universal")) { if (!allDefines.Contains("COZY_URP")) allDefines.Add("COZY_URP"); } else if (IsPackageInstalled("com.unity.render-pipelines.high-definition")) { if (!allDefines.Contains("COZY_HDRP")) allDefines.Add("COZY_HDRP"); } PlayerSettings.SetScriptingDefineSymbolsForGroup( EditorUserBuildSettings.selectedBuildTargetGroup, string.Join(";", allDefines.ToArray())); } } public static PackageInfo GetPackage(string packageID, bool throwError) { SearchRequest request = Client.Search(packageID); while (request.Status == StatusCode.InProgress) { } if (request.Status == StatusCode.Failure && throwError) { Debug.LogError("Failed to retrieve package from Package Manager..."); return null; } return request.Result[0]; } public static bool IsPackageInstalled(string packageID) { string manifestPath = Application.dataPath + "/../Packages/manifest.json"; if (File.Exists(manifestPath)) { string manifestContents = File.ReadAllText(manifestPath); return manifestContents.Contains(packageID); } else { Debug.LogError("Unable to find the manifest file."); return false; } } } }