#if UNITY_EDITOR using UnityEngine; using UnityEditor; using System; using System.IO; using System.Collections.Generic; namespace ProGrids { [InitializeOnLoad] public static class pg_IconUtility { const string ICON_FOLDER_PATH = "ProGridsToggles"; private static string iconFolderPath = "Assets/ProCore/ProGrids/GUI/ProGridsToggles/"; static pg_IconUtility() { if(!Directory.Exists(iconFolderPath)) { string folder = FindFolder(ICON_FOLDER_PATH); if(Directory.Exists(folder)) iconFolderPath = folder; } } private static string FindFolder(string folder) { #if !UNITY_WEBPLAYER string single = folder.Replace("\\", "/").Substring(folder.LastIndexOf('/') + 1); string[] matches = Directory.GetDirectories("Assets/", single, SearchOption.AllDirectories); foreach(string str in matches) { string path = str.Replace("\\", "/"); if(path.Contains(folder)) { if(!path.EndsWith("/")) path += "/"; return path; } } #endif Debug.LogError("Could not locate ProGrids/GUI/ProGridsToggles folder. The ProGrids folder may be moved, but the contents of ProGrids must remain unmodified."); return ""; } public static Texture2D LoadIcon(string iconName) { string iconPath = string.Format("{0}{1}", iconFolderPath, iconName); if(!File.Exists(iconPath)) { Debug.LogError("ProGrids failed to locate menu image: " + iconName + ".\nThis can happen if the GUI folder is moved or deleted. Deleting and re-importing ProGrids will fix this error."); return (Texture2D) null; } return LoadAssetAtPath(iconPath); } static T LoadAssetAtPath(string path) where T : UnityEngine.Object { return (T) AssetDatabase.LoadAssetAtPath(path, typeof(T)); } } } #endif