public static bool IsAddonAvailable(string addonName)
        {
            if (cacheAvailable.ContainsKey(addonName) == true)
            {
                return(cacheAvailable[addonName]);
            }

            var type     = CoreUtilities.GetTypeFromAllAssemblies(addonName, string.Empty);
            var isActive = type != null;

            cacheAvailable.Add(addonName, isActive);
            CoreUtilities.GetAddon(addonName);

            return(isActive);
        }
        public static bool IsAddonAvailable(string addonName)
        {
            if (CoreUtilities.cacheAvailable.ContainsKey(addonName) == true)
            {
                return(CoreUtilities.cacheAvailable[addonName]);
            }

            var type     = CoreUtilities.GetTypeFromAllAssemblies(addonName, string.Format("UnityEditor.UI.Windows.Plugins.{0}", addonName));
            var isActive = type != null;

            CoreUtilities.cacheAvailable.Add(addonName, isActive);
            CoreUtilities.GetAddon(addonName);

            return(isActive);
        }
示例#3
0
        public static bool ButtonAddon(string addonName, string buttonCaption, string description, GUIStyle buttonStyle, params GUILayoutOption[] options)
        {
            var result = false;

            if (CoreUtilities.IsAddonAvailable(addonName) == true)
            {
                if (GUILayout.Button(buttonCaption, buttonStyle, options) == true)
                {
                    result = true;
                }
            }
            else
            {
                if (string.IsNullOrEmpty(description) == false)
                {
                    EditorGUILayout.HelpBox("Addon `" + addonName + "` not found. Install it from the site: " + VersionInfo.DOWNLOAD_LINK, MessageType.None);

                    EditorGUILayout.HelpBox(description, MessageType.Info);
                }
            }

            return(result);
        }
        public static void LoadAddons()
        {
            if (CoreUtilities.addonsLoaded == true)
            {
                return;
            }

            cache.Clear();
            cacheAvailable.Clear();

            var list = Resources.LoadAll("UI.Windows/AddonInfo");

            foreach (var item in list)
            {
                var addonName = item.ToString().Trim();
                if (string.IsNullOrEmpty(addonName) == false)
                {
                    CoreUtilities.IsAddonAvailable(addonName);
                }
            }

            CoreUtilities.addonsLoaded = true;
        }
        public static IWindowAddon GetAddon(string addonName)
        {
            if (cacheAvailable.ContainsKey(addonName) == false || cacheAvailable[addonName] == false)
            {
                return(null);
            }

            if (cache.ContainsKey(addonName) == true)
            {
                return(cache[addonName]);
            }

            var type = CoreUtilities.GetTypeFromAllAssemblies(addonName, string.Empty);

            if (type != null)
            {
                var addon = System.Activator.CreateInstance(type) as IWindowAddon;
                cache.Add(addonName, addon);

                return(addon);
            }

            return(null);
        }
        public static IWindowAddon GetAddon(string addonName)
        {
            if (CoreUtilities.cacheAvailable.ContainsKey(addonName) == false || CoreUtilities.cacheAvailable[addonName] == false)
            {
                return(null);
            }

            if (CoreUtilities.cache.ContainsKey(addonName) == true)
            {
                return(CoreUtilities.cache[addonName]);
            }

            var type = CoreUtilities.GetTypeFromAllAssemblies(addonName, string.Format("UnityEditor.UI.Windows.Plugins.{0}", addonName));

            if (type != null)
            {
                var addon = System.Activator.CreateInstance(type) as IWindowAddon;
                CoreUtilities.cache.Add(addonName, addon);

                return(addon);
            }

            return(null);
        }