1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.Emitters = void 0;
|
4 | const EmitterInstance_1 = require("./EmitterInstance");
|
5 | const Emitter_1 = require("./Options/Classes/Emitter");
|
6 | const Enums_1 = require("./Enums");
|
7 | const Utils_1 = require("../../Utils");
|
8 | class Emitters {
|
9 | constructor(container) {
|
10 | this.container = container;
|
11 | this.array = [];
|
12 | this.emitters = [];
|
13 | this.interactivityEmitters = [];
|
14 | const overridableContainer = container;
|
15 | overridableContainer.getEmitter = (idxOrName) => idxOrName === undefined || typeof idxOrName === "number"
|
16 | ? this.array[idxOrName || 0]
|
17 | : this.array.find((t) => t.name === idxOrName);
|
18 | overridableContainer.addEmitter = (options, position) => this.addEmitter(options, position);
|
19 | overridableContainer.playEmitter = (idxOrName) => {
|
20 | const emitter = overridableContainer.getEmitter(idxOrName);
|
21 | if (emitter) {
|
22 | emitter.externalPlay();
|
23 | }
|
24 | };
|
25 | overridableContainer.pauseEmitter = (idxOrName) => {
|
26 | const emitter = overridableContainer.getEmitter(idxOrName);
|
27 | if (emitter) {
|
28 | emitter.externalPause();
|
29 | }
|
30 | };
|
31 | }
|
32 | init(options) {
|
33 | var _a, _b;
|
34 | if (!options) {
|
35 | return;
|
36 | }
|
37 | if (options.emitters) {
|
38 | if (options.emitters instanceof Array) {
|
39 | this.emitters = options.emitters.map((s) => {
|
40 | const tmp = new Emitter_1.Emitter();
|
41 | tmp.load(s);
|
42 | return tmp;
|
43 | });
|
44 | }
|
45 | else {
|
46 | if (this.emitters instanceof Array) {
|
47 | this.emitters = new Emitter_1.Emitter();
|
48 | }
|
49 | this.emitters.load(options.emitters);
|
50 | }
|
51 | }
|
52 | const interactivityEmitters = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.emitters;
|
53 | if (interactivityEmitters) {
|
54 | if (interactivityEmitters instanceof Array) {
|
55 | this.interactivityEmitters = interactivityEmitters.map((s) => {
|
56 | const tmp = new Emitter_1.Emitter();
|
57 | tmp.load(s);
|
58 | return tmp;
|
59 | });
|
60 | }
|
61 | else {
|
62 | if (this.interactivityEmitters instanceof Array) {
|
63 | this.interactivityEmitters = new Emitter_1.Emitter();
|
64 | }
|
65 | this.interactivityEmitters.load(interactivityEmitters);
|
66 | }
|
67 | }
|
68 | if (this.emitters instanceof Array) {
|
69 | for (const emitterOptions of this.emitters) {
|
70 | this.addEmitter(emitterOptions);
|
71 | }
|
72 | }
|
73 | else {
|
74 | this.addEmitter(this.emitters);
|
75 | }
|
76 | }
|
77 | play() {
|
78 | for (const emitter of this.array) {
|
79 | emitter.play();
|
80 | }
|
81 | }
|
82 | pause() {
|
83 | for (const emitter of this.array) {
|
84 | emitter.pause();
|
85 | }
|
86 | }
|
87 | stop() {
|
88 | this.array = [];
|
89 | }
|
90 | update(delta) {
|
91 | for (const emitter of this.array) {
|
92 | emitter.update(delta);
|
93 | }
|
94 | }
|
95 | handleClickMode(mode) {
|
96 | const container = this.container;
|
97 | const emitterOptions = this.emitters;
|
98 | const modeEmitters = this.interactivityEmitters;
|
99 | if (mode === Enums_1.EmitterClickMode.emitter) {
|
100 | let emitterModeOptions;
|
101 | if (modeEmitters instanceof Array) {
|
102 | if (modeEmitters.length > 0) {
|
103 | emitterModeOptions = (0, Utils_1.itemFromArray)(modeEmitters);
|
104 | }
|
105 | }
|
106 | else {
|
107 | emitterModeOptions = modeEmitters;
|
108 | }
|
109 | const emittersOptions = emitterModeOptions !== null && emitterModeOptions !== void 0 ? emitterModeOptions : (emitterOptions instanceof Array ? (0, Utils_1.itemFromArray)(emitterOptions) : emitterOptions);
|
110 | const ePosition = container.interactivity.mouse.clickPosition;
|
111 | this.addEmitter((0, Utils_1.deepExtend)({}, emittersOptions), ePosition);
|
112 | }
|
113 | }
|
114 | resize() {
|
115 | for (const emitter of this.array) {
|
116 | emitter.resize();
|
117 | }
|
118 | }
|
119 | addEmitter(options, position) {
|
120 | const emitter = new EmitterInstance_1.EmitterInstance(this, this.container, options, position);
|
121 | this.array.push(emitter);
|
122 | return emitter;
|
123 | }
|
124 | removeEmitter(emitter) {
|
125 | const index = this.array.indexOf(emitter);
|
126 | if (index >= 0) {
|
127 | this.array.splice(index, 1);
|
128 | }
|
129 | }
|
130 | }
|
131 | exports.Emitters = Emitters;
|