You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

71 lines
1.7 KiB

#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<Texture2D>(iconPath);
}
static T LoadAssetAtPath<T>(string path) where T : UnityEngine.Object
{
return (T) AssetDatabase.LoadAssetAtPath(path, typeof(T));
}
}
}
#endif