diff options
Diffstat (limited to 'Assets')
-rw-r--r-- | Assets/ActionTool/Editor/ActionEditor.cs | 114 | ||||
-rw-r--r-- | Assets/ActionTool/Editor/ActionEditorStyles.cs | 38 | ||||
-rw-r--r-- | Assets/ActionTool/Editor/ActionManager.cs | 14 |
3 files changed, 141 insertions, 25 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 diff --git a/Assets/ActionTool/Editor/ActionEditorStyles.cs b/Assets/ActionTool/Editor/ActionEditorStyles.cs index 6059f93a..18b0dde7 100644 --- a/Assets/ActionTool/Editor/ActionEditorStyles.cs +++ b/Assets/ActionTool/Editor/ActionEditorStyles.cs @@ -24,6 +24,9 @@ namespace ActionTool public GUIStyle keyButton;
+ public GUIStyle starButton;
+ public GUIStyle starButton2;
+
public Texture2D selectIcon;
public Texture2D keyFrameIcon;
public Texture2D addFileIcon;
@@ -32,8 +35,10 @@ namespace ActionTool public Texture2D infoIcon;
public Texture2D keyIcon;
public Texture2D recordIcon;
+ public Texture2D starIcon;
+ public Texture2D starIcon2;
- private static ActionEditorStyles s_instance;
+ private static ActionEditorStyles s_instance;
public static ActionEditorStyles Get()
{
bool flag = s_instance == null;
@@ -55,6 +60,8 @@ namespace ActionTool deleteIcon = EditorGUIUtility.FindTexture("d_P4_DeletedLocal");
infoIcon = EditorGUIUtility.FindTexture("console.infoicon");
keyIcon = EditorGUIUtility.FindTexture("d_animationkeyframe");
+ starIcon = EditorGUIUtility.FindTexture("Favorite");
+ starIcon2 = EditorGUIUtility.FindTexture("Favorite Icon");
recordIcon = EditorGUIUtility.FindTexture("d_Animation.Record");
InitStyle(out textBoldBig, GUI.skin.label, s => {
@@ -108,13 +115,28 @@ namespace ActionTool s.focused.textColor = Color.yellow;
s.hover.textColor = Color.yellow;
});
- InitStyle(out keyButton, GUI.skin.button, s => {
- s.normal.background = keyIcon;
- s.active.background = keyIcon;
- s.hover.background = keyIcon;
- s.focused.background = keyIcon;
- });
- InitStyle(out toggleSmallBold, GUI.skin.toggle, s => {
+ InitStyle(out keyButton, GUI.skin.button, s =>
+ {
+ s.normal.background = keyIcon;
+ s.active.background = keyIcon;
+ s.hover.background = keyIcon;
+ s.focused.background = keyIcon;
+ });
+ InitStyle(out starButton, GUI.skin.button, s =>
+ {
+ s.normal.background = starIcon;
+ s.active.background = starIcon;
+ s.hover.background = starIcon;
+ s.focused.background = starIcon;
+ });
+ InitStyle(out starButton2, GUI.skin.button, s =>
+ {
+ s.normal.background = starIcon2;
+ s.active.background = starIcon2;
+ s.hover.background = starIcon2;
+ s.focused.background = starIcon2;
+ });
+ InitStyle(out toggleSmallBold, GUI.skin.toggle, s => {
s.fontSize = 10;
//s.fontStyle = FontStyle.Bold;
});
diff --git a/Assets/ActionTool/Editor/ActionManager.cs b/Assets/ActionTool/Editor/ActionManager.cs index f8eb327d..54322cd6 100644 --- a/Assets/ActionTool/Editor/ActionManager.cs +++ b/Assets/ActionTool/Editor/ActionManager.cs @@ -7,7 +7,10 @@ using UnityEngine; namespace ActionTool
{
- public static class ActionManager
+ // ActionTool callback delegates
+ public delegate void CallbackHandler(params object[] objs);
+
+ public static class ActionManager
{
public enum UnitType
{
@@ -146,7 +149,9 @@ namespace ActionTool public static int colliderIndex;
- public static void OnSelectObj(GameObject obj)
+ public static CallbackHandler onSelectObj;
+
+ public static void OnSelectObj(GameObject obj)
{
Release();
s_CurrentUnit = obj;
@@ -159,7 +164,8 @@ namespace ActionTool s_UnitInstance = GameObject.Instantiate(obj);
InitializeUnitInstance(s_UnitInstance);
}
- }
+ onSelectObj?.Invoke(obj);
+ }
public static void OnSelectAnimation(string animation)
{
@@ -521,4 +527,4 @@ namespace ActionTool copiedAnimationEvent = UnityEngine.Object.Instantiate(animEvent);
}
}
-}
\ No newline at end of file +}
\ No newline at end of file |