75 lines
3.1 KiB
JavaScript
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;
|
|
});
|