public void CrossFade (CrossFadeParam param) { nextActionParam = param; }
public void Play (CrossFadeParam param) { param.crossFadeDuration = 0; CrossFade (param); }
private void DoCrossFade (CrossFadeParam param) { var playSpeed = forceSpeed ? speed : param.speed; if (0 == playSpeed) { return; } foreach (var a in animators) { if (0 >= a.layerCount) { continue; } var stateName = param.stateName; var stateNameHash = Animator.StringToHash (stateName); if (!a.HasState (0, stateNameHash)) { stateName = defaultStateName; stateNameHash = Animator.StringToHash (stateName); if (!a.HasState (0, stateNameHash)) { continue; } } a.speed = playSpeed; var currentState = a.GetCurrentAnimatorStateInfo (0); var nextState = a.GetNextAnimatorStateInfo (0); if (param.reset || (!currentState.IsValid () || currentState.shortNameHash != stateNameHash) || (nextState.IsValid () && nextState.shortNameHash != stateNameHash)) { if (0 < param.crossFadeDuration) { a.CrossFade (stateName, param.crossFadeDuration, -1, param.normalizedTime); } else { a.Play (stateName, -1, param.normalizedTime); } } } }