public static EmitterPool CreateEmitterPool(ParticleSystem emitter, EmitterReturnedToPool emitterReturnedToPool) { EmitterPool result = null; if (emitter != null) { GameObject gameObject = emitter.gameObject; while (gameObject.transform.parent != null) { gameObject = gameObject.transform.parent.gameObject; } ParticleSystem[] allEmitters = MultipleEmittersPool.GetAllEmitters(gameObject); if (allEmitters.Length > 1) { result = new MultipleEmittersPool(gameObject, emitterReturnedToPool); } else { result = new SingleEmitterPool(emitter, emitterReturnedToPool); } } return(result); }
public MultipleEmittersPool(GameObject emitterRootNode, EmitterReturnedToPool emitterReturnedToPool) : base(emitterReturnedToPool) { this.emitterRootProto = emitterRootNode; this.emitterRootPool = new GameObjectPool(new GameObjectPool.CreatePoolObjectDelegate(this.CreateEmitterRootPoolObject), new GameObjectPool.DestroyPoolObjectDelegate(this.DestroyEmitterRootPoolObject), new GameObjectPool.ActivatePoolObjectDelegate(this.ActivateEmitterRootPoolObject), new GameObjectPool.DeactivatePoolObjectDelegate(this.DeactivateEmitterRootPoolObject)); }
public EmitterPool(EmitterReturnedToPool emitterReturnedToPool) { this.emitterReturnedToPool = emitterReturnedToPool; }
public SingleEmitterPool(ParticleSystem emitter, EmitterReturnedToPool emitterReturnedToPool) : base(emitterReturnedToPool) { this.emitterProto = emitter; this.emitterPool = new ObjectPool <ParticleSystem>(new ObjectPool <ParticleSystem> .CreatePoolObjectDelegate(this.CreateEmitterPoolObject), new ObjectPool <ParticleSystem> .DestroyPoolObjectDelegate(this.DestroyEmitterPoolObject), new ObjectPool <ParticleSystem> .ActivatePoolObjectDelegate(this.ActivateEmitterPoolObject), new ObjectPool <ParticleSystem> .DeactivatePoolObjectDelegate(this.DeactivateEmitterPoolObject)); }