UNPKG

@tsparticles/plugin-emitters

Version:

tsParticles emitters plugin

63 lines (62 loc) 2.22 kB
import { AnimatableColor, deepExtend, executeOnSingleOrMultiple, isNull, loadProperty, setRangeValue, } from "@tsparticles/engine"; import { EmitterLife } from "./EmitterLife.js"; import { EmitterRate } from "./EmitterRate.js"; import { EmitterShape } from "./EmitterShape.js"; import { EmitterSize } from "./EmitterSize.js"; import { EmitterSpawn } from "./EmitterSpawn.js"; export class Emitter { autoPlay = true; direction; domId; fill = true; life = new EmitterLife(); name; particles; position; rate = new EmitterRate(); shape = new EmitterShape(); size; spawn = new EmitterSpawn(); spawnFillColor; spawnStrokeColor; startCount = 0; load(data) { if (isNull(data)) { return; } loadProperty(this, "autoPlay", data.autoPlay); if (data.size !== undefined) { this.size ??= new EmitterSize(); this.size.load(data.size); } loadProperty(this, "direction", data.direction); loadProperty(this, "domId", data.domId); loadProperty(this, "fill", data.fill); this.life.load(data.life); loadProperty(this, "name", data.name); this.particles = executeOnSingleOrMultiple(data.particles, particles => { return deepExtend({}, particles); }); this.rate.load(data.rate); this.shape.load(data.shape); this.spawn.load(data.spawn); if (data.position !== undefined) { this.position = {}; if (data.position.x !== undefined) { this.position.x = setRangeValue(data.position.x); } if (data.position.y !== undefined) { this.position.y = setRangeValue(data.position.y); } } if (data.spawnFillColor !== undefined) { this.spawnFillColor ??= new AnimatableColor(); this.spawnFillColor.load(data.spawnFillColor); } if (data.spawnStrokeColor !== undefined) { this.spawnStrokeColor ??= new AnimatableColor(); this.spawnStrokeColor.load(data.spawnStrokeColor); } loadProperty(this, "startCount", data.startCount); } }