Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///-----------------------------------------------------------------
- /// Author : Sebastien RAYMONDAUD
- /// Date : 01/12/2019 14:24
- ///-----------------------------------------------------------------
- using Convoy.Interfaces;
- using Fr.RaymondaudSebastien.PoolingObject;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- namespace Convoy.Juiciness
- {
- [System.Serializable]
- public class ParticlesListener
- {
- [RequireInterface(typeof(IMultipleParticleEmitter))] [SerializeField] protected Object m_particleEmitter = null;
- protected IMultipleParticleEmitter _particleEmitter = null;
- [SerializeField] private PoolParticle m_poolParticle = null;
- private List<Particle> particuleList = new List<Particle>();
- private Transform parent = null;
- private MultipleParticleTrigger manager = null;
- private int id = 0;
- public void SetInfo(int id, MultipleParticleTrigger manager)
- {
- this.id = id;
- this.manager = manager;
- }
- public void Start(Transform transform)
- {
- parent = transform;
- _particleEmitter = m_particleEmitter as IMultipleParticleEmitter;
- _particleEmitter.OnPlayParticle += Emitter_PlayParticle;
- }
- private void Emitter_PlayParticle(int idParticle, bool destroy, Vector3 position)
- {
- if (id != idParticle)
- return;
- particuleList.Add(new Particle(m_poolParticle.TypePool, parent, destroy, position, RemoveParticleInList));
- }
- protected void RemoveParticleInList(Particle p, bool destroy)
- {
- particuleList.Remove(p);
- //if (destroy)
- //manager.Remove(this);
- }
- public void ManualUpdate()
- {
- for (int i = particuleList.Count - 1; i >= 0; i--)
- {
- particuleList[i].ManualUpdate();
- }
- }
- public void Destroy()
- {
- if (_particleEmitter != null)
- _particleEmitter.OnPlayParticle -= Emitter_PlayParticle;
- }
- }
- public class MultipleParticleTrigger : MonoBehaviour
- {
- [SerializeField] private List<ParticlesListener> m_listParticle = new List<ParticlesListener>();
- private void Start()
- {
- for (int i = m_listParticle.Count -1; i >= 0; i--)
- {
- m_listParticle[i].SetInfo(i, this);
- m_listParticle[i].Start(transform);
- }
- }
- private void Update()
- {
- for (int i = m_listParticle.Count - 1; i >= 0; i--)
- {
- m_listParticle[i].ManualUpdate();
- }
- }
- public void Remove(ParticlesListener particle)
- {
- m_listParticle.Remove(particle);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement