public void WhenNotEnoughHeadroom_IncreasesActiveParticlesCountByRemainingParticles()
            {
                var subject = new Emitter(15, TimeSpan.FromSeconds(1), Profile.Point())
                {
                    Parameters = new ReleaseParameters
                    {
                        Quantity = 10
                    }
                };

                subject.Trigger(new Coordinate(0f, 0f));
                subject.ActiveParticles.Should().Be(10);
                subject.Trigger(new Coordinate(0f, 0f));
                subject.ActiveParticles.Should().Be(15);
            }
            public void WhenThereAreParticlesToExpire_DoesNotPassExpiredParticlesToModifiers()
            {
                var subject = new Emitter(100, TimeSpan.FromSeconds(1), Profile.Point())
                {
                    Parameters = new ReleaseParameters
                    {
                        Quantity = 1
                    }
                };

                subject.Modifiers.Add(new AssertionModifier((particle, i) => particle.Age[i] <= 1f));

                subject.Trigger(new Coordinate(0f, 0f));
                subject.Update(0.5f);
                subject.Trigger(new Coordinate(0f, 0f));
                subject.Update(0.5f);
                subject.Trigger(new Coordinate(0f, 0f));
                subject.Update(0.5f);
            }
            public void WhenThereAreParticlesToExpire_DecreasesActiveParticleCount()
            {
                var subject = new Emitter(100, TimeSpan.FromSeconds(1), Profile.Point())
                {
                    Parameters = new ReleaseParameters
                    {
                        Quantity = 1
                    }
                };

                subject.Trigger(new Coordinate(0f, 0f));
                subject.ActiveParticles.Should().Be(1);

                subject.Update(2f);
                subject.ActiveParticles.Should().Be(0);
            }