diff options
Diffstat (limited to 'Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs')
-rw-r--r-- | Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs b/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs index 586bfbaa..f07d9671 100644 --- a/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs +++ b/Assets/Scripts/Unit/Components/UnitAnimation/UnitAnimation.cs @@ -55,14 +55,14 @@ public class AnimatorLayerInfo { get { - AnimatorStateInfo stateInfo = m_Animator.GetCurrentAnimatorStateInfo(layerIndex); - AnimatorClipInfo[] clips = m_Animator.GetCurrentAnimatorClipInfo(layerIndex); - if(clips == null || clips.Length == 0) - { - stateInfo = m_Animator.GetNextAnimatorStateInfo(layerIndex); - } - return stateInfo; - } + AnimatorStateInfo stateInfo = m_Animator.GetCurrentAnimatorStateInfo(layerIndex); + if (isInTransition) + { + stateInfo = m_Animator.GetNextAnimatorStateInfo(layerIndex); + } + // Debug.Assert(stateInfo.IsName(layerName + "." + m_CurrentState)); + return stateInfo; + } } private int preStateHash = -1; @@ -178,8 +178,13 @@ public class AnimatorLayerInfo TimelineEventProxy m_TimelineEventProxy; - public AnimatorLayerInfo(UnitAnimation unitAnimation, Animator animator, int layer) + public string m_CurrentState; + + public readonly string layerName; + + public AnimatorLayerInfo(UnitAnimation unitAnimation, Animator animator, int layer, string layerName) { + this.layerName = layerName; this.m_UnitAnimation = unitAnimation; this.m_Animator = animator; this.layer = layer; @@ -219,7 +224,18 @@ public class AnimatorLayerInfo { playbackSpeed = animationData.speedCurve.Evaluate(playbackNormalizedTime); } + } + public void OnCrossFade(string animState, float normalizedTransitionDuration, float normalizedTimeOffset, float normalizedTransitionTime ) + { + m_CurrentState = animState; + m_Animator.CrossFade(animState.ToString(), normalizedTransitionDuration, layerIndex, normalizedTimeOffset, normalizedTransitionTime); + } + + public void OnPlay(string animState, float normalizedTime) + { + m_CurrentState = animState; + m_Animator.Play(animState, layerIndex, normalizedTime); } } |