/// <summary> /// <para>Renders the graphic for this drawer.</para> /// </summary> /// <param name="rect">The are in which to draw the icon.</param> /// <param name="target">The object to draw graphics for.</param> /// <param name="selected">Whether the selected graphic should appear selected.</param> public void Draw(Rect rect, object target, bool selected) { UpdateCachedProvidedGraphicsForTarget(target); for (int i = 0; i < providedGraphics.Length; i++) { var graphicProvider = Graphics[i]; object providedGraphic = providedGraphics[i]; if (providedGraphic != null && !providedGraphic.Equals(null)) { var drawRect = AssetIconTools.AreaToIconRect(rect, graphicProvider.Style.MaxSize); AssetIconDrawer.DrawObject(drawRect, providedGraphic, graphicProvider.Style, selected); } } }
/// <summary> /// <para>Paints the item in the project window.</para> /// </summary> /// <param name="guid">The GUID of the asset to check.</param> /// <param name="rect">The Rect in which the item is drawn.</param> private static void ItemOnGUI(string guid, Rect rect) { if (Event.current.type != EventType.Repaint || string.IsNullOrEmpty(guid)) { return; } if (!AssetIconsPreferences.Enabled.Value) { return; } var assetTarget = AssetTarget.CreateFromGUID(guid); if (string.IsNullOrEmpty(assetTarget.Extension)) { return; } if (assetTarget.Extension == ".asset") { var obj = AssetDatabase.LoadAssetAtPath(assetTarget.FilePath, typeof(Object)) as Object; if (obj == null) { return; } var type = obj.GetType(); AssetDrawer assetDrawer; bool result = AssetDrawerLibrary.AssetDrawers.TryGetValue(type, out assetDrawer); if (result) { if (assetDrawer.CanDraw(obj)) { bool selected = Selection.Contains(obj); var backgroundRect = AssetIconTools.AreaToIconRect(rect, 64); AssetIconDrawer.DrawBackground(backgroundRect); assetDrawer.Draw(rect, obj, selected); } assetDrawer.ClearCache(); } } else if (AssetIconsPreferences.DrawGUIStyles.Value && assetTarget.Extension == ".guiskin") { if (assetTarget.UnityObject is GUISkin) { bool selected = Selection.Contains(assetTarget.UnityObject); var skin = (GUISkin)assetTarget.UnityObject; rect = AreaToIconRect(rect); AssetIconDrawer.DrawBackground(rect); skin.box.Draw(rect, new GUIContent("Style"), 0, selected); } return; } var icon = AssetIconsPreferences.TypeIcons[assetTarget.Extension]; if (icon != null && icon.ObjectReference != null) { bool selected = Selection.Contains(assetTarget.UnityObject); rect = AreaToIconRect(rect); AssetIconDrawer.DrawBackground(rect); AssetIconDrawer.DrawObject(rect, icon, CompiledStyleDefinition.Default, selected); } }