├── Editor.meta ├── Editor ├── Scripts.meta ├── Scripts │ ├── AssetIconsUtils.cs │ ├── AssetIconsUtils.cs.meta │ ├── EditorCustomSOIcons.cs │ ├── EditorCustomSOIcons.cs.meta │ ├── ICustomEditorIconDeclarator.cs │ ├── ICustomEditorIconDeclarator.cs.meta │ ├── OdinAssetIconsFieldDrawer.cs │ ├── OdinAssetIconsFieldDrawer.cs.meta │ ├── Settings.meta │ └── Settings │ │ ├── CustomAssetIconsSettingsMenu.cs │ │ ├── CustomAssetIconsSettingsMenu.cs.meta │ │ ├── CustomSOIconsSettings.cs │ │ ├── CustomSOIconsSettings.cs.meta │ │ ├── CustomSOIconsSettingsAsset.cs │ │ ├── CustomSOIconsSettingsAsset.cs.meta │ │ ├── TypeIconOverrides.cs │ │ └── TypeIconOverrides.cs.meta ├── com.ligofff.asset-icons.Editor.asmdef └── com.ligofff.asset-icons.Editor.asmdef.meta ├── README.md ├── README.md.meta ├── Runtime.meta ├── Runtime ├── Scripts.meta ├── Scripts │ ├── CustomAssetIconAttribute.cs │ └── CustomAssetIconAttribute.cs.meta ├── com.ligofff.asset-icons.Runtime.asmdef └── com.ligofff.asset-icons.Runtime.asmdef.meta ├── Samples.meta ├── package.json └── package.json.meta /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d0234c6f5c2fa7a4786e7645096a3359 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6700f8d06028279449fb384b762db9a6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Scripts/AssetIconsUtils.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using UnityEditor.Sprites; 4 | using UnityEngine; 5 | 6 | namespace Ligofff.CustomSOIcons.Editor 7 | { 8 | public static class AssetIconsUtils 9 | { 10 | public static T GetValue(this MemberInfo memberInfo, object forObject) 11 | { 12 | switch (memberInfo.MemberType) 13 | { 14 | case MemberTypes.Field: 15 | return (T) ((FieldInfo)memberInfo).GetValue(forObject); 16 | case MemberTypes.Property: 17 | return (T) ((PropertyInfo)memberInfo).GetValue(forObject); 18 | default: 19 | throw new NotImplementedException(); 20 | } 21 | } 22 | 23 | public static Type GetMemberType(this MemberInfo info) 24 | { 25 | if (info is PropertyInfo propertyInfo) return propertyInfo.PropertyType; 26 | if (info is FieldInfo fieldInfo) return fieldInfo.FieldType; 27 | return null; 28 | } 29 | 30 | public static void GUIDrawSprite(Rect rect, Sprite sprite) 31 | { 32 | if (sprite == null) return; 33 | Rect spriteRect = sprite.rect; 34 | Texture2D tex = SpriteUtility.GetSpriteTexture(sprite, false); 35 | GUI.DrawTextureWithTexCoords(rect, tex, 36 | new Rect(spriteRect.x / tex.width, spriteRect.y / tex.height, spriteRect.width / tex.width, spriteRect.height / tex.height)); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /Editor/Scripts/AssetIconsUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1ed6460dc0b8cd440af51bf87b657e4b 3 | timeCreated: 1680957371 -------------------------------------------------------------------------------- /Editor/Scripts/EditorCustomSOIcons.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEditor; 5 | using System.Linq; 6 | using System.Reflection; 7 | using UnityEditor.Callbacks; 8 | using Object = UnityEngine.Object; 9 | 10 | namespace Ligofff.CustomSOIcons.Editor 11 | { 12 | public class EditorCustomSOIcons 13 | { 14 | private static Dictionary _iconDeclarators; 15 | 16 | private static Dictionary, CustomSOIconsSettings>> _iconGettersCache; 17 | 18 | private static CustomSOIconsSettingsAsset _settings; 19 | 20 | [DidReloadScripts] 21 | private static void EditorCustomSOIconsStart() 22 | { 23 | RefreshCaches(); 24 | EditorApplication.projectWindowItemOnGUI += ItemOnGUI; 25 | } 26 | 27 | public static void Refresh() 28 | { 29 | RefreshCaches(); 30 | _settings = CustomAssetIconsSettingsMenu.GetSettings(); 31 | } 32 | 33 | private static void RefreshCaches() 34 | { 35 | _iconDeclarators = new Dictionary(); 36 | _iconGettersCache = new Dictionary, CustomSOIconsSettings>>(); 37 | CollectDeclarators(); 38 | } 39 | 40 | private static void CollectDeclarators() 41 | { 42 | var declarators = 43 | TypeCache.GetTypesDerivedFrom() 44 | .Select(Activator.CreateInstance) 45 | .OfType(); 46 | 47 | foreach (var declarator in declarators) 48 | { 49 | _iconDeclarators.Add(declarator.DeclareType, declarator); 50 | } 51 | } 52 | 53 | private static void ItemOnGUI(string guid, Rect rect) 54 | { 55 | var getter = GetOrCreateIconGetter(guid); 56 | 57 | if (getter == null) return; 58 | 59 | DrawFromGetter(getter.Item1, rect, getter.Item2); 60 | } 61 | 62 | public static Tuple, CustomSOIconsSettings> GetOrCreateIconGetter(string guid) 63 | { 64 | if (_settings is null) 65 | _settings = CustomAssetIconsSettingsMenu.GetSettings(); 66 | 67 | if (TryGetFromCache(guid, out Tuple, CustomSOIconsSettings> cachedGetter)) 68 | return cachedGetter; 69 | 70 | string assetPath = AssetDatabase.GUIDToAssetPath(guid); 71 | var asset = AssetDatabase.LoadAssetAtPath(assetPath); 72 | 73 | if (asset is null) return null; 74 | 75 | Func iconGetter = GetIconGetter(asset); 76 | var settings = _settings.GetSettings(asset); 77 | 78 | var newGetter = new Tuple, CustomSOIconsSettings>(iconGetter, settings); 79 | 80 | _iconGettersCache.Add(guid, newGetter); 81 | 82 | return newGetter; 83 | } 84 | 85 | public static Sprite GetIconCompletely(string guid) 86 | { 87 | var iconGetter = GetOrCreateIconGetter(guid); 88 | var icon = GetIconFromGetter(iconGetter.Item1, iconGetter.Item2); 89 | 90 | return icon; 91 | } 92 | 93 | private static void DrawFromGetter(Func getter, Rect rect, CustomSOIconsSettings settings) 94 | { 95 | var icon = GetIconFromGetter(getter, settings); 96 | 97 | if (icon == null) return; 98 | 99 | DrawIcon(rect, icon, settings); 100 | } 101 | 102 | private static Sprite GetIconFromGetter(Func getter, CustomSOIconsSettings settings) 103 | { 104 | if (settings == null) return null; 105 | 106 | if (getter == null && settings.DefaultIcon == null) return null; 107 | 108 | var icon = getter?.Invoke() ?? settings.DefaultIcon; 109 | 110 | if (icon == null) return null; 111 | 112 | return icon; 113 | } 114 | 115 | private static Func GetIconGetter(Object asset) 116 | { 117 | Func getter; 118 | 119 | if (TryGetDeclaratorIconGetter(asset, out getter)) 120 | { 121 | return getter; 122 | } 123 | 124 | if (TryGetAttributeIconGetter(asset, out getter)) 125 | { 126 | return getter; 127 | } 128 | 129 | return null; 130 | } 131 | 132 | private static bool TryGetDeclaratorIconGetter(Object asset, out Func getter) 133 | { 134 | var assetType = asset.GetType(); 135 | 136 | if (_iconDeclarators.ContainsKey(assetType)) 137 | { 138 | var iconDeclarator = _iconDeclarators[assetType]; 139 | getter = () => iconDeclarator.GetIcon(asset); 140 | return true; 141 | } 142 | 143 | getter = null; 144 | return false; 145 | } 146 | 147 | private static bool TryGetAttributeIconGetter(Object asset, out Func getter) 148 | { 149 | var assetType = asset.GetType(); 150 | 151 | var iconField = GetIconField(assetType); 152 | 153 | if (iconField is { }) 154 | { 155 | getter = () => iconField.GetValue(asset); 156 | return true; 157 | } 158 | 159 | getter = null; 160 | return false; 161 | } 162 | 163 | private static bool TryGetFromCache(string assetGuid, out Tuple, CustomSOIconsSettings> spriteGetter) 164 | { 165 | if (!_iconGettersCache.ContainsKey(assetGuid)) 166 | { 167 | spriteGetter = null; 168 | return false; 169 | } 170 | 171 | spriteGetter = _iconGettersCache[assetGuid]; 172 | return true; 173 | } 174 | 175 | private static MemberInfo GetIconField(Type assetType) 176 | { 177 | var members = assetType.GetMembers(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance); 178 | 179 | for (int i = 0; i < members.Length; i++) 180 | { 181 | var member = members[i]; 182 | if (member.GetCustomAttribute() is {}) 183 | { 184 | if (member.GetMemberType() == typeof(Sprite)) 185 | return member; 186 | } 187 | } 188 | 189 | return null; 190 | } 191 | 192 | private static void DrawIcon(Rect rect, Sprite icon, CustomSOIconsSettings settings) 193 | { 194 | if (settings.DefaultBackground != null) 195 | { 196 | DrawBackgroundIcon(rect, settings.DefaultBackground, settings); 197 | } 198 | 199 | if (rect.height > rect.width) 200 | rect.height = rect.width; 201 | else 202 | rect.width = rect.height; 203 | 204 | rect.height *= settings.IconsScale; 205 | rect.width *= settings.IconsScale; 206 | AssetIconsUtils.GUIDrawSprite(rect, icon); 207 | } 208 | 209 | private static void DrawBackgroundIcon(Rect rect, Sprite icon, CustomSOIconsSettings settings) 210 | { 211 | if (rect.height > rect.width) 212 | rect.height = rect.width; 213 | else 214 | rect.width = rect.height; 215 | 216 | rect.height *= settings.BackgroundScale; 217 | rect.width *= settings.BackgroundScale; 218 | AssetIconsUtils.GUIDrawSprite(rect, icon); 219 | } 220 | } 221 | } 222 | 223 | -------------------------------------------------------------------------------- /Editor/Scripts/EditorCustomSOIcons.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6186e7b08806e974f8a68d81bd189ed9 3 | timeCreated: 1680957371 -------------------------------------------------------------------------------- /Editor/Scripts/ICustomEditorIconDeclarator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | using Object = UnityEngine.Object; 4 | 5 | namespace Ligofff.CustomSOIcons.Editor 6 | { 7 | public interface ICustomEditorIconDeclarator 8 | { 9 | Type DeclareType { get; } 10 | Sprite GetIcon(Object asset); 11 | } 12 | } -------------------------------------------------------------------------------- /Editor/Scripts/ICustomEditorIconDeclarator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 56c22b4abf5ed674994661c04eda5d3c 3 | timeCreated: 1680957371 -------------------------------------------------------------------------------- /Editor/Scripts/OdinAssetIconsFieldDrawer.cs: -------------------------------------------------------------------------------- 1 | #if ODIN_INSPECTOR 2 | 3 | using Sirenix.OdinInspector.Editor; 4 | using UnityEditor; 5 | using UnityEngine; 6 | using Object = UnityEngine.Object; 7 | 8 | namespace Ligofff.CustomSOIcons.Editor 9 | { 10 | public class OdinAssetIconsFieldDrawer : OdinValueDrawer where T : Object 11 | { 12 | protected override void DrawPropertyLayout(GUIContent label) 13 | { 14 | CallNextDrawer(label); 15 | 16 | var rect = ValueEntry.Property.LastDrawnValueRect; 17 | 18 | if (ValueEntry.SmartValue == null) return; 19 | if (!AssetDatabase.Contains(ValueEntry.SmartValue)) return; 20 | 21 | var guid = AssetDatabase.GUIDFromAssetPath(AssetDatabase.GetAssetPath(ValueEntry.SmartValue)); 22 | 23 | var icon = EditorCustomSOIcons.GetIconCompletely(guid.ToString()); 24 | 25 | if (icon == null) return; 26 | 27 | var textureRect = rect; 28 | textureRect.size = new Vector2(20f, 20f); 29 | 30 | if (label != null) 31 | textureRect.x += EditorGUIUtility.labelWidth; 32 | else 33 | textureRect.x -= 5f; 34 | 35 | AssetIconsUtils.GUIDrawSprite(textureRect, icon); 36 | } 37 | } 38 | } 39 | 40 | #endif -------------------------------------------------------------------------------- /Editor/Scripts/OdinAssetIconsFieldDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d754a09c282a474f8b10dd792f1f8bc 3 | timeCreated: 1680957371 -------------------------------------------------------------------------------- /Editor/Scripts/Settings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3825e67373b22e64e918a056030cf013 3 | timeCreated: 1680957371 -------------------------------------------------------------------------------- /Editor/Scripts/Settings/CustomAssetIconsSettingsMenu.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using UnityEditor; 3 | using UnityEngine; 4 | 5 | namespace Ligofff.CustomSOIcons.Editor 6 | { 7 | public static class CustomAssetIconsSettingsMenu 8 | { 9 | [MenuItem("Ligofff/Open custom SO icons settings")] 10 | private static void OpenSettings() 11 | { 12 | var settings = GetSettings(); 13 | Selection.SetActiveObjectWithContext(settings, settings); 14 | } 15 | 16 | [MenuItem("Ligofff/Refresh custom SO icons")] 17 | private static void RefreshIcons() 18 | { 19 | EditorCustomSOIcons.Refresh(); 20 | } 21 | 22 | public static CustomSOIconsSettingsAsset GetSettings() 23 | { 24 | var allSettings = AssetDatabase.FindAssets($"t:{nameof(CustomSOIconsSettingsAsset)}") 25 | .Select(AssetDatabase.GUIDToAssetPath) 26 | .Select(AssetDatabase.LoadAssetAtPath) 27 | .ToList(); 28 | 29 | if (allSettings.Count == 0) return CreateSettings(); 30 | 31 | return allSettings[0]; 32 | } 33 | 34 | private static CustomSOIconsSettingsAsset CreateSettings() 35 | { 36 | var newSettings = ScriptableObject.CreateInstance(); 37 | 38 | var filename = "CustomSOIconsSettings.asset"; 39 | var path = "Assets/Resources/"; 40 | 41 | if (!AssetDatabase.IsValidFolder(path)) 42 | { 43 | AssetDatabase.CreateFolder("Assets", "Resources"); 44 | } 45 | 46 | AssetDatabase.CreateAsset(newSettings, path + filename); 47 | 48 | return newSettings; 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /Editor/Scripts/Settings/CustomAssetIconsSettingsMenu.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cd31092b0e9a0f94385936b30d79ae24 3 | timeCreated: 1680957371 -------------------------------------------------------------------------------- /Editor/Scripts/Settings/CustomSOIconsSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace Ligofff.CustomSOIcons.Editor 5 | { 6 | [Serializable] 7 | public class CustomSOIconsSettings 8 | { 9 | [SerializeField] 10 | private Sprite defaultIcon; 11 | 12 | [Range(0f, 1f), SerializeField] 13 | private float iconsScale = 0.5f; 14 | 15 | [SerializeField] 16 | private Sprite backgroundImage; 17 | 18 | [Range(0f, 1f), SerializeField] 19 | private float backgroundImageScale = 0.5f; 20 | 21 | public float BackgroundScale => backgroundImageScale; 22 | public float IconsScale => iconsScale; 23 | public Sprite DefaultIcon => defaultIcon; 24 | public Sprite DefaultBackground => backgroundImage; 25 | } 26 | } -------------------------------------------------------------------------------- /Editor/Scripts/Settings/CustomSOIconsSettings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2afe6dd2f8c1ae24795138f84b934f6a 3 | timeCreated: 1680957371 -------------------------------------------------------------------------------- /Editor/Scripts/Settings/CustomSOIconsSettingsAsset.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using UnityEngine; 4 | using Object = UnityEngine.Object; 5 | 6 | namespace Ligofff.CustomSOIcons.Editor 7 | { 8 | public class CustomSOIconsSettingsAsset : ScriptableObject 9 | { 10 | public CustomSOIconsSettings baseSettings; 11 | 12 | [SerializeField] 13 | private List overrides; 14 | 15 | public CustomSOIconsSettings GetSettings(Object asset) 16 | { 17 | if (overrides == null) return baseSettings; 18 | 19 | if (overrides.FirstOrDefault(over => over.typeName == asset.GetType().Name) is { } iconOverride) 20 | { 21 | return iconOverride.settings; 22 | } 23 | else 24 | { 25 | return baseSettings; 26 | } 27 | } 28 | 29 | private void OnValidate() 30 | { 31 | EditorCustomSOIcons.Refresh(); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Editor/Scripts/Settings/CustomSOIconsSettingsAsset.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ff29174fc41432c46af5cd2766ceef5d 3 | timeCreated: 1680957371 -------------------------------------------------------------------------------- /Editor/Scripts/Settings/TypeIconOverrides.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Ligofff.CustomSOIcons.Editor 4 | { 5 | [Serializable] 6 | public class TypeIconOverrides 7 | { 8 | public string typeName; 9 | public CustomSOIconsSettings settings; 10 | } 11 | } -------------------------------------------------------------------------------- /Editor/Scripts/Settings/TypeIconOverrides.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c4dad37b79ad4e545bc5ec380ed160a6 3 | timeCreated: 1680957371 -------------------------------------------------------------------------------- /Editor/com.ligofff.asset-icons.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.ligofff.asset-icons.Editor", 3 | "rootNamespace": "Ligofff.AssetIcons.Editor", 4 | "references": [ 5 | "GUID:64b39e08d0c569949bdab3af0602192b" 6 | ], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [], 17 | "noEngineReferences": false 18 | } -------------------------------------------------------------------------------- /Editor/com.ligofff.asset-icons.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2d0ed74973fce90499b6d6d2909a201c 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Simple tools - Custom SO Icons 2 | [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) 3 | 4 | ## About 5 | **Custom SO Icons** - simple editor addon that allows to show custom scriptable object icons in the Project view 6 | 7 |

8 | 9 |

10 | 11 | > [My Telegram channel](https://t.me/ligofff_blog) if you want more 12 | 13 | ## Overview 14 | 15 | This addon speeds up the interaction with the editor by x100 times - you no longer have to look at the names when you look for an object, because you can simply display the icon directly on the asset. 16 | 17 |

18 | 19 |

20 | 21 | You can change scale of icon, and set background if needed. 22 | 23 |

24 | 25 |

26 | 27 | 28 | *Also, if you have the [**Odin Inspector**](https://odininspector.com/) installed in your project, the icons will be displayed in any other fields of the inspector view. No additional settings are needed.* 29 |

30 | 31 |

32 | 33 | 34 | ## Minimum Requirements 35 | * Unity 2020 and above 36 | 37 | *Not necessary:* 38 | * [**Odin Inspector**](https://odininspector.com/) - only for display SO icons in inspector fields 39 | 40 | ### Install via GIT URL 41 | 42 | Go to ```Package Manager``` -> ```Add package from GIT url...``` -> Enter ```https://github.com/ligofff/SimpleTools-CustomSOIcons.git``` -> Click ```Add``` 43 | 44 | You will need to have Git installed and available in your system's PATH. 45 | 46 | ## Usage 47 | 48 | You have 3 ways to declare which icon to use for display. 49 | 50 | **Fisrst way** - Simply mark any ```Sprite``` field or property in your SO class as ```[CustomAssetIcon]``` 51 | 52 |

53 | 54 |

55 | 56 | **Second way** - If you want to assign icon to read-only class that you cannot change, you can create another class anywhere inside your project, inherit it from the ```ICustomEditorIconDeclarator```, and get an icon. 57 | 58 |

59 | 60 |

61 | 62 | **Third way** - For classes that you just want to assign an icon that won't change depending on the content, you can add override option in addon settings, which are in ```Assets/Resources``` 63 | 64 |

65 | 66 |

67 | 68 | *That's all! I'd appreciate it if you'd leave a star on the github.* 69 | 70 | ## License 71 | 72 | MIT License 73 | 74 | Copyright (c) 2023 Ligofff 75 | 76 | Permission is hereby granted, free of charge, to any person obtaining 77 | a copy of this software and associated documentation files (the 78 | "Software"), to deal in the Software without restriction, including 79 | without limitation the rights to use, copy, modify, merge, publish, 80 | distribute, sublicense, and/or sell copies of the Software, and to 81 | permit persons to whom the Software is furnished to do so, subject to 82 | the following conditions: 83 | 84 | The above copyright notice and this permission notice shall be 85 | included in all copies or substantial portions of the Software. 86 | 87 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 88 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 89 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 90 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 91 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 92 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 93 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 94 | -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f7e9c5bfe5878214d93d660e09edfb1d 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd0e6b11d5bad7c45a859ad14bb17aea 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 937a130a64a706849827b72833071bd6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Scripts/CustomAssetIconAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Ligofff.CustomSOIcons 4 | { 5 | [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] 6 | public class CustomAssetIconAttribute : Attribute 7 | { 8 | 9 | } 10 | } -------------------------------------------------------------------------------- /Runtime/Scripts/CustomAssetIconAttribute.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 31b6c18eb6bae6946a5bf51e85a82bbe 3 | timeCreated: 1680957372 -------------------------------------------------------------------------------- /Runtime/com.ligofff.asset-icons.Runtime.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.ligofff.asset-icons.Runtime", 3 | "rootNamespace": "Ligofff.AssetIcons", 4 | "references": [], 5 | "includePlatforms": [], 6 | "excludePlatforms": [], 7 | "allowUnsafeCode": false, 8 | "overrideReferences": false, 9 | "precompiledReferences": [], 10 | "autoReferenced": true, 11 | "defineConstraints": [], 12 | "versionDefines": [], 13 | "noEngineReferences": false 14 | } -------------------------------------------------------------------------------- /Runtime/com.ligofff.asset-icons.Runtime.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64b39e08d0c569949bdab3af0602192b 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 068dbb786bb588f4f8d391cc11481d6c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.ligofff.asset-icons", 3 | "displayName": "Asset icons", 4 | "version": "0.0.5", 5 | "unity": "2022.2", 6 | "description": "Small editor plugin for show icons on ScriptableObject assets in project and fields", 7 | "category": "", 8 | "author": { 9 | "name": "Ligofff", 10 | "email": "liga@ligofff.ru", 11 | "url": "https://github.com/fffogil" 12 | }, 13 | "samples": [ 14 | { 15 | 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 45ad95e316c214a408827e3d1ebc78ef 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------