Optimize particle update

This commit is contained in:
zenoamaro committed 2019-06-30 01:43:45 +02:00
1 parent ce575fd5d9
commit 926e41096b
1 file changed
+7 -5
+7 -5
View File
@@ -283,7 +283,6 @@ function update() {
function createParticles(x, y, p) { function createParticles(x, y, p) {
for (let i = 0; i < PARTICLE_AMOUNT; i++) { for (let i = 0; i < PARTICLE_AMOUNT; i++) {
particles.push({ particles.push({
dead: false,
ox: x, x: x, ox: x, x: x,
oy: y, y: y, oy: y, y: y,
p: p * random(PARTICLE_MIN_POWER_FACTOR, PARTICLE_MAX_POWER_FACTOR), p: p * random(PARTICLE_MIN_POWER_FACTOR, PARTICLE_MAX_POWER_FACTOR),
@@ -296,13 +295,17 @@ function createParticles(x, y, p) {
} }
function updateParticles() { function updateParticles() {
for (let particle of particles) { for (let i=particles.length-1; i>=0; i--) {
const particle = particles[i];
if ( if (
particle.y > H || particle.y > H ||
particle.t > PARTICLE_MIN_LIFETIME && isTerrain(terrain, particle.x, particle.y) particle.t > PARTICLE_MIN_LIFETIME && isTerrain(terrain, particle.x, particle.y)
) { ) {
particle.dead = true; particles.splice(i, 1);
continue;
} }
const {ox, oy, t, a, p} = particle; const {ox, oy, t, a, p} = particle;
const [tx, ty] = parable( const [tx, ty] = parable(
t / PARTICLE_TIME_FACTOR, t / PARTICLE_TIME_FACTOR,
@@ -310,12 +313,11 @@ function updateParticles() {
p / PARTICLE_POWER_REDUCTION_FACTOR, p / PARTICLE_POWER_REDUCTION_FACTOR,
wind / PARTICLE_WIND_REDUCTION_FACTOR, wind / PARTICLE_WIND_REDUCTION_FACTOR,
); );
particle.t++; particle.t++;
particle.x = Math.round(tx); particle.x = Math.round(tx);
particle.y = Math.round(ty); particle.y = Math.round(ty);
} }
particles = particles.filter(x => !x.dead);
} }
function draw() { function draw() {