diff options
Diffstat (limited to 'Assets/ActionTool/Editor/ActionData.cs')
-rw-r--r-- | Assets/ActionTool/Editor/ActionData.cs | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/Assets/ActionTool/Editor/ActionData.cs b/Assets/ActionTool/Editor/ActionData.cs index ade27488..936bc422 100644 --- a/Assets/ActionTool/Editor/ActionData.cs +++ b/Assets/ActionTool/Editor/ActionData.cs @@ -49,6 +49,12 @@ namespace ActionTool private double m_PrevLocalTime;
private float m_PrevNormalTime;
+
+ private bool m_NotApplyCurve;
+ public bool applyCurve { get { return !m_NotApplyCurve; } set { m_NotApplyCurve = !value; } } // 是否开启curve控制速度
+ private bool m_NotApplyRM;
+ public bool applyRootMotion { get { return !m_NotApplyRM; } set { m_NotApplyRM = !value; } }
+
private const string kStateName = "Action";
private RootMotionData m_RootMotion;
@@ -138,18 +144,20 @@ namespace ActionTool {
if (ActionManager.IsPlay)
{
- float dt = (float)(EditorApplication.timeSinceStartup - m_PrevLocalTime) * (ActionManager.FPS * ActionManager.Speed);
-#if true
- float normalizeTime = m_CurAnimFrame / m_TotalFrame;
- AnimationData animData = ActionManager.animationData;
- if (animData)
- {
- AnimationCurve curve = animData.curve;
- dt *= curve.Evaluate(normalizeTime);
- }
-#endif
+ float deltaFrame = (float)(EditorApplication.timeSinceStartup - m_PrevLocalTime) * (ActionManager.FPS * ActionManager.Speed);
+
+ if (applyCurve)
+ {
+ float normalizeTime = m_CurAnimFrame / m_TotalFrame;
+ AnimationData animData = ActionManager.animationData;
+ if (animData)
+ {
+ AnimationCurve curve = animData.curve;
+ deltaFrame *= curve.Evaluate(normalizeTime);
+ }
+ }
- m_CurAnimFrame += dt;
+ m_CurAnimFrame += deltaFrame;
if (m_CurAnimFrame > m_TotalFrame)
{
@@ -182,7 +190,7 @@ namespace ActionTool m_Animator.Update(0);
m_Animator.speed = 0;
- if(m_RootMotion)
+ if(applyRootMotion && m_RootMotion)
{
#if true
m_Animator.transform.position = m_RootMotion.GetRootMotion(normalizeTime);
|