Esempio n. 1
0
        private void DestroyEmitter(ParmeFrbEmitter emitter)
        {
            _frbEmitters.Remove(emitter);
            _frbEmittersWaitingToBeKilled.Remove(emitter);
            _emitterRenderGroup.RemoveEmitter(emitter.Emitter);

            emitter.Emitter.Dispose();
        }
Esempio n. 2
0
        public ParmeFrbEmitter CreateEmitter(IEmitterLogic logic, PositionedObject parent = null)
        {
            var emitter = new ParmeFrbEmitter(_particlePool, logic, _random)
            {
                Parent = parent
            };

            _emitterRenderGroup.AddEmitter(emitter.Emitter);
            _frbEmitters.Add(emitter);

            return(emitter);
        }
Esempio n. 3
0
        public void DestroyEmitter(ParmeFrbEmitter emitter, bool waitForAllParticlesToDie = true)
        {
            if (emitter == null)
            {
                throw new ArgumentNullException(nameof(emitter));
            }

            if (!_emitterToGroupMap.TryGetValue(emitter, out var group))
            {
                // Nothing to do since we don't know anything about the emitter
                return;
            }

            group.RemoveEmitter(emitter, waitForAllParticlesToDie);
            _emitterToGroupMap.Remove(emitter);
        }
Esempio n. 4
0
        public void RemoveEmitter(ParmeFrbEmitter emitter, bool waitTillAllParticlesDie)
        {
            if (emitter == null)
            {
                throw new ArgumentNullException(nameof(emitter));
            }

            if (waitTillAllParticlesDie)
            {
                _frbEmittersWaitingToBeKilled.Add(emitter);
            }
            else
            {
                DestroyEmitter(emitter);
            }
        }