public void UpdateEffect() { _finished.Clear(); for (int i = _inUse.Count - 1; i >= 0; i--) { CombatEffectData c = _inUse[i]; bool allEmittersFinished = true; for (int ii = 0; ii < c.emitters.Length; ii++) { if (c.emitters[ii].IsAlive()) { allEmittersFinished = false; break; } } if (allEmittersFinished) { _finished.Add(i); } } foreach (var idx in _finished) { CombatEffectData c = _inUse[idx]; c.go.transform.parent = null; c.go.SetActive(false); _cache.Enqueue(c); _inUse.RemoveAt(idx); } }
public void ReturnRolllEffect(CombatEffectData c) { for (int i = 0; i < c.emitters.Length; i++) { c.emitters[i].Stop(); } c.go.transform.parent = null; Roll.Return(c); }
public CombatEffectData PlayRollEffect(Transform parent) { CombatEffectData c = Roll.Get(); c.go.transform.parent = parent; c.go.transform.localPosition = new Vector3(0, 0, 0); c.go.transform.forward = -parent.forward; for (int i = 0; i < c.emitters.Length; i++) { c.emitters[i].Play(); } return(c); }
public CombatEffectData PlayWhirlEffect(Transform parent) { CombatEffectData c = Whirl.Get(); c.go.transform.parent = parent; c.go.transform.position = parent.position + new Vector3(0, 1.6f, 0); c.go.transform.forward = parent.forward; for (int i = 0; i < c.emitters.Length; i++) { c.emitters[i].Play(); } return(c); }
public void Init(int count) { if (prefab == null) { return; } for (int i = 0; i < count; i++) { CombatEffectData c = new CombatEffectData(); c.go = GameObject.Instantiate(prefab) as GameObject; c.emitters = c.go.GetComponentsInChildren <ParticleSystem>(); //c.tran = c.go.transform; _cache.Enqueue(c); c.go.SetActive(false); } }
public void Play(Vector3 pos, Vector3 dir) { if (_cache.Count == 0) { Init(2); } CombatEffectData c = _cache.Dequeue(); _inUse.Add(c); c.go.SetActive(true); c.go.transform.position = pos; c.go.transform.rotation.SetLookRotation(dir); for (int i = 0; i < c.emitters.Length; i++) { c.emitters[i].Play(); } }
public void Return(CombatEffectData c) { _inUse.Add(c); }