public override bool GetSkillActivateAnimation(int dataId, out float triggerDuration, out float totalDuration)
        {
            AnimatorActionAnimation2D animation2D;
            AnimatorSkillAnimations2D skillAnimations2D;

            if (!CacheSkillAnimations.TryGetValue(dataId, out skillAnimations2D))
            {
                animation2D = defaultSkillActivateAnimation2D;
            }
            else
            {
                animation2D = skillAnimations2D.activateAnimation;
            }
            triggerDuration = 0f;
            totalDuration   = 0f;
            if (animation2D == null)
            {
                return(false);
            }
            AnimationClip clip = animation2D.GetClipByDirection(CurrentDirectionType);

            if (clip == null)
            {
                return(false);
            }
            triggerDuration = clip.length * animation2D.triggerDurationRate;
            totalDuration   = clip.length + animation2D.extraDuration;
            return(true);
        }
        private IEnumerator PlaySkillCastClip_Animator(int dataId, float duration)
        {
            AnimatorCharacterAnimation2D animation2D;
            AnimatorSkillAnimations2D    skillAnimations2D;

            if (!CacheSkillAnimations.TryGetValue(dataId, out skillAnimations2D))
            {
                animation2D = defaultSkillActivateAnimation2D;
            }
            else
            {
                animation2D = skillAnimations2D.castAnimation;
            }

            if (animation2D != null)
            {
                // Cast Skill
                CacheAnimatorController[CLIP_CAST_SKILL_DOWN]       = animation2D.down;
                CacheAnimatorController[CLIP_CAST_SKILL_UP]         = animation2D.up;
                CacheAnimatorController[CLIP_CAST_SKILL_LEFT]       = animation2D.left;
                CacheAnimatorController[CLIP_CAST_SKILL_RIGHT]      = animation2D.right;
                CacheAnimatorController[CLIP_CAST_SKILL_DOWN_LEFT]  = animation2D.downLeft;
                CacheAnimatorController[CLIP_CAST_SKILL_DOWN_RIGHT] = animation2D.downRight;
                CacheAnimatorController[CLIP_CAST_SKILL_UP_LEFT]    = animation2D.upLeft;
                CacheAnimatorController[CLIP_CAST_SKILL_UP_RIGHT]   = animation2D.upRight;
                yield return(0);

                animator.SetBool(ANIM_IS_CASTING_SKILL, true);
                animator.Play(0, 0, 0f);
                yield return(new WaitForSecondsRealtime(duration));

                animator.SetBool(ANIM_IS_CASTING_SKILL, false);
            }
        }
        IEnumerator PlaySkillCastClipRoutine(int dataId, float duration)
        {
            CharacterAnimation2D animation2D;
            SkillAnimations2D    skillAnimations2D;

            if (!CacheSkillAnimations.TryGetValue(dataId, out skillAnimations2D))
            {
                animation2D = defaultSkillActivateAnimation2D;
            }
            else
            {
                animation2D = skillAnimations2D.castAnimation;
            }

            if (animation2D != null)
            {
                AnimationClip2D anim = animation2D.GetClipByDirection(CurrentDirectionType);
                if (anim != null)
                {
                    playingAction = true;
                    Play(anim);
                    yield return(new WaitForSecondsRealtime(duration));

                    Play(idleAnimation2D, CurrentDirectionType);
                    playingAction = false;
                }
            }
        }
 public override SkillActivateAnimationType UseSkillActivateAnimationType(int dataId)
 {
     if (!CacheSkillAnimations.ContainsKey(dataId))
     {
         return(SkillActivateAnimationType.UseActivateAnimation);
     }
     return(CacheSkillAnimations[dataId].activateAnimationType);
 }
        private AnimatorActionAnimation2D GetActionAnimation(AnimActionType animActionType, int dataId)
        {
            AnimatorActionAnimation2D animation2D = null;
            AnimatorSkillAnimations2D skillAnimations2D;

            switch (animActionType)
            {
            case AnimActionType.AttackRightHand:
                if (!CacheRightHandAttackAnimations.TryGetValue(dataId, out animation2D))
                {
                    animation2D = defaultAttackAnimation2D;
                }
                break;

            case AnimActionType.AttackLeftHand:
                if (!CacheLeftHandAttackAnimations.TryGetValue(dataId, out animation2D))
                {
                    animation2D = defaultAttackAnimation2D;
                }
                break;

            case AnimActionType.Skill:
                if (!CacheSkillAnimations.TryGetValue(dataId, out skillAnimations2D))
                {
                    animation2D = defaultSkillActivateAnimation2D;
                }
                else
                {
                    animation2D = skillAnimations2D.activateAnimation;
                }
                break;

            case AnimActionType.ReloadRightHand:
                if (!CacheRightHandReloadAnimations.TryGetValue(dataId, out animation2D))
                {
                    animation2D = defaultReloadAnimation2D;
                }
                break;

            case AnimActionType.ReloadLeftHand:
                if (!CacheLeftHandReloadAnimations.TryGetValue(dataId, out animation2D))
                {
                    animation2D = defaultReloadAnimation2D;
                }
                break;
            }
            return(animation2D);
        }