Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 5
0
 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);
     }
 }
Exemplo n.º 6
0
        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();
            }
        }
Exemplo n.º 7
0
 public void Return(CombatEffectData c)
 {
     _inUse.Add(c);
 }