Beispiel #1
0
        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;
            }
            }
        }
Beispiel #2
0
        private IEnumerator RunClip(BattleAnimationClip clip, bool dummy = false)
        {
            Pause();
            yield return(Display.PlayAndWait(clip, Display.Variables));

            Unpause();
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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;
            }
            }
        }