public static void CreateHumanIcon()
    {
        ScriptableIcon asset = ScriptableObject.CreateInstance <ScriptableIcon>();

        AssetDatabase.CreateAsset(asset, "Assets/Resources/NewScriptableObject.asset");
        AssetDatabase.SaveAssets();

        EditorUtility.FocusProjectWindow();

        Selection.activeObject = asset;
    }
Exemplo n.º 2
0
        public void ShouldSetListenerIconForAsset()
        {
            var asset = CreateAsset();
            var icon  = new ScriptableIcon(ScriptableIconType.Listener);

            Assert.True(IconUtils.TrySetIcon(asset, icon));

            var metaText     = File.ReadAllText(AssetMetaPath);
            var iconGuid     = GetIconGuid("IconListener");
            var iconMetaText = GetIconMetaText(iconGuid);

            Assert.True(metaText.Contains(iconMetaText));
        }
Exemplo n.º 3
0
        private static GUID GetIconGuid(ScriptableIcon icon)
        {
            var iconType = icon.Type;
            var iconPath = iconType switch
            {
                ScriptableIconType.Event => IconPathEvent,
                ScriptableIconType.Listener => IconPathListener,
                _ => string.Empty
            };

            if (iconPath == string.Empty)
            {
                return(new GUID());
            }

            return(AssetDatabase.GUIDFromAssetPath(iconPath));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Attempt to set an icon on the given object.
        /// </summary>
        internal static bool TrySetIcon(Object obj, ScriptableIcon icon)
        {
            var iconGuid = GetIconGuid(icon);

            if (iconGuid.Empty())
            {
                return(false);
            }

            var metaFilePath = GetMetaFilePath(obj);

            if (string.IsNullOrWhiteSpace(metaFilePath))
            {
                return(false);
            }

            var metaFileLines  = File.ReadAllLines(metaFilePath);
            var iconGuidString = iconGuid.ToString();
            var iconMeta       = GetIconMetaString(iconGuidString);

            var isContainsMonoImporter = false;

            for (var index = 0; index < metaFileLines.Length; index++)
            {
                var metaFileLine = metaFileLines[index];
                if (!isContainsMonoImporter && metaFileLine.Contains("MonoImporter:"))
                {
                    isContainsMonoImporter = true;
                }

                if (IsIconMetaString(metaFileLine))
                {
                    if (metaFileLine.Contains(iconGuidString))
                    {
                        // Icon already set.
                        return(false);
                    }

                    metaFileLines[index] = iconMeta;
                    File.WriteAllLines(metaFilePath, metaFileLines);

                    // Icon successfully set.
                    return(true);
                }
            }

            // "icon:" line did not exist in the .meta file.

            if (isContainsMonoImporter)
            {
                // Unsupported .meta file format.
                return(false);
            }

            var customMonoImporter = GetMonoImporterString(iconGuidString);

            File.AppendAllText(metaFilePath, Environment.NewLine + customMonoImporter);

            // Meta file successfully updated with the new icon.
            return(true);
        }