2023-02-17 11:06:01 +01:00

75 lines
3.1 KiB
JavaScript

(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "tsparticles-engine", "./AbsorberInstance"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Absorbers = void 0;
const tsparticles_engine_1 = require("tsparticles-engine");
const AbsorberInstance_1 = require("./AbsorberInstance");
class Absorbers {
constructor(container) {
this.container = container;
this.array = [];
this.absorbers = [];
this.interactivityAbsorbers = [];
container.getAbsorber = (idxOrName) => idxOrName === undefined || typeof idxOrName === "number"
? this.array[idxOrName || 0]
: this.array.find((t) => t.name === idxOrName);
container.addAbsorber = (options, position) => this.addAbsorber(options, position);
}
addAbsorber(options, position) {
const absorber = new AbsorberInstance_1.AbsorberInstance(this, this.container, options, position);
this.array.push(absorber);
return absorber;
}
draw(context) {
for (const absorber of this.array) {
absorber.draw(context);
}
}
handleClickMode(mode) {
const absorberOptions = this.absorbers, modeAbsorbers = this.interactivityAbsorbers;
if (mode === "absorber") {
const absorbersModeOptions = (0, tsparticles_engine_1.itemFromSingleOrMultiple)(modeAbsorbers), absorbersOptions = absorbersModeOptions !== null && absorbersModeOptions !== void 0 ? absorbersModeOptions : (0, tsparticles_engine_1.itemFromSingleOrMultiple)(absorberOptions), aPosition = this.container.interactivity.mouse.clickPosition;
this.addAbsorber(absorbersOptions, aPosition);
}
}
async init() {
this.absorbers = this.container.actualOptions.absorbers;
this.interactivityAbsorbers = this.container.actualOptions.interactivity.modes.absorbers;
(0, tsparticles_engine_1.executeOnSingleOrMultiple)(this.absorbers, (absorber) => {
this.addAbsorber(absorber);
});
}
particleUpdate(particle) {
for (const absorber of this.array) {
absorber.attract(particle);
if (particle.destroyed) {
break;
}
}
}
removeAbsorber(absorber) {
const index = this.array.indexOf(absorber);
if (index >= 0) {
this.array.splice(index, 1);
}
}
resize() {
for (const absorber of this.array) {
absorber.resize();
}
}
stop() {
this.array = [];
}
}
exports.Absorbers = Absorbers;
});