I am being forced to hardcode my animation clip lengths into c# or the Animator Controller and it seems completely wrong. My requirements: 1: Have animations ~normalized. For example if I want an animation to play fully over 0.5sec and the clip length is 1.2sec then I need the animation to play at 2.4x speed. Ideally my input is something like Animator.EnterState(Attack) and then Animator.SetFloat(AttackSpeed, 2f). 2: I need the speed of the animations to be variable at runtime. For example I pause the animation if the target gets frozen by calling Animator.SetFloat(AttackSpeed, 0f), then resume it when unfrozen. 3: I need Avatar masks so that you can control right hand, left hand, and movement independently. 4: Network Synced Currently I have all this working, but am hard coding my animation clip length! Does anybody know of a way to accomplish this without hardcoding animation clip lengths? My specific hangup is I cannot access a States Animation Clip length. This is possibly a bug but if I call animatorTemp.Play(StateAttack.hash) and then access the states clip length by calling animatorTemp.GetCurrentAnimatorStateInfo(...).length it returns info for the OLD state, not the NEW StateAttack that I just told it to Play( ). If I wait a few Update( ) frames and call animatorTemp.GetCurrentAnimatorStateInfo(...).length then it gives the correct value. Play( ) seems like it should be instant... but unsure why there is a delay :[ UnityEditorInternal has tools but isn't safe. So seems like what I want to do is simple... enter state and play clip over 0.5sec... but it does not appear to be doable. Am I missing something?! Thanks in advance.