diff options
Diffstat (limited to 'Assets/ActionTool/Editor')
-rw-r--r-- | Assets/ActionTool/Editor/ActionData.cs | 19 | ||||
-rw-r--r-- | Assets/ActionTool/Editor/ActionEditor.cs | 2 | ||||
-rw-r--r-- | Assets/ActionTool/Editor/ActionManager.cs | 23 |
3 files changed, 28 insertions, 16 deletions
diff --git a/Assets/ActionTool/Editor/ActionData.cs b/Assets/ActionTool/Editor/ActionData.cs index 33bb5c71..4465d314 100644 --- a/Assets/ActionTool/Editor/ActionData.cs +++ b/Assets/ActionTool/Editor/ActionData.cs @@ -30,7 +30,9 @@ namespace ActionTool private const string kStateName = "Action";
- public void Initialize(Animator animator, AnimationClip clip)
+ private RootMotionData m_RootMotion;
+
+ public void Initialize(Animator animator, AnimationClip clip, RootMotionData rootmotion)
{
m_Animator = animator;
m_Clip = clip;
@@ -43,6 +45,7 @@ namespace ActionTool m_CurAnimFrame = 0;
m_PrevLocalTime = 0;
m_Animator.Play(kStateName, 0, 0);
+ m_RootMotion = rootmotion;
}
public void SetCurrentAnimTime(float time)
@@ -136,17 +139,17 @@ namespace ActionTool if (m_Animator == null)
return;
- m_Animator.speed = 1;
-
float normalizeTime = m_CurAnimFrame / m_TotalFrame;
+ m_Animator.speed = 1;
m_Animator.Play(kStateName, 0, normalizeTime);
- m_Animator.Update((float)dt);
-
- m_Animator.transform.position += m_Animator.deltaPosition;
- m_Animator.transform.rotation *= m_Animator.deltaRotation;
-
+ m_Animator.Update(0);
m_Animator.speed = 0;
+
+ if(m_RootMotion)
+ {
+ m_Animator.transform.position = m_RootMotion.GetRootMotion(normalizeTime);
+ }
}
public int GetCurrentFrame()
diff --git a/Assets/ActionTool/Editor/ActionEditor.cs b/Assets/ActionTool/Editor/ActionEditor.cs index 90c8bfc9..71942d34 100644 --- a/Assets/ActionTool/Editor/ActionEditor.cs +++ b/Assets/ActionTool/Editor/ActionEditor.cs @@ -15,7 +15,7 @@ namespace ActionTool ActionManager.AnimationWindow = GetWindow<ActionEditor>();
}
- private string m_SearchText;
+ private string m_SearchText = "";
public void OnEnable()
{
diff --git a/Assets/ActionTool/Editor/ActionManager.cs b/Assets/ActionTool/Editor/ActionManager.cs index e894d32c..32c71434 100644 --- a/Assets/ActionTool/Editor/ActionManager.cs +++ b/Assets/ActionTool/Editor/ActionManager.cs @@ -10,7 +10,7 @@ namespace ActionTool public static string s_AnimFolder = "Assets/Art/Animations/";
public static string s_Controller = "Assets/ActionTool/controller_temp.controller";
public static string s_AnimationDataFolder = "Assets/Data/AnimationData/";
- public static string s_UnitDataFolder = "Assets/Data/UnitData/";
+ static string s_RootMotionDataFolder = "Assets/Data/RootMotionData/";
public static ActionEditor AnimationWindow;
public static ActionPreviewEditor PreviewWindow;
@@ -49,6 +49,8 @@ namespace ActionTool public static Quaternion s_InitRotation = Quaternion.identity;
+ private static RootMotionData s_RootMotion;
+
private static bool s_IsPlay;
public static bool IsPlay { get { return s_IsPlay; } }
@@ -66,20 +68,28 @@ namespace ActionTool public static void OnSelectAnimation(string animation)
{
s_CurrentAnimationName = animation;
- if(PreviewWindow == null)
+ if (PreviewWindow == null)
PreviewWindow = EditorWindow.GetWindow<ActionPreviewEditor>();
PreviewWindow.Repaint();
string animpath = s_AnimFolder + s_CurrentUnit.name + "/" + animation + ".anim";
AnimationClip clip = AssetDatabase.LoadAssetAtPath(animpath, typeof(AnimationClip)) as AnimationClip;
- if(clip)
+ if (clip)
{
s_OverrideContorller["EmptyAction"] = clip;
}
- if(s_CurActionData == null)
+ string rootmotionData = s_RootMotionDataFolder + s_CurrentUnit.name + "/" + animation.Replace(' ', '_') + ".asset";
+ s_RootMotion = AssetDatabase.LoadAssetAtPath<RootMotionData>(rootmotionData);
+ if (s_RootMotion == null)
+ {
+ Debug.LogError("[ActionTool] 没有对应的rootmotion, " + rootmotionData);
+ }
+
+ if (s_CurActionData == null)
s_CurActionData = new ActionData();
- s_CurActionData.Initialize(s_Animator, clip);
+ s_CurActionData.Initialize(s_Animator, clip, s_RootMotion);
+
}
public static bool HasSelectObj()
@@ -130,8 +140,7 @@ namespace ActionTool s_OverrideContorller.name = "override controller";
s_Animator.runtimeAnimatorController = s_OverrideContorller;
- UnitRootMotion rootMotion = s_UnitInstance.GetComponent<UnitRootMotion>();
- Object.DestroyImmediate(rootMotion);
+ s_Animator.applyRootMotion = false;
}
public static void UpdateFrame()
|