public void init(AttachedEffectData effectData, Transform parent, Vector3 position, float yAngle = 0.0f)
    {
        data             = effectData;
        nowCollisionData = null;
        position        += data.pos;
        removeParent     = false;
        _ani             = null;

        type = data.type;

        if (data.type == TYPE_PREFAB)
        {
            gameObject = GameManager.resourceManager.getPrefabFromPool(GameManager.info.effectData[data.id].resource);
            _ani       = gameObject.animation;

            if (collisionData.TryGetValue(data.id, out nowCollisionData) == false)
            {
                BoxCollider collider = gameObject.GetComponentInChildren <BoxCollider>();
                if (collider == null)
                {
                    collider = gameObject.GetComponent <BoxCollider>();
                }

                if (collider != null)
                {
#if UNITY_EDITOR
//					if(BattleSimulator.nowSimulation == false) Debug.Log("충돌박스 없음!!!!");
#endif

                    collider.enabled = false;
                }

                if (GameManager.info.effectData[data.id].hasCollider == false)
                {
                    nowCollisionData = null;
                }
                else
                {
                    nowCollisionData = new CollisionData(GameManager.info.effectData[data.id]);
                    collisionData.Add(data.id, nowCollisionData);
                }
            }

            if (data.option == false)
            {
                removeParent = true;

                GameManager.resourceManager.setPrefabToPoolDelay(gameObject.animation.clip.length, data.id, gameObject);
            }
        }
        else if (data.type == TYPE_EFFECT)
        {
            particleEffect = GameManager.me.effectManager.getParticleEffect(data.id, GameManager.info.effectData[data.id].resource);

            particleEffect.start(position, null, data.attachToParent);

            gameObject = particleEffect.gameObject;

            if (collisionData.TryGetValue(data.id, out nowCollisionData) == false)
            {
                if (particleEffect.boxCollder == null)
                {
                    particleEffect.boxCollder = gameObject.GetComponentInChildren <BoxCollider>();
                    if (particleEffect.boxCollder != null)
                    {
                        particleEffect.boxCollder.enabled = false;
                    }
                }

                if (GameManager.info.effectData[data.id].hasCollider == false)
                {
                    nowCollisionData = null;
                }
                else
                {
                    nowCollisionData = new CollisionData(GameManager.info.effectData[data.id]);
                    collisionData.Add(data.id, nowCollisionData);
                }
            }
        }
        else if (data.type == TYPE_INDY_EFFECT)
        {
            particleEffect = GameManager.me.effectManager.getParticleEffect(data.id, GameManager.info.effectData[data.id].resource);
            gameObject     = particleEffect.gameObject;
            particleEffect.start(position, null, data.attachToParent);
            particleEffect.setTimeLimit(data.timeLimit);

            if (collisionData.TryGetValue(data.id, out nowCollisionData) == false)
            {
                if (particleEffect.boxCollder == null)
                {
                    particleEffect.boxCollder = gameObject.GetComponentInChildren <BoxCollider>();
                    if (particleEffect.boxCollder != null)
                    {
                        particleEffect.boxCollder.enabled = false;
                    }
                }

                if (GameManager.info.effectData[data.id].hasCollider == false)
                {
                    nowCollisionData = null;
                }
                else
                {
                    nowCollisionData = new CollisionData(GameManager.info.effectData[data.id]);
                    collisionData.Add(data.id, nowCollisionData);
                }
            }
        }
//		else if(data.type == TYPE_TK2D_ANI_SPRITE)
//		{
//			sprite = GameManager.me.effectManager.getAnimatedSprite();
//
//			gameObject = sprite.gameObject;
//			transform = sprite.transform;
//
//			gameObject.SetActive(true);
//
//			sprite.Play(sprite.GetClipIdByName(data.id),0.0f);
//
//			sprite.CurrentClip.wrapMode = tk2dSpriteAnimationClip.WrapMode.Loop;
//		}

        transform = gameObject.transform;

        if (data.attachToParent)
        {
            if (removeParent)
            {
                position           = parent.position;
                position          += data.pos;
                transform.position = position;
            }
            else
            {
                transform.parent        = parent;
                position.x              = 0; position.y = 0; position.z = 0;
                position               += data.pos;
                transform.localPosition = position;
            }
        }
        else
        {
            transform.parent   = GameManager.me.mapManager.mapStage;
            position.z         = data.pos.z;
            transform.position = position;
        }

        _q                      = transform.localRotation;
        _v                      = _q.eulerAngles;
        _v.x                    = 0.0f;
        _v.y                    = yAngle;
        _v.z                    = 0.0f;
        _q.eulerAngles          = _v;
        transform.localRotation = _q;
    }
    public void setEffect(string str)
    {
        if (str != null && str != "")
        {
            string[] effects = str.Split('&');

            effectData = new AttachedEffectData[effects.Length];
            int index = 0;

            foreach (string eff in effects)
            {
                AttachedEffectData efd = new AttachedEffectData();

                string[] effData = eff.Split(':');

                switch (effData[0])
                {
                case "P":
                    efd.type = AttachedEffect.TYPE_PREFAB;
                    break;

                case "E":
                    efd.type = AttachedEffect.TYPE_EFFECT;
                    break;

                case "S":
                    efd.type = AttachedEffect.TYPE_TK2D_ANI_SPRITE;
                    break;
                }

                string[] effValue = effData[1].Split('@');

                int len = effValue.Length;

                if (len > 1)
                {
                    efd.parentName = effValue[1];
                }

                effValue = effValue[0].Split(',');

                len = effValue.Length;

                for (int i = 0; i < len; ++i)
                {
                    switch (i)
                    {
                    case 0:
                        efd.id = effValue[i];
                        break;

                    case 1:
                        efd.attachToParent = (effValue[i].Equals("N") == false);
                        break;

                    case 2:
                        efd.pos.x = (float)Convert.ToDouble(effValue[i]);
                        break;

                    case 3:
                        efd.pos.y = (float)Convert.ToDouble(effValue[i]);
                        break;

                    case 4:
                        efd.pos.z = (float)Convert.ToDouble(effValue[i]);
                        break;
                    }
                }

                effectData[index] = efd;
                ++index;
            }
        }
    }