@tsparticles/plugin-emitters
Version:
tsParticles emitters plugin
63 lines (62 loc) • 2.22 kB
JavaScript
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);
}
}