private void DestroyEmitter(ParmeFrbEmitter emitter) { _frbEmitters.Remove(emitter); _frbEmittersWaitingToBeKilled.Remove(emitter); _emitterRenderGroup.RemoveEmitter(emitter.Emitter); emitter.Emitter.Dispose(); }
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); }
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); }
public void RemoveEmitter(ParmeFrbEmitter emitter, bool waitTillAllParticlesDie) { if (emitter == null) { throw new ArgumentNullException(nameof(emitter)); } if (waitTillAllParticlesDie) { _frbEmittersWaitingToBeKilled.Add(emitter); } else { DestroyEmitter(emitter); } }