UNPKG

4.76 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.Emitters = void 0;
4const EmitterInstance_1 = require("./EmitterInstance");
5const Emitter_1 = require("./Options/Classes/Emitter");
6const Enums_1 = require("./Enums");
7const Utils_1 = require("../../Utils");
8class 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}
131exports.Emitters = Emitters;