public override void Play(Transition _transition) { AnimState src = _transition.source as AnimState; if ( src != null ) { Blend( src, 0.0f, _transition ); } }
/// <summary> 播放本状态的动作 </summary> public virtual void Play(Transition _transition) { DoPlay(_transition, name); }
public void Blend( AnimState _s, float _to, Transition _transition) { if ( _s.curAnimName != null ) { _s.anim.Blend(_s.curAnimName, _to, ((TimerTransition)_transition).duration); } }
public override void Play(Transition _transition) { }
public override void Play(Transition _transition) { switch (playMode) { case PlayMode.Loop: lastAnimIndex = (lastAnimIndex+1) % animList.Length; DoPlay(_transition, animList[lastAnimIndex]); break; case PlayMode.Random: DoPlay(_transition, animList[Random.Range(0, animList.Length)]); break; } }
public override void Play(Transition _transition) { AnimState animState = initState as AnimState; if ( animState != null ) { animState.Play(_transition); curAnimName = animState.curAnimName; } }
protected void DoPlay(Transition _transition, string _animName) { if (string.IsNullOrEmpty(_animName)) { anim.Stop(); curAnimName = null; return; } // NOTE: we will change transition's scale here AnimTransition animTrans = _transition as AnimTransition; AnimationState nextAnimationState = anim[_animName]; if ( nextAnimationState && animTrans != null && nextAnimationState.speed != 0.0f ) { animTrans.scale = 1.0f/nextAnimationState.speed; } // check if rewind if (_animName == curAnimName) { anim.Rewind(_animName); } // if (animTrans == null || animTrans.duration == 0.0f) { anim.Play(_animName); } else { // sync n-time if ( animTrans.syncNormalizedTime ) { AnimState lastState = _transition.source as AnimState; if ( lastState != null ) { nextAnimationState.normalizedTime = lastState.normalizedTime; } anim.Blend(lastState.curAnimName, 0.0f, animTrans.duration); anim.Blend(_animName, 1.0f, animTrans.duration); } else { anim.CrossFade(_animName, animTrans.duration); } } curAnimName = _animName; }