76 lines
3.2 KiB
JavaScript
76 lines
3.2 KiB
JavaScript
"use strict";
|
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
});
|
|
};
|
|
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);
|
|
}
|
|
}
|
|
init() {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
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;
|