示例#1
0
 public void CreateEmitter()
 {
     _pool = new ParticlePool();
     _preInstantiatedLogic = Utilities.GetInstance(FireTemplate.Emitter);
     _emitter = new BenchmarkEmitter(_preInstantiatedLogic, _pool, new Random())
     {
         IsEmittingNewParticles = true
     };
 }
示例#2
0
        protected Emitter(IEmitterLogic emitterLogic, ParticlePool particlePool, Random random)
        {
            EmitterLogic = emitterLogic ?? throw new ArgumentNullException(nameof(emitterLogic));
            Random       = random;

            var initialCapacity = emitterLogic.GetEstimatedCapacity();

            initialCapacity = Math.Max(1, initialCapacity);
            ParticleBuffer  = new ParticleBuffer(particlePool, initialCapacity);
        }
示例#3
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);
        }
示例#4
0
        public MonoGameEmitter(IEmitterLogic emitterLogic,
                               ParticlePool particlePool,
                               GraphicsDevice graphicsDevice,
                               ITextureFileLoader textureFileLoader,
                               Random random)
            : base(emitterLogic, particlePool, random)
        {
            if (textureFileLoader == null)
            {
                throw new ArgumentNullException(nameof(textureFileLoader));
            }

            _texture = string.IsNullOrWhiteSpace(emitterLogic.TextureFilePath)
                ? GetDefaultWhiteTexture(graphicsDevice)
                : textureFileLoader.LoadTexture2D(emitterLogic.TextureFilePath);

            FullTextureSize = new System.Numerics.Vector2(_texture.Width, _texture.Height);
        }
示例#5
0
        public ParmeFrbEmitter CreateEmitter(IEmitterLogic logic, PositionedObject parent, string groupName = null)
        {
            if (logic == null)
            {
                throw new ArgumentNullException(nameof(logic));
            }

            if (string.IsNullOrWhiteSpace(groupName))
            {
                groupName = DefaultGroupName;
            }

            var group   = GetEmitterGroup(groupName);
            var emitter = group.CreateEmitter(logic, parent);

            _emitterToGroupMap.Add(emitter, group);

            return(emitter);
        }
示例#6
0
 public BenchmarkEmitter(IEmitterLogic emitterLogic, ParticlePool particlePool, Random random)
     : base(emitterLogic, particlePool, random)
 {
 }