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; } } }