Skip to content

Commit 5d6a1e2

Browse files
authored
Merge pull request #12 from CandyCoded/feature/asset-icons
[feat] Git status icons
2 parents 957ab57 + 4891830 commit 5d6a1e2

File tree

4 files changed

+166
-0
lines changed

4 files changed

+166
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// Copyright (c) Scott Doxey. All Rights Reserved. Licensed under the MIT License. See LICENSE in the project root for license information.
2+
3+
#if UNITY_EDITOR
4+
using System;
5+
using UnityEngine;
6+
7+
namespace CandyCoded.GitStatus
8+
{
9+
10+
[Serializable]
11+
public static class GitIcons
12+
{
13+
14+
public const int SIZE = 128;
15+
16+
private static Texture2D _changed;
17+
18+
public static Texture2D Changed
19+
{
20+
21+
get
22+
{
23+
if (_changed != null)
24+
{
25+
return _changed;
26+
}
27+
28+
_changed = new Texture2D(SIZE, SIZE);
29+
30+
_changed.LoadImage(Convert.FromBase64String(
31+
"iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAbFBMVEUA/6sJ/60+/79n/8yO/9m1/+bS//Df//Ts//j5//02/7x//9TB/+r///8g/7V8/9PZ//Ix/7us/+P9//4w/7oP/6+S/9v8//5R/8Xn//cG/6wf/7XM/+4t/7nl//Y9/7/v//n2//z+//4//784jO7vAAABiklEQVR4Ae3aBXbkQAwE0OpZ9lhmhsH7H2mT3KTzIMxRy6OA/gnqma0SjDHGGGOMMebbc+Bx1+Cv4XSidfyPHvgXryOcRJJm9IwsTbC0vCjpBWWRY0nVL3rVrwpLqZuW3qBtaiyi6+mN+g7yhobeoRkgbJzoXaYRouYNvdNmhqDtjt5tt4WY7Z4Y9mIJ5h2x7GaIGDfEtBkhYJiIbRoQrqEADYJ1FKRDoLqnIH0tewLkT8IKL6ocArkKIX5RsF8IkJOAPOAUOAhwYEsOJKBMwJWSiJR9Chygeg4iEhIxj4CDEKcfgMX9IyH/HDiOJObIOgUXEHPBCuAgxlkAC/A5A8hiBPAQ4y2ABdAPoPw6Xul/kLDEJCRmfhN6CPH6AZgyEpGx/4y88gHQ/zlFQQKKgPmAhwCvP6IJGFKlEQJFqf6YTn9QqT+q1R9W64/r9QsL/cpGv7TSr+30i0v96la/vNav73UXGBRWOOTlxUFziUV/jUd+kcmBxx0u7q1y7c48jDHGGGOMMcawXALKIb4v/YRInAAAAABJRU5ErkJggg=="
32+
));
33+
34+
return _changed;
35+
}
36+
37+
}
38+
39+
private static Texture2D _untracked;
40+
41+
public static Texture2D Untracked
42+
{
43+
44+
get
45+
{
46+
if (_untracked != null)
47+
{
48+
49+
return _untracked;
50+
51+
}
52+
53+
_untracked = new Texture2D(SIZE, SIZE);
54+
55+
_untracked.LoadImage(Convert.FromBase64String(
56+
"iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAQMAAAD58POIAAAABlBMVEUA/6v////118ZVAAAAJ0lEQVR4AWMY2mAUMP7/3zASBEYF7P9DwR8CAqMCIyZ9jAoMaTAKAPXENmxcOQjOAAAAAElFTkSuQmCC"
57+
));
58+
59+
return _untracked;
60+
}
61+
62+
}
63+
64+
}
65+
66+
}
67+
#endif

Assets/Plugins/CandyCoded.GitStatus/Scripts/CustomEditor/GitIcons.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
// Copyright (c) Scott Doxey. All Rights Reserved. Licensed under the MIT License. See LICENSE in the project root for license information.
2+
3+
#if UNITY_EDITOR
4+
using System.Linq;
5+
using UnityEditor;
6+
using UnityEngine;
7+
8+
namespace CandyCoded.GitStatus
9+
{
10+
11+
[InitializeOnLoad]
12+
public class ProjectPanel : AssetPostprocessor
13+
{
14+
15+
private const float ICON_SCALE = 0.25f;
16+
17+
private const float ICON_PADDING = 2;
18+
19+
private static string[] _changedFiles;
20+
21+
private static string[] _untrackedFiles;
22+
23+
static ProjectPanel()
24+
{
25+
26+
EditorApplication.projectWindowItemOnGUI -= ProjectWindowItemOnGui;
27+
EditorApplication.projectWindowItemOnGUI += ProjectWindowItemOnGui;
28+
29+
_changedFiles = Git.ChangedFiles();
30+
31+
_untrackedFiles = Git.UntrackedFiles();
32+
33+
}
34+
35+
private static void ProjectWindowItemOnGui(string guid, Rect selectionRect)
36+
{
37+
38+
if (!Event.current.type.Equals(EventType.Repaint))
39+
{
40+
41+
return;
42+
43+
}
44+
45+
if (string.IsNullOrEmpty(guid))
46+
{
47+
48+
return;
49+
50+
}
51+
52+
var path = AssetDatabase.GUIDToAssetPath(guid);
53+
54+
var iconSize = Mathf.Max(selectionRect.height * ICON_SCALE, EditorGUIUtility.singleLineHeight);
55+
56+
var rect = new Rect(
57+
selectionRect.xMax - iconSize - ICON_PADDING,
58+
selectionRect.y + ICON_PADDING,
59+
iconSize - ICON_PADDING,
60+
iconSize - ICON_PADDING);
61+
62+
if (_changedFiles.Contains(path))
63+
{
64+
65+
GUI.DrawTexture(rect, GitIcons.Changed, ScaleMode.ScaleToFit);
66+
67+
}
68+
else if (_untrackedFiles.Contains(path))
69+
{
70+
71+
GUI.DrawTexture(rect, GitIcons.Untracked, ScaleMode.ScaleToFit);
72+
73+
}
74+
75+
}
76+
77+
private static void OnPostprocessAllAssets(
78+
string[] importedAssets,
79+
string[] deletedAssets,
80+
string[] movedAssets,
81+
string[] movedFromAssetPaths)
82+
{
83+
84+
_changedFiles = Git.ChangedFiles();
85+
86+
_untrackedFiles = Git.UntrackedFiles();
87+
88+
}
89+
90+
}
91+
92+
}
93+
#endif

Assets/Plugins/CandyCoded.GitStatus/Scripts/CustomEditor/ProjectPanel.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)