summaryrefslogtreecommitdiff
path: root/Assets/ActionTool/Editor
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-08-09 08:47:48 +0800
committerchai <chaifix@163.com>2021-08-09 08:47:48 +0800
commit7669c3afcbd71f06233bce12bb521c582c07ee5b (patch)
tree92a15b1c214385a53362a7e704fef8e67c7102ad /Assets/ActionTool/Editor
parent754ceacd8ab62e7094f1827ae45ea16a502725ad (diff)
*misc
Diffstat (limited to 'Assets/ActionTool/Editor')
-rw-r--r--Assets/ActionTool/Editor/ActionEditor.cs81
-rw-r--r--Assets/ActionTool/Editor/ActionManager.cs9
-rw-r--r--Assets/ActionTool/Editor/ActionPreviewEditor.cs40
-rw-r--r--Assets/ActionTool/Editor/AnimationParameterEditor.cs54
-rw-r--r--Assets/ActionTool/Editor/AnimationParameterEditor.cs.meta11
-rw-r--r--Assets/ActionTool/Editor/AnimationToggleEditor.cs4
6 files changed, 159 insertions, 40 deletions
diff --git a/Assets/ActionTool/Editor/ActionEditor.cs b/Assets/ActionTool/Editor/ActionEditor.cs
index 072d40cc..d94806ad 100644
--- a/Assets/ActionTool/Editor/ActionEditor.cs
+++ b/Assets/ActionTool/Editor/ActionEditor.cs
@@ -3,6 +3,7 @@ using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
+using UnityEditor.SceneManagement;
namespace ActionTool
{
@@ -18,15 +19,16 @@ namespace ActionTool
string m_SearchText = "";
ActionEditorStyles styles;
ActionEditorUI ui;
+ int currentPickerWindow;
- public void OnEnable()
+ public void OnEnable()
{
titleContent = new GUIContent("Action Editor");
- }
+ }
public void OnDisable()
{
- }
+ }
public void OnGUI()
{
@@ -44,34 +46,61 @@ namespace ActionTool
private void GUI_SelectUnit()
{
- if(ActionManager.CurrentUnit == null)
- {
- EditorGUILayout.HelpBox("选择角色prefab", MessageType.Warning);
- }
- GUILayout.BeginHorizontal();
+ GUILayout.BeginHorizontal();
- GameObject selectObj = EditorGUILayout.ObjectField(ActionManager.CurrentUnit, typeof(GameObject), false, GUILayout.Width(position.width - 160)) as GameObject;
+ GameObject selectObj = EditorGUILayout.ObjectField(ActionManager.CurrentUnit, typeof(GameObject), false, GUILayout.Width(position.width - 160)) as GameObject;
- if(selectObj != ActionManager.CurrentUnit)
- {
- ActionManager.OnSelectObj(selectObj);
- }
+ if (selectObj != null && selectObj != ActionManager.CurrentUnit)
+ {
+ ActionManager.OnSelectObj(selectObj);
+ if (ActionManager.AnimationWindow != null)
+ {
+ ActionManager.AnimationWindow.Repaint();
+ }
+ }
- if (GUILayout.Button("Select", GUILayout.Width(70)))
+ if (GUILayout.Button("Select", GUILayout.Width(70)))
{
-
- }
-
- if (GUILayout.Button("Reimport", GUILayout.Width(70)))
- {
-
- }
-
- GUILayout.EndHorizontal();
- }
-
- private Vector2 m_AnimtionListScroll;
+ currentPickerWindow = EditorGUIUtility.GetControlID(FocusType.Passive) + 100;
+ EditorGUIUtility.ShowObjectPicker<GameObject>(ActionManager.CurrentUnit, false, "l:UnitPrefab", currentPickerWindow);
+ }
+
+ string commandName = Event.current.commandName;
+ if(/*commandName.Equals("ObjectSelectorUpdated") || */commandName.Equals("ObjectSelectorClosed"))
+ {
+ GameObject go = EditorGUIUtility.GetObjectPickerObject() as GameObject;
+ if (/*go != null && */ActionManager.CurrentUnit != go)
+ {
+ ActionManager.OnSelectObj(go);
+ this.Repaint();
+ }
+ }
+
+ if (GUILayout.Button("Reimport", GUILayout.Width(70)))
+ {
+ ActionManager.OnSelectObj(ActionManager.CurrentUnit);
+ }
+
+ GUILayout.EndHorizontal();
+
+ var scene = EditorSceneManager.GetActiveScene();
+ if (scene == null || scene.path != ActionManager.scenePath)
+ {
+ if(GUILayout.Button("打开ActionToolScene"))
+ {
+ EditorSceneManager.OpenScene(ActionManager.scenePath);
+ }
+ }
+
+ if (ActionManager.CurrentUnit == null)
+ {
+ EditorGUILayout.HelpBox("选择角色prefab", MessageType.Warning);
+ }
+
+ }
+
+ private Vector2 m_AnimtionListScroll;
private void GUI_AnimationList()
{
if (!ActionManager.HasSelectObj())
diff --git a/Assets/ActionTool/Editor/ActionManager.cs b/Assets/ActionTool/Editor/ActionManager.cs
index af3935a7..2d45630e 100644
--- a/Assets/ActionTool/Editor/ActionManager.cs
+++ b/Assets/ActionTool/Editor/ActionManager.cs
@@ -17,6 +17,7 @@ namespace ActionTool
public static string s_Controller = "Assets/ActionTool/controller_temp.controller";
static string s_SettingPath = "Assets/ActionTool/ActionTool Settings.asset";
+ public static string scenePath { get { return "Assets/ActionTool/ActionToolScene.unity"; } }
//public static string s_AnimFolder = "Assets/Art/Animations/";
//public static string s_AnimationDataFolder = "Assets/Data/AnimationData/";
@@ -134,15 +135,15 @@ namespace ActionTool
public static void OnSelectObj(GameObject obj)
{
Release();
- s_CurrentUnit = obj;
+ s_CurrentUnit = obj;
if(s_CurrentUnit != null)
{
string path = AssetDatabase.GetAssetPath(obj);
string folder = Path.GetDirectoryName(path).Replace('\\', '/');
folder = folder.Substring(0, folder.LastIndexOf('/'));
- unitFolder = folder + "/";
- s_UnitInstance = GameObject.Instantiate(obj);
- InitializeUnitInstance(s_UnitInstance);
+ unitFolder = folder + "/";
+ s_UnitInstance = GameObject.Instantiate(obj);
+ InitializeUnitInstance(s_UnitInstance);
}
}
diff --git a/Assets/ActionTool/Editor/ActionPreviewEditor.cs b/Assets/ActionTool/Editor/ActionPreviewEditor.cs
index 32731deb..9c5fac92 100644
--- a/Assets/ActionTool/Editor/ActionPreviewEditor.cs
+++ b/Assets/ActionTool/Editor/ActionPreviewEditor.cs
@@ -102,11 +102,13 @@ namespace ActionTool
float y = kToolbarHeight + 5;
GUI_Detail(ref y);
+ GUI_Parameters(ref y);
GUI_Toggle(ref y);
GUI_Curves(ref y);
GUI_Curve(ref y);
+ GUI_PlaybackTime(ref y);
y += 5;
- GUI_Setting(ref y);
+ GUI_Setting(ref y);
GUI_TimeLineView(ref y);
}
@@ -278,16 +280,20 @@ namespace ActionTool
GUI.Label(new Rect(xr, y, 100, 15), "None", styles.textMiddleBold);
}
y += 15;
+ }
- GUI.Label(new Rect(xl, y, 105, 15), "Playback Frame:", styles.textMiddle);
- GUI.Label(new Rect(xr, y, 510, 15), ActionManager.actionData.curAnimFrame.ToString("f2"), styles.textMiddleBold);
- GUI.Label(new Rect(xl + 150, y, 105, 15), "Normalized Time:", styles.textMiddle);
- GUI.Label(new Rect(xr + 150, y, 510, 15), ActionManager.actionData.curAnimTimeNormal.ToString("f2"), styles.textMiddleBold);
- y += 15;
+ void GUI_PlaybackTime(ref float y)
+ {
+ float xl = 5, xr = xl + 105;
+ GUI.Label(new Rect(xl, y, 105, 15), "Playback Frame:", styles.textMiddle);
+ GUI.Label(new Rect(xr, y, 510, 15), ActionManager.actionData.curAnimFrame.ToString("f2"), styles.textMiddleBold);
+ GUI.Label(new Rect(xl + 150, y, 105, 15), "Normalized Time:", styles.textMiddle);
+ GUI.Label(new Rect(xr + 150, y, 510, 15), ActionManager.actionData.curAnimTimeNormal.ToString("f2"), styles.textMiddleBold);
+ y += 15;
+ }
- }
- void GUI_Curve(ref float y)
+ void GUI_Curve(ref float y)
{
AnimationData animData = ActionManager.animationData;
if (animData == null)
@@ -301,6 +307,24 @@ namespace ActionTool
y += 15;
}
+ void GUI_Parameters(ref float y)
+ {
+ AnimationData animData = ActionManager.animationData;
+ if (animData == null)
+ return;
+ var parameters = animData.parameters;
+ float x = 5;
+ GUI.Label(new Rect(x, y, 105, 15), "Parameters:", styles.textMiddle);
+ x += 105;
+ GUI.Label(new Rect(x, y, 10, 15), (parameters != null ? parameters.Count : 0).ToString(), styles.textMiddleBold);
+ x += 20;
+ if (GUI.Button(new Rect(x, y, 50, 15), "Edit"))
+ {
+ EditorWindow.GetWindow<AnimationParameterEditor>(true);
+ }
+ y += 15;
+ }
+
void GUI_Toggle(ref float y)
{
AnimationData animData = ActionManager.animationData;
diff --git a/Assets/ActionTool/Editor/AnimationParameterEditor.cs b/Assets/ActionTool/Editor/AnimationParameterEditor.cs
new file mode 100644
index 00000000..4a382170
--- /dev/null
+++ b/Assets/ActionTool/Editor/AnimationParameterEditor.cs
@@ -0,0 +1,54 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+namespace ActionTool
+{
+
+ [CustomPropertyDrawer(typeof(ParameterDictionary))]
+ public class ParameterDictionaryDrawer : SerializableDictionaryPropertyDrawer { }
+
+ public class AnimationParameterEditor : EditorWindow
+ {
+
+ SerializedObject obj;
+
+ private void OnEnable()
+ {
+ titleContent = new GUIContent("Parameters");
+ maxSize = new Vector2(300, 200);
+ minSize = maxSize;
+ }
+
+ private void OnDisable()
+ {
+ }
+
+ private void Update()
+ {
+ }
+
+ private void OnGUI()
+ {
+ AnimationData animData = ActionManager.animationData;
+ if (animData == null)
+ {
+ this.Close();
+ return;
+ }
+
+ if (obj == null || obj.targetObject != animData)
+ {
+ obj = new SerializedObject(animData);
+ }
+
+ var curves = obj.FindProperty("parameters");
+ EditorGUILayout.PropertyField(curves, true);
+ if (obj.ApplyModifiedProperties())
+ {
+ }
+ }
+ }
+
+}
diff --git a/Assets/ActionTool/Editor/AnimationParameterEditor.cs.meta b/Assets/ActionTool/Editor/AnimationParameterEditor.cs.meta
new file mode 100644
index 00000000..f0555041
--- /dev/null
+++ b/Assets/ActionTool/Editor/AnimationParameterEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4ffd18cdca7a4c2439cef0254dcf751a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ActionTool/Editor/AnimationToggleEditor.cs b/Assets/ActionTool/Editor/AnimationToggleEditor.cs
index fc153567..0ac47dae 100644
--- a/Assets/ActionTool/Editor/AnimationToggleEditor.cs
+++ b/Assets/ActionTool/Editor/AnimationToggleEditor.cs
@@ -54,12 +54,12 @@ namespace ActionTool
List<EAnimationToogle> keys = new List<EAnimationToogle>(animData.toggles.Keys);
for(int i = 0; i < keys.Count; ++i)
{
- Vector2 minMax = animData.toggles[keys[i]];
+ Vector2 minMax = animData.toggles[keys[i]].fromTo;
minMax.x = Mathf.Clamp(minMax.x, 0, 1);
minMax.y = Mathf.Clamp(minMax.y, 0, 1);
minMax.x = Mathf.Clamp(minMax.x, 0, minMax.y);
minMax.y = Mathf.Clamp(minMax.y, minMax.x, 1);
- animData.toggles[keys[i]] = minMax;
+ animData.toggles[keys[i]] = new FromTo(minMax);
}
}
}