UNPKG

@tsparticles/updater-life

Version:

tsParticles particles life updater

60 lines (59 loc) 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateLife = updateLife; const engine_1 = require("@tsparticles/engine"); const noTime = 0, infiniteValue = -1, noLife = 0, minCanvasSize = 0; function updateLife(particle, delta, canvasSize) { if (!particle.life) { return; } const life = particle.life; let justSpawned = false; if (particle.spawning) { life.delayTime += delta.value; if (life.delayTime >= particle.life.delay) { justSpawned = true; particle.spawning = false; life.delayTime = noTime; life.time = noTime; } else { return; } } if (life.duration === infiniteValue) { return; } if (particle.spawning) { return; } if (justSpawned) { life.time = noTime; } else { life.time += delta.value; } if (life.time < life.duration) { return; } life.time = noTime; if (particle.life.count > noLife) { particle.life.count--; } if (particle.life.count === noLife) { particle.destroy(); return; } const widthRange = (0, engine_1.setRangeValue)(minCanvasSize, canvasSize.width), heightRange = (0, engine_1.setRangeValue)(minCanvasSize, canvasSize.width); particle.position.x = (0, engine_1.randomInRange)(widthRange); particle.position.y = (0, engine_1.randomInRange)(heightRange); particle.spawning = true; life.delayTime = noTime; life.time = noTime; particle.reset(); const lifeOptions = particle.options.life; if (lifeOptions) { life.delay = (0, engine_1.getRangeValue)(lifeOptions.delay.value) * engine_1.millisecondsToSeconds; life.duration = (0, engine_1.getRangeValue)(lifeOptions.duration.value) * engine_1.millisecondsToSeconds; } }