summaryrefslogtreecommitdiff
path: root/Assets/ActionTool/Editor/ActionEditor.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-09-11 11:08:25 +0800
committerchai <chaifix@163.com>2021-09-11 11:08:25 +0800
commit5ebd57d6e40c4f6060ae2bb54ebea4ad4b1ca776 (patch)
tree21b89974b5cac10ba6b95c429ff3f3e97fd1af18 /Assets/ActionTool/Editor/ActionEditor.cs
parent4e46f701027da081d60aa96e0814996c7acfa70a (diff)
+animation favorite
Diffstat (limited to 'Assets/ActionTool/Editor/ActionEditor.cs')
-rw-r--r--Assets/ActionTool/Editor/ActionEditor.cs114
1 files changed, 101 insertions, 13 deletions
diff --git a/Assets/ActionTool/Editor/ActionEditor.cs b/Assets/ActionTool/Editor/ActionEditor.cs
index b84b9e0e..554beb3d 100644
--- a/Assets/ActionTool/Editor/ActionEditor.cs
+++ b/Assets/ActionTool/Editor/ActionEditor.cs
@@ -21,16 +21,35 @@ namespace ActionTool
ActionEditorUI ui;
int currentPickerWindow;
+ IEnumerator coLoadAnimationAssets;
+ Dictionary<string, Object> animationAssets = new Dictionary<string, Object>();
+
public void OnEnable()
{
titleContent = new GUIContent("Action Editor");
+
+ EditorApplication.update += OnUpdate;
+ ActionManager.onSelectObj += OnSelectObj;
}
- public void OnDisable()
+ void OnUpdate()
+ {
+ if(coLoadAnimationAssets != null)
+ {
+ if (!coLoadAnimationAssets.MoveNext())
+ {
+ coLoadAnimationAssets = null;
+ }
+ }
+ }
+
+ public void OnDisable()
{
+ EditorApplication.update -= OnUpdate;
+ ActionManager.onSelectObj -= OnSelectObj;
}
- public void OnGUI()
+ public void OnGUI()
{
if (styles == null) styles = ActionEditorStyles.Get();
if (ui == null) ui = ActionEditorUI.Get();
@@ -44,15 +63,8 @@ namespace ActionTool
GUILayout.Space(5);
}
- public enum Foo
- {
- A =0,
- B= 0,
- }
-
private void GUI_SelectUnit()
{
-
GUILayout.BeginHorizontal();
GameObject selectObj = EditorGUILayout.ObjectField(ActionManager.CurrentUnit, typeof(GameObject), false, GUILayout.Width(position.width - 160)) as GameObject;
@@ -143,13 +155,49 @@ namespace ActionTool
continue;
bool bChecked = ActionManager.CurrentAnimationName == animName;
EditorGUILayout.BeginHorizontal();
- bool check = GUILayout.Toggle(bChecked, animName, style, GUILayout.Width(position.width - 42), GUILayout.Height(15));
+
+ bool check = GUILayout.Toggle(bChecked, animName, style, GUILayout.Width(position.width - 60), GUILayout.Height(15));
if (check && ActionManager.CurrentAnimationName != animName)
ActionManager.OnSelectAnimation(animName);
- if(GUILayout.Button("", styles.selectObj, GUILayout.Width(15), GUILayout.Height(15)))
+
+ bool isFavorite = false;
+ if (animationAssets != null && animationAssets.ContainsKey(file))
+ {
+ var labels = AssetDatabase.GetLabels(animationAssets[file]);
+ for (int j = 0; j < labels.Length; ++j)
+ {
+ if (labels[j] == "GoodAnimation")
+ isFavorite = true;
+ }
+ }
+ if (!animationAssets.ContainsKey(file) && coLoadAnimationAssets == null)
+ {
+ coLoadAnimationAssets = CoLoadAnimationAssets();
+ }
+ Color bgColor = GUI.backgroundColor;
+ GUI.backgroundColor = isFavorite ? Color.yellow : Color.gray;
+ if (GUILayout.Button("", styles.starButton, GUILayout.Width(12), GUILayout.Height(13)))
+ {
+ isFavorite = !isFavorite;
+ if(animationAssets.ContainsKey(file))
+ {
+ if(!isFavorite)
+ {
+ AssetDatabase.SetLabels(animationAssets[file], new string[0]);
+ }
+ else
+ {
+ AssetDatabase.SetLabels(animationAssets[file], new string[1] { "GoodAnimation" });
+ }
+ }
+ }
+ GUI.backgroundColor = bgColor;
+
+ if (GUILayout.Button("", styles.selectObj, GUILayout.Width(15), GUILayout.Height(15)))
{
ui.SelectObject(file);
}
+
EditorGUILayout.EndHorizontal();
}
@@ -159,8 +207,48 @@ namespace ActionTool
style.clipping = prevClipping;
style.richText = prevRichText;
}
-
}
- }
+ IEnumerator CoLoadAnimationAssets()
+ {
+ if (!ActionManager.HasSelectObj())
+ yield break;
+
+ if (animationAssets != null)
+ animationAssets.Clear();
+ else
+ animationAssets = new Dictionary<string, Object>();
+
+ string animFolder = ActionManager.unitAnimationClipFolder;
+
+ string[] animfiles = Directory.GetFiles(animFolder);
+
+ for (int i = 0; i < animfiles.Length; ++i)
+ {
+ string file = animfiles[i];
+ if (file.Contains(".meta"))
+ continue;
+ var animFile = AssetDatabase.LoadMainAssetAtPath(file);
+ if (animationAssets.ContainsKey(file))
+ {
+ animationAssets[file] = animFile;
+ }
+ else
+ {
+ animationAssets.Add(file, animFile);
+ }
+ yield return null;
+ }
+
+ this.Repaint();
+ }
+
+ void OnSelectObj(params object[] objs)
+ {
+ animationAssets.Clear();
+ coLoadAnimationAssets = CoLoadAnimationAssets();
+ }
+
+ }
+
} \ No newline at end of file