public IEnumerator MagitionAttack(DefaultAttackData _defaultData, ExtraAttackData _extraData)
    {
        GameObject huricaneBurnObject = MonoBehaviour.Instantiate(magitionHuricaneBurnPrefab) as GameObject;

        huricaneBurnObject.transform.position = new Vector3(parentsObject.transform.position.x +
                                                            (_defaultData.rightFunctionPointer() == true ? +0.2f : -0.2f),
                                                            parentsObject.transform.position.y,
                                                            parentsObject.transform.position.z);
        MagitionAttackModel argModel = new MagitionAttackModel();

        argModel.appreanceFrame       = 10.0f;
        argModel.floatingTime         = _defaultData.m_fAttackSpeed * 0.6f;
        argModel.referencePosition    = weaponEffect;
        argModel.rightFunctionPointer = _defaultData.rightFunctionPointer;
        argModel.scale               = 1.0f; // 0.1 x move
        argModel.sheetingFrame       = 10.0f;
        argModel.sheetingSprite      = magitionSheetingHit;
        argModel.sheetingSpriteEnd   = magitionSheetingEnd;
        argModel.sheetingSpriteStart = magitionSheetingStart;
        argModel.stretchYMax         = 0.4f;
        argModel.stretchYMin         = 0.1f;
        argModel.targetArray         = new ArrayList();
        argModel.targetArray.Add(GlobalLayerMask.ENEMY_MASK);

        HurricaneBurn firballScript = huricaneBurnObject.GetComponent <HurricaneBurn>();

        firballScript.SetParameter(argModel);
        yield return(StartCoroutine(SwingWeapon(_defaultData.m_fAttackSpeed, _defaultData.m_fWeaponAxisStart, _defaultData.m_fWeaponAxisEnd, _defaultData.rightFunctionPointer(), _defaultData.hitList)));
    }
    public IEnumerator HeroAttack(DefaultAttackData _defaultData, ExtraAttackData _extraData)
    {
        yield return(StartCoroutine(SwingWeapon(_defaultData.m_fAttackSpeed, _defaultData.m_fWeaponAxisStart, _defaultData.m_fWeaponAxisEnd, _defaultData.rightFunctionPointer(), _defaultData.hitList)));

        if (_defaultData.hitList.Count > 0)
        {
            //0 이상이면 무기에 맞는놈이있다.
            //Hit and 넉벡
            Debug.Log("HIT");
        }
    }
    IEnumerator AttackAnimation()
    {
        canAttack = false;
        DefaultAttackData argDefaultData = new DefaultAttackData(
            currentPlayerData.m_fAttackSpeed,
            currentPlayerData.m_fWeaponAxisStart,
            currentPlayerData.m_fWeaponAxisEnd,
            rightFunctionPointer,
            isHiitedList);
        ExtraAttackData argExtraData = new ExtraAttackData(currentBulletData.m_v2BulletSize);

        switch (currentPlayerType)
        {
        case GlobalCharacterInfo.CHAR_TYPE.ALLIGATOR:
            yield return(StartCoroutine(attackController.AlligatoerAttack(
                                            argDefaultData,
                                            argExtraData)));

            break;

        case GlobalCharacterInfo.CHAR_TYPE.MAGITION:
            yield return(StartCoroutine(attackController.MagitionAttack(
                                            argDefaultData,
                                            argExtraData)));

            break;

        case GlobalCharacterInfo.CHAR_TYPE.DRAGON:
            yield return(StartCoroutine(attackController.DragonAttack(
                                            argDefaultData,
                                            argExtraData)));

            break;

        case GlobalCharacterInfo.CHAR_TYPE.HERO:
            yield return(StartCoroutine(attackController.HeroAttack(
                                            argDefaultData,
                                            argExtraData)));

            break;
        }

        canAttack = true;
    }
    public IEnumerator AlligatoerAttack(DefaultAttackData _defaultData, ExtraAttackData _extraData)
    {
        yield return(StartCoroutine(SwingWeapon(_defaultData.m_fAttackSpeed, _defaultData.m_fWeaponAxisStart, _defaultData.m_fWeaponAxisEnd, _defaultData.rightFunctionPointer(), _defaultData.hitList)));

        if (_defaultData.hitList.Count > 0)
        {
            //0 이상이면 무기에 맞는놈이있다.
            //Hit and 넉벡
            Debug.Log("HIT");
        }
        else
        {
            //Only For Test
            //무기에 맞는놈이 없으므로 파이어볼
            GameObject firballObject = MonoBehaviour.Instantiate(alligatorFireBallPrefab) as GameObject;
            firballObject.transform.position = new Vector3(parentsObject.transform.position.x +
                                                           (_defaultData.rightFunctionPointer() == true ? +0.2f : -0.2f),
                                                           parentsObject.transform.position.y,
                                                           parentsObject.transform.position.z);
            AlligatorAttackModel argModel = new AlligatorAttackModel();

            argModel.bulletSpeed      = 0.06f; // 0.1 x move
            argModel.destroySprite    = alligatorEndObject;
            argModel.frame            = 10.0f; // ms
            argModel.endFrameMultiple = 3;     // ms
            argModel.isRight          = _defaultData.rightFunctionPointer();
            argModel.scale            = 1.0f;  // multiple Scale
            argModel.sheetingArea     = 5.0f;
            argModel.sheetingSprite   = alligatorSheetingObject;
            argModel.targetArray      = new ArrayList();
            argModel.targetArray.Add(GlobalLayerMask.ENEMY_MASK);

            FireBallScript firballScript = firballObject.GetComponent <FireBallScript>();

            firballScript.SetParameter(argModel);
        }
    }