/// <summary>
 ///
 /// </summary>
 /// <param name="currentAttack"></param>
 /// <returns></returns>
 protected virtual bool TrySpecialCancel(AttackDefinition currentAttack)
 {
     for (int i = 0; i < currentAttack.specialCancelFrames.Count; i++)
     {
         if (StateManager.CurrentStateFrame >= currentAttack.specialCancelFrames[i].x &&
             StateManager.CurrentStateFrame <= currentAttack.specialCancelFrames[i].y)
         {
             MovesetAttackNode man = ((EntityCombatManager)CombatManager).TrySpecial();
             if (man != null)
             {
                 CombatManager.SetAttack(man);
                 StateManager.ChangeState((int)EntityStates.ATTACK);
                 return(true);
             }
         }
     }
     return(false);
 }
        public virtual MovesetAttackNode TrySpecial()
        {
            switch (manager.IsGrounded)
            {
            case true:
                MovesetAttackNode groundCommandNormal = (MovesetAttackNode)CheckAttackNodes(ref moveset.groundSpecialStartNodes);
                if (groundCommandNormal != null)
                {
                    return(groundCommandNormal);
                }
                break;

            case false:
                MovesetAttackNode airCommandNormal = (MovesetAttackNode)CheckAttackNodes(ref moveset.airSpecialStartNodes);
                if (airCommandNormal != null)
                {
                    return(airCommandNormal);
                }
                break;
            }
            return(null);
        }