From 5ebd57d6e40c4f6060ae2bb54ebea4ad4b1ca776 Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 11 Sep 2021 11:08:25 +0800 Subject: +animation favorite --- Assets/ActionTool/Editor/ActionEditor.cs | 114 +++++++++++++++++++++++++++---- 1 file changed, 101 insertions(+), 13 deletions(-) (limited to 'Assets/ActionTool/Editor/ActionEditor.cs') 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 animationAssets = new Dictionary(); + 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 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 -- cgit v1.1-26-g67d0 From 1c40a4089f59c0d1943d2c900ffacd59d4129d6b Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 11 Sep 2021 11:27:46 +0800 Subject: * animation label --- Assets/ActionTool/Editor/ActionEditor.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'Assets/ActionTool/Editor/ActionEditor.cs') diff --git a/Assets/ActionTool/Editor/ActionEditor.cs b/Assets/ActionTool/Editor/ActionEditor.cs index 554beb3d..2abe9a2b 100644 --- a/Assets/ActionTool/Editor/ActionEditor.cs +++ b/Assets/ActionTool/Editor/ActionEditor.cs @@ -170,7 +170,7 @@ namespace ActionTool isFavorite = true; } } - if (!animationAssets.ContainsKey(file) && coLoadAnimationAssets == null) + if ((!animationAssets.ContainsKey(file) || animationAssets[file] == null) && coLoadAnimationAssets == null) { coLoadAnimationAssets = CoLoadAnimationAssets(); } @@ -237,10 +237,9 @@ namespace ActionTool { animationAssets.Add(file, animFile); } + this.Repaint(); yield return null; } - - this.Repaint(); } void OnSelectObj(params object[] objs) -- cgit v1.1-26-g67d0