예제 #1
0
        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);
        }
예제 #2
0
 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));
 }
예제 #3
0
 public EmitterPool(EmitterReturnedToPool emitterReturnedToPool)
 {
     this.emitterReturnedToPool = emitterReturnedToPool;
 }
예제 #4
0
 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));
 }