@tsparticles/plugin-emitters
Version:
tsParticles emitters plugin
33 lines (32 loc) • 1.13 kB
JavaScript
import { executeOnSingleOrMultiple, isArray, } from "@tsparticles/engine";
import { Emitter } from "./Options/Classes/Emitter.js";
export class EmittersPlugin {
id = "emitters";
#instancesManager;
constructor(instancesManager) {
this.#instancesManager = instancesManager;
}
async getPlugin(container) {
const { EmittersPluginInstance } = await import("./EmittersPluginInstance.js");
return new EmittersPluginInstance(this.#instancesManager, container);
}
loadOptions(_container, options, source) {
if (!this.needsPlugin(options) && !this.needsPlugin(source)) {
return;
}
if (source?.emitters) {
options.emitters = executeOnSingleOrMultiple(source.emitters, emitter => {
const tmp = new Emitter();
tmp.load(emitter);
return tmp;
});
}
}
needsPlugin(options) {
if (!options) {
return false;
}
const emitters = options.emitters;
return (isArray(emitters) && !!emitters.length) || emitters !== undefined;
}
}