Skip to content
This repository was archived by the owner on Aug 15, 2024. It is now read-only.

Commit 6f4a721

Browse files
author
serg.morozov
committed
feature: tree icons to DataNodes
1 parent 7f7e2fe commit 6f4a721

File tree

16 files changed

+116
-79
lines changed

16 files changed

+116
-79
lines changed

Assets/SODatabase.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/SODatabase/Resources/SODatabaseSettings.asset

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,26 @@ MonoBehaviour:
2020
Prefab: {fileID: 0}
2121
PrefabModificationsReferencedUnityObjects: []
2222
PrefabModifications: []
23-
SerializationNodes: []
24-
path: Assets/SODatabaseModels/
23+
SerializationNodes:
24+
- Name: NodeIcons
25+
Entry: 7
26+
Data: 0|System.Collections.Generic.Dictionary`2[[System.Type, mscorlib],[UnityEngine.Texture,
27+
UnityEngine.CoreModule]], mscorlib
28+
- Name: comparer
29+
Entry: 7
30+
Data: 1|System.Collections.Generic.ObjectEqualityComparer`1[[System.Type, mscorlib]],
31+
mscorlib
32+
- Name:
33+
Entry: 8
34+
Data:
35+
- Name:
36+
Entry: 12
37+
Data: 0
38+
- Name:
39+
Entry: 13
40+
Data:
41+
- Name:
42+
Entry: 8
43+
Data:
44+
path:
2545
label: SODatabase

Assets/SODatabase/Resources/SODatabaseSettings.asset.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/com.nuclearband.sodatabase/Editor/DataNodeCreator.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ public static void ShowDialog<T>(string defaultDestinationPath, Action<T>? onScr
3030

3131
private class ScriptableObjectSelector<T> : OdinSelector<Type> where T : ScriptableObject
3232
{
33-
private readonly Action<T>? onScriptableObjectCreated;
34-
private readonly string defaultDestinationPath;
33+
private readonly Action<T>? _onScriptableObjectCreated;
34+
private readonly string _defaultDestinationPath;
3535

3636
public ScriptableObjectSelector(string defaultDestinationPath, Action<T>? onScriptableObjectCreated = null)
3737
{
38-
this.onScriptableObjectCreated = onScriptableObjectCreated;
39-
this.defaultDestinationPath = defaultDestinationPath;
40-
this.SelectionConfirmed += this.Save;
38+
_onScriptableObjectCreated = onScriptableObjectCreated;
39+
_defaultDestinationPath = defaultDestinationPath;
40+
SelectionConfirmed += Save;
4141
}
4242

4343
protected override void BuildSelectionTree(OdinMenuTree tree)
@@ -55,15 +55,14 @@ private void Save(IEnumerable<Type> selection)
5555
{
5656
var obj = (ScriptableObject.CreateInstance(selection.FirstOrDefault()) as T)!;
5757

58-
var dest = this.defaultDestinationPath.TrimEnd('/');
58+
var dest = _defaultDestinationPath.TrimEnd('/');
5959

6060
AssetDatabase.CreateAsset(obj, AssetDatabase.GenerateUniqueAssetPath(dest + "/" + "New.asset"));
6161
AssetDatabase.Refresh();
6262

63-
onScriptableObjectCreated?.Invoke(obj);
63+
_onScriptableObjectCreated?.Invoke(obj);
6464
}
6565
}
6666
}
6767
}
68-
6968
#endif

Assets/com.nuclearband.sodatabase/Editor/ScriptableObjectDatabaseEditorWindow.cs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class ScriptableObjectDatabaseEditorWindow : OdinMenuEditorWindow
1818
{
1919
public static event Action? OnSave;
2020

21-
private bool inSettings = false;
21+
private bool _inSettings;
2222

2323
[MenuItem("Tools/NuclearBand/ScriptableObjectDatabase")]
2424
private static void Open()
@@ -67,14 +67,28 @@ protected override OdinMenuTree BuildMenuTree()
6767

6868
if (SODatabaseSettings.Path == string.Empty)
6969
{
70-
inSettings = true;
70+
_inSettings = true;
7171
tree.AddMenuItemAtPath(new HashSet<OdinMenuItem>(), string.Empty, new OdinMenuItem(tree, "Settings", SODatabaseSettings.Instance));
7272
return tree;
7373
}
7474

7575
AddAllAssetsAtPath(tree, SODatabaseSettings.Path, typeof(DataNode));
7676
Texture folderIcon = (Texture2D) AssetDatabase.LoadAssetAtPath("Packages/com.nuclearband.sodatabase/Editor/folderIcon.png", typeof(Texture2D));
77-
tree.EnumerateTree().AddIcons<FolderHolder>(x => folderIcon);
77+
tree.EnumerateTree().AddIcons(odinMenuItem =>
78+
{
79+
if (odinMenuItem.Value is FolderHolder)
80+
{
81+
return folderIcon;
82+
}
83+
84+
var dataNodeType = ((DataNodeHolder) odinMenuItem.Value).DataNode.GetType();
85+
if (SODatabaseSettings.Instance.NodeIcons.ContainsKey(dataNodeType))
86+
{
87+
return SODatabaseSettings.Instance.NodeIcons[dataNodeType];
88+
}
89+
90+
return null;
91+
});
7892
tree.SortMenuItemsByName();
7993
tree.Selection.SelectionChanged += SelectionChanged;
8094
return tree;
@@ -133,7 +147,7 @@ void AddAllAssetsAtPath(
133147
continue;
134148
}
135149

136-
var withoutExtension = System.IO.Path.GetFileNameWithoutExtension(str1);
150+
var withoutExtension = Path.GetFileNameWithoutExtension(str1);
137151

138152
str2 = (PathUtilities.GetDirectoryName(str1).TrimEnd('/') + "/").Substring(assetFolderPath.Length);
139153
if (str2.Length != 0)
@@ -167,7 +181,7 @@ private static void SplitMenuPath(string menuPath, out string path, out string n
167181

168182
protected override void OnBeginDrawEditors()
169183
{
170-
if (inSettings)
184+
if (_inSettings)
171185
{
172186
base.OnBeginDrawEditors();
173187
if (SODatabaseSettings.Path != string.Empty)

Assets/com.nuclearband.sodatabase/Runtime/DataNode.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ namespace NuclearBand
99
public class DataNode : SerializedScriptableObject
1010
{
1111
[SerializeField, HideInInspector]
12-
private string fullPath = string.Empty;
12+
private string _fullPath = string.Empty;
1313

14-
public string FullPath => $"{(string.IsNullOrEmpty(fullPath) ? string.Empty : $"{fullPath}/")}{name}";
14+
public string FullPath => $"{(string.IsNullOrEmpty(_fullPath) ? string.Empty : $"{_fullPath}/")}{name}";
1515

1616
public virtual void BeforeSave()
1717
{
@@ -24,7 +24,7 @@ public virtual void AfterLoad()
2424
}
2525

2626
#if UNITY_EDITOR
27-
public void SetFullPath(string fullPath) => this.fullPath = fullPath;
27+
public void SetFullPath(string fullPath) => _fullPath = fullPath;
2828
#endif
2929
}
3030
}

Assets/com.nuclearband.sodatabase/Runtime/Holders/DataNodeHolder.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,19 @@ public DataNodeHolder(string path, string name, DataNode dataNode) : base(path,
1515
DataNode = dataNode;
1616
}
1717

18-
1918
protected override void Move()
2019
{
2120
AssetDatabase.Refresh();
2221
AssetDatabase.MoveAsset(SODatabaseSettings.Path + Path + "/" + Name + ".asset",
23-
SODatabaseSettings.Path + tempPath + "/" + Name + ".asset");
22+
SODatabaseSettings.Path + TempPath + "/" + Name + ".asset");
2423
AssetDatabase.SaveAssets();
2524
}
2625

2726
protected override void Rename()
2827
{
2928
AssetDatabase.Refresh();
30-
AssetDatabase.RenameAsset(SODatabaseSettings.Path + Path + "/" + Name + ".asset", tempName + ".asset");
31-
Name = tempName;
29+
AssetDatabase.RenameAsset(SODatabaseSettings.Path + Path + "/" + Name + ".asset", TempName + ".asset");
30+
Name = TempName;
3231
AssetDatabase.SaveAssets();
3332
}
3433

Assets/com.nuclearband.sodatabase/Runtime/Holders/FolderHolder.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ public class FolderHolder : Holder
1717

1818
public FolderHolder() : base()
1919
{
20-
2120
}
22-
21+
2322
#if UNITY_EDITOR
2423
public FolderHolder(string path, string name) : base(path, name)
2524
{
@@ -28,15 +27,15 @@ public FolderHolder(string path, string name) : base(path, name)
2827
protected override void Move()
2928
{
3029
AssetDatabase.Refresh();
31-
AssetDatabase.MoveAsset(SODatabaseSettings.Path + Path + "/" + Name, SODatabaseSettings.Path + tempPath + "/" + Name);
30+
AssetDatabase.MoveAsset(SODatabaseSettings.Path + Path + "/" + Name, SODatabaseSettings.Path + TempPath + "/" + Name);
3231
AssetDatabase.SaveAssets();
3332
}
3433

3534
protected override void Rename()
3635
{
3736
AssetDatabase.Refresh();
38-
AssetDatabase.RenameAsset(SODatabaseSettings.Path + Path + "/" + Name, tempName);
39-
Name = tempName;
37+
AssetDatabase.RenameAsset(SODatabaseSettings.Path + Path + "/" + Name, TempName);
38+
Name = TempName;
4039
AssetDatabase.SaveAssets();
4140
}
4241

Assets/com.nuclearband.sodatabase/Runtime/Holders/Holder.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ public abstract class Holder
1010
{
1111
protected Holder()
1212
{
13-
1413
}
14+
1515
#if UNITY_EDITOR
1616
[HideInInspector]
1717
public string Path = string.Empty;
@@ -20,10 +20,10 @@ protected Holder()
2020

2121
[ShowInInspector]
2222
[HorizontalGroup("Path")]
23-
protected string tempPath = string.Empty;
23+
protected string TempPath = string.Empty;
2424
[ShowInInspector]
2525
[HorizontalGroup("Name")]
26-
protected string tempName = string.Empty;
26+
protected string TempName = string.Empty;
2727

2828
public Holder(string path, string name)
2929
{
@@ -33,17 +33,17 @@ public Holder(string path, string name)
3333

3434
public virtual void Select()
3535
{
36-
tempPath = Path;
37-
tempName = Name;
36+
TempPath = Path;
37+
TempName = Name;
3838
}
3939

4040
[HorizontalGroup("Path")]
41-
[ShowIf("@Path != tempPath")]
41+
[ShowIf("@Path != _tempPath")]
4242
[Button]
4343
protected abstract void Move();
4444

4545
[HorizontalGroup("Name")]
46-
[ShowIf("@Name != tempName")]
46+
[ShowIf("@Name != _tempName")]
4747
[Button]
4848
protected abstract void Rename();
4949

Assets/com.nuclearband.sodatabase/Runtime/ResetOnPlayAttribute.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ static PlayStateNotifier()
2222
EditorApplication.playModeStateChanged += ModeChanged;
2323
}
2424

25-
static void ModeChanged(PlayModeStateChange playModeStateChange)
25+
private static void ModeChanged(PlayModeStateChange playModeStateChange)
2626
{
2727
if (playModeStateChange != PlayModeStateChange.EnteredEditMode)
2828
return;

0 commit comments

Comments
 (0)