public void Play(BattleAnimationClip animation, IVariableStore variables) { switch (animation.AnimationTarget) { case CreatureDisplayTarget.Battler: { var clip = GetAnimation(animation, variables); if (clip) { BattlerPlayer.PlayAnimation(clip); } else { Debug.LogWarningFormat(this, _missingAnimationWarning, animation.Animation, animation.AnimationSource); } break; } case CreatureDisplayTarget.Creature: { CreatureAnimator.SetTrigger(animation.Parameter); break; } } }
private IEnumerator RunClip(BattleAnimationClip clip, bool dummy = false) { Pause(); yield return(Display.PlayAndWait(clip, Display.Variables)); Unpause(); }
private AnimationClip GetAnimation(BattleAnimationClip animation, IVariableStore variables) { AnimationClip clip = null; switch (animation.AnimationSource) { case BattleAnimationSource.Display: Animations.TryGetValue(animation.Animation, out clip); break; case BattleAnimationSource.Variables: variables.GetVariable(animation.Animation).TryGetObject(out clip); break; } return(clip); }
public IEnumerator PlayAndWait(BattleAnimationClip animation, IVariableStore variables) { switch (animation.AnimationTarget) { case CreatureDisplayTarget.Battler: { var clip = GetAnimation(animation, variables); if (clip) { yield return(BattlerPlayer.PlayAnimationAndWait(clip)); } else { Debug.LogWarningFormat(this, _missingAnimationWarning, animation.Animation, animation.AnimationSource); } break; } case CreatureDisplayTarget.Creature: { var state = CreatureAnimator.GetCurrentAnimatorStateInfo(0).shortNameHash; var idleState = state; CreatureAnimator.SetTrigger(animation.Parameter); // wait until the animation enters the new state... while (state == idleState) { yield return(null); state = CreatureAnimator.GetCurrentAnimatorStateInfo(0).shortNameHash; } // then wait until the animation returns back to the beginning state while (state != idleState) { yield return(null); state = CreatureAnimator.GetCurrentAnimatorStateInfo(0).shortNameHash; } break; } } }