custom-pixi-particles 4.18.1 → 4.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/index.d.ts +15 -0
  2. package/dist/index.js +45 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/lib/Model.d.ts +32 -0
  5. package/dist/lib/Model.js +44 -0
  6. package/dist/lib/Model.js.map +1 -0
  7. package/dist/lib/Particle.d.ts +234 -0
  8. package/dist/lib/Particle.js +201 -0
  9. package/dist/lib/Particle.js.map +1 -0
  10. package/dist/lib/ParticlePool.d.ts +37 -0
  11. package/dist/lib/ParticlePool.js +56 -0
  12. package/dist/lib/ParticlePool.js.map +1 -0
  13. package/dist/lib/behaviour/AngularVelocityBehaviour.d.ts +61 -0
  14. package/dist/lib/behaviour/AngularVelocityBehaviour.js +118 -0
  15. package/dist/lib/behaviour/AngularVelocityBehaviour.js.map +1 -0
  16. package/dist/lib/behaviour/AttractionRepulsionBehaviour.d.ts +42 -0
  17. package/dist/lib/behaviour/AttractionRepulsionBehaviour.js +78 -0
  18. package/dist/lib/behaviour/AttractionRepulsionBehaviour.js.map +1 -0
  19. package/dist/lib/behaviour/Behaviour.d.ts +33 -0
  20. package/dist/lib/behaviour/Behaviour.js +45 -0
  21. package/dist/lib/behaviour/Behaviour.js.map +1 -0
  22. package/dist/lib/behaviour/BehaviourNames.d.ts +22 -0
  23. package/dist/lib/behaviour/BehaviourNames.js +23 -0
  24. package/dist/lib/behaviour/BehaviourNames.js.map +1 -0
  25. package/dist/lib/behaviour/CollisionBehaviour.d.ts +86 -0
  26. package/dist/lib/behaviour/CollisionBehaviour.js +140 -0
  27. package/dist/lib/behaviour/CollisionBehaviour.js.map +1 -0
  28. package/dist/lib/behaviour/ColorBehaviour.d.ts +67 -0
  29. package/dist/lib/behaviour/ColorBehaviour.js +193 -0
  30. package/dist/lib/behaviour/ColorBehaviour.js.map +1 -0
  31. package/dist/lib/behaviour/EmitDirectionBehaviour.d.ts +52 -0
  32. package/dist/lib/behaviour/EmitDirectionBehaviour.js +105 -0
  33. package/dist/lib/behaviour/EmitDirectionBehaviour.js.map +1 -0
  34. package/dist/lib/behaviour/EmitterBehaviours.d.ts +69 -0
  35. package/dist/lib/behaviour/EmitterBehaviours.js +116 -0
  36. package/dist/lib/behaviour/EmitterBehaviours.js.map +1 -0
  37. package/dist/lib/behaviour/ForceFieldsBehaviour.d.ts +53 -0
  38. package/dist/lib/behaviour/ForceFieldsBehaviour.js +80 -0
  39. package/dist/lib/behaviour/ForceFieldsBehaviour.js.map +1 -0
  40. package/dist/lib/behaviour/GroupingBehaviour.d.ts +57 -0
  41. package/dist/lib/behaviour/GroupingBehaviour.js +143 -0
  42. package/dist/lib/behaviour/GroupingBehaviour.js.map +1 -0
  43. package/dist/lib/behaviour/LifeBehaviour.d.ts +47 -0
  44. package/dist/lib/behaviour/LifeBehaviour.js +65 -0
  45. package/dist/lib/behaviour/LifeBehaviour.js.map +1 -0
  46. package/dist/lib/behaviour/LightEffectBehaviour.d.ts +59 -0
  47. package/dist/lib/behaviour/LightEffectBehaviour.js +94 -0
  48. package/dist/lib/behaviour/LightEffectBehaviour.js.map +1 -0
  49. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.d.ts +28 -0
  50. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.js +50 -0
  51. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.js.map +1 -0
  52. package/dist/lib/behaviour/PositionBehaviour.d.ts +164 -0
  53. package/dist/lib/behaviour/PositionBehaviour.js +484 -0
  54. package/dist/lib/behaviour/PositionBehaviour.js.map +1 -0
  55. package/dist/lib/behaviour/RotationBehaviour.d.ts +59 -0
  56. package/dist/lib/behaviour/RotationBehaviour.js +100 -0
  57. package/dist/lib/behaviour/RotationBehaviour.js.map +1 -0
  58. package/dist/lib/behaviour/SizeBehaviour.d.ts +61 -0
  59. package/dist/lib/behaviour/SizeBehaviour.js +156 -0
  60. package/dist/lib/behaviour/SizeBehaviour.js.map +1 -0
  61. package/dist/lib/behaviour/SoundReactiveBehaviour.d.ts +58 -0
  62. package/dist/lib/behaviour/SoundReactiveBehaviour.js +132 -0
  63. package/dist/lib/behaviour/SoundReactiveBehaviour.js.map +1 -0
  64. package/dist/lib/behaviour/SpawnBehaviour.d.ts +89 -0
  65. package/dist/lib/behaviour/SpawnBehaviour.js +705 -0
  66. package/dist/lib/behaviour/SpawnBehaviour.js.map +1 -0
  67. package/dist/lib/behaviour/StretchBehaviour.d.ts +30 -0
  68. package/dist/lib/behaviour/StretchBehaviour.js +59 -0
  69. package/dist/lib/behaviour/StretchBehaviour.js.map +1 -0
  70. package/dist/lib/behaviour/TemperatureBehaviour.d.ts +47 -0
  71. package/dist/lib/behaviour/TemperatureBehaviour.js +64 -0
  72. package/dist/lib/behaviour/TemperatureBehaviour.js.map +1 -0
  73. package/dist/lib/behaviour/TimelineBehaviour.d.ts +73 -0
  74. package/dist/lib/behaviour/TimelineBehaviour.js +100 -0
  75. package/dist/lib/behaviour/TimelineBehaviour.js.map +1 -0
  76. package/dist/lib/behaviour/TurbulenceBehaviour.d.ts +73 -0
  77. package/dist/lib/behaviour/TurbulenceBehaviour.js +133 -0
  78. package/dist/lib/behaviour/TurbulenceBehaviour.js.map +1 -0
  79. package/dist/lib/behaviour/index.d.ts +23 -0
  80. package/dist/lib/behaviour/index.js +24 -0
  81. package/dist/lib/behaviour/index.js.map +1 -0
  82. package/dist/lib/customPixiParticlesSettingsInterface.d.ts +19 -0
  83. package/dist/lib/customPixiParticlesSettingsInterface.js +2 -0
  84. package/dist/lib/customPixiParticlesSettingsInterface.js.map +1 -0
  85. package/dist/lib/emission/AbstractEmission.d.ts +30 -0
  86. package/dist/lib/emission/AbstractEmission.js +39 -0
  87. package/dist/lib/emission/AbstractEmission.js.map +1 -0
  88. package/dist/lib/emission/EmissionTypes.d.ts +6 -0
  89. package/dist/lib/emission/EmissionTypes.js +6 -0
  90. package/dist/lib/emission/EmissionTypes.js.map +1 -0
  91. package/dist/lib/emission/RandomEmission.d.ts +44 -0
  92. package/dist/lib/emission/RandomEmission.js +66 -0
  93. package/dist/lib/emission/RandomEmission.js.map +1 -0
  94. package/dist/lib/emission/StandardEmission.d.ts +62 -0
  95. package/dist/lib/emission/StandardEmission.js +87 -0
  96. package/dist/lib/emission/StandardEmission.js.map +1 -0
  97. package/dist/lib/emission/UniformEmission.d.ts +56 -0
  98. package/dist/lib/emission/UniformEmission.js +83 -0
  99. package/dist/lib/emission/UniformEmission.js.map +1 -0
  100. package/dist/lib/emission/index.d.ts +6 -0
  101. package/dist/lib/emission/index.js +7 -0
  102. package/dist/lib/emission/index.js.map +1 -0
  103. package/dist/lib/emitter/Duration.d.ts +27 -0
  104. package/dist/lib/emitter/Duration.js +41 -0
  105. package/dist/lib/emitter/Duration.js.map +1 -0
  106. package/dist/lib/emitter/Emitter.d.ts +116 -0
  107. package/dist/lib/emitter/Emitter.js +240 -0
  108. package/dist/lib/emitter/Emitter.js.map +1 -0
  109. package/dist/lib/emitter/index.d.ts +3 -0
  110. package/dist/lib/emitter/index.js +4 -0
  111. package/dist/lib/emitter/index.js.map +1 -0
  112. package/dist/lib/index.d.ts +20 -0
  113. package/dist/lib/index.js +21 -0
  114. package/dist/lib/index.js.map +1 -0
  115. package/dist/lib/parser/BehaviourParser.d.ts +21 -0
  116. package/dist/lib/parser/BehaviourParser.js +72 -0
  117. package/dist/lib/parser/BehaviourParser.js.map +1 -0
  118. package/dist/lib/parser/CompatibilityHelper.d.ts +12 -0
  119. package/dist/lib/parser/CompatibilityHelper.js +19 -0
  120. package/dist/lib/parser/CompatibilityHelper.js.map +1 -0
  121. package/dist/lib/parser/EmitControllerParser.d.ts +27 -0
  122. package/dist/lib/parser/EmitControllerParser.js +39 -0
  123. package/dist/lib/parser/EmitControllerParser.js.map +1 -0
  124. package/dist/lib/parser/EmitterParser.d.ts +67 -0
  125. package/dist/lib/parser/EmitterParser.js +168 -0
  126. package/dist/lib/parser/EmitterParser.js.map +1 -0
  127. package/dist/lib/parser/index.d.ts +5 -0
  128. package/dist/lib/parser/index.js +6 -0
  129. package/dist/lib/parser/index.js.map +1 -0
  130. package/dist/lib/pixi/Renderer.d.ts +125 -0
  131. package/dist/lib/pixi/Renderer.js +584 -0
  132. package/dist/lib/pixi/Renderer.js.map +1 -0
  133. package/dist/lib/pixi/TestRenderer.d.ts +125 -0
  134. package/dist/lib/pixi/TestRenderer.js +578 -0
  135. package/dist/lib/pixi/TestRenderer.js.map +1 -0
  136. package/dist/lib/util/Color.d.ts +133 -0
  137. package/dist/lib/util/Color.js +173 -0
  138. package/dist/lib/util/Color.js.map +1 -0
  139. package/dist/lib/util/List.d.ts +49 -0
  140. package/dist/lib/util/List.js +87 -0
  141. package/dist/lib/util/List.js.map +1 -0
  142. package/dist/lib/util/MinMax.d.ts +34 -0
  143. package/dist/lib/util/MinMax.js +46 -0
  144. package/dist/lib/util/MinMax.js.map +1 -0
  145. package/dist/lib/util/Point.d.ts +34 -0
  146. package/dist/lib/util/Point.js +46 -0
  147. package/dist/lib/util/Point.js.map +1 -0
  148. package/dist/lib/util/Random.d.ts +24 -0
  149. package/dist/lib/util/Random.js +30 -0
  150. package/dist/lib/util/Random.js.map +1 -0
  151. package/dist/lib/util/ThereBack.d.ts +14 -0
  152. package/dist/lib/util/ThereBack.js +23 -0
  153. package/dist/lib/util/ThereBack.js.map +1 -0
  154. package/dist/lib/util/index.d.ts +5 -0
  155. package/dist/lib/util/index.js +6 -0
  156. package/dist/lib/util/index.js.map +1 -0
  157. package/dist/lib/util/maths.d.ts +10 -0
  158. package/dist/lib/util/maths.js +13 -0
  159. package/dist/lib/util/maths.js.map +1 -0
  160. package/dist/lib/util/turbulencePool.d.ts +4 -0
  161. package/dist/lib/util/turbulencePool.js +7 -0
  162. package/dist/lib/util/turbulencePool.js.map +1 -0
  163. package/package.json +1 -1
@@ -0,0 +1,584 @@
1
+ // tslint:disable:prefer-for-of
2
+ import engine from '../index';
3
+ import { Emitter } from '../emitter';
4
+ import BehaviourNames from '../behaviour/BehaviourNames';
5
+ import List from '../util/List';
6
+ import ParticlePool from '../ParticlePool';
7
+ import { AnimatedSprite, Loader, ParticleContainer, Sprite, Texture, Ticker } from 'pixi.js-legacy';
8
+ import Model from '../Model';
9
+ /**
10
+ * Renderer is a class used to render particles in the Pixi library.
11
+ *
12
+ * @class Renderer
13
+ */
14
+ export default class Renderer extends ParticleContainer {
15
+ /**
16
+ * Creates an instance of Renderer.
17
+ *
18
+ * @memberof Renderer
19
+ */
20
+ constructor(settings) {
21
+ const { textures, emitterConfig, finishingTextures, animatedSpriteZeroPad, animatedSpriteIndexToStart, vertices, position, rotation, uvs, tint, maxParticles, maxFPS, minFPS, tickerSpeed, } = settings;
22
+ super(maxParticles, {
23
+ vertices,
24
+ position,
25
+ rotation,
26
+ uvs,
27
+ tint,
28
+ });
29
+ this._paused = false;
30
+ this._internalPaused = false;
31
+ this.zeroPad = 2;
32
+ this.indexToStart = 0;
33
+ this.unusedSprites = [];
34
+ this.anchor = { x: 0.5, y: 0.5 };
35
+ this._model = new Model();
36
+ this.onComplete = () => {
37
+ /**/
38
+ };
39
+ this.onCompleteFN = () => {
40
+ /**/
41
+ };
42
+ this.getByName = (name) => {
43
+ for (let i = 0; i < this.config.behaviours.length; ++i) {
44
+ if (this.config.behaviours[i].name === name) {
45
+ return this.config.behaviours[i];
46
+ }
47
+ }
48
+ return null;
49
+ };
50
+ this.config = emitterConfig;
51
+ this.textures = textures;
52
+ this.finishingTextureNames = finishingTextures;
53
+ this.zeroPad = animatedSpriteZeroPad;
54
+ this.indexToStart = animatedSpriteIndexToStart;
55
+ const turbulenceConfigIndex = this.getConfigIndexByName(BehaviourNames.TURBULENCE_BEHAVIOUR, emitterConfig);
56
+ if (turbulenceConfigIndex !== -1) {
57
+ const turbulenceConfig = emitterConfig.behaviours[turbulenceConfigIndex];
58
+ if (turbulenceConfig.enabled === true) {
59
+ this.turbulenceEmitter = new engine.Emitter(this._model);
60
+ this.turbulenceParser = this.turbulenceEmitter.getParser();
61
+ this.turbulenceParser.read(this.buildTurbulenceConfig(turbulenceConfig), this._model);
62
+ this.turbulenceEmitter.on(Emitter.CREATE, this.onCreateTurbulence, this);
63
+ this.turbulenceEmitter.on(Emitter.UPDATE, this.onUpdateTurbulence, this);
64
+ this.turbulenceEmitter.on(Emitter.REMOVE, this.onRemoveTurbulence, this);
65
+ }
66
+ }
67
+ if (typeof emitterConfig.alpha !== 'undefined') {
68
+ this.alpha = emitterConfig.alpha;
69
+ }
70
+ if (typeof emitterConfig.blendMode !== 'undefined') {
71
+ this.blendMode = emitterConfig.blendMode;
72
+ }
73
+ if (typeof emitterConfig.anchor !== 'undefined') {
74
+ this.anchor = emitterConfig.anchor;
75
+ }
76
+ this.emitter = new engine.Emitter(this._model);
77
+ this.emitterParser = this.emitter.getParser();
78
+ this.emitterParser.read(emitterConfig, this._model);
79
+ this.emitter.on(Emitter.CREATE, this.onCreate, this);
80
+ this.emitter.on(Emitter.UPDATE, this.onUpdate, this);
81
+ this.emitter.on(Emitter.FINISHING, this.onFinishing, this);
82
+ this.emitter.on(Emitter.REMOVE, this.onRemove, this);
83
+ this.onCompleteFN = () => this.onComplete();
84
+ this.emitter.on(Emitter.COMPLETE, this.onCompleteFN, this);
85
+ if (this.turbulenceEmitter && this.turbulenceEmitter.list) {
86
+ this.emitter.turbulencePool.list = this.turbulenceEmitter.list;
87
+ }
88
+ this._visibilitychangeBinding = () => this.internalPause(document.hidden);
89
+ document.addEventListener('visibilitychange', this._visibilitychangeBinding);
90
+ const ticker = new Ticker();
91
+ ticker.maxFPS = maxFPS;
92
+ ticker.minFPS = minFPS;
93
+ ticker.speed = tickerSpeed;
94
+ ticker.stop();
95
+ // @ts-ignore
96
+ ticker.add(this._updateTransform, this);
97
+ ticker.start();
98
+ this._ticker = ticker;
99
+ }
100
+ /**
101
+ * Sets the paused state of the object.
102
+ *
103
+ * @param {boolean} [isPaused=true] - The new paused state of the object. Defaults to `true`.
104
+ * @returns {void}
105
+ */
106
+ pause(isPaused = true) {
107
+ this.paused(isPaused);
108
+ }
109
+ /**
110
+ * Resumes the object's operation by setting its paused state to false.
111
+ *
112
+ * @returns {void}
113
+ */
114
+ resume() {
115
+ this.paused(false);
116
+ }
117
+ /**
118
+ * Updates the transform of the ParticleContainer and updates the emitters.
119
+ */
120
+ _updateTransform(deltaTime) {
121
+ var _a;
122
+ if (this._paused)
123
+ return;
124
+ (_a = this.emitter) === null || _a === void 0 ? void 0 : _a.update(deltaTime);
125
+ if (this.turbulenceEmitter) {
126
+ this.turbulenceEmitter.update(deltaTime);
127
+ }
128
+ }
129
+ /**
130
+ *
131
+ * @method updateTexture
132
+ * @description This method updates the texture of the unused sprites and children to a randomly generated texture.
133
+ */
134
+ updateTexture() {
135
+ for (let i = 0; i < this.unusedSprites.length; ++i) {
136
+ this.unusedSprites[i].texture = Texture.from(this.getRandomTexture());
137
+ }
138
+ for (let i = 0; i < this.children.length; ++i) {
139
+ // @ts-ignore
140
+ this.children[i].texture = Texture.from(this.getRandomTexture());
141
+ }
142
+ }
143
+ /**
144
+ * This method is used to start the emitter and turbulenceEmitter if available.
145
+ * @function start
146
+ */
147
+ start() {
148
+ var _a;
149
+ (_a = this.emitter) === null || _a === void 0 ? void 0 : _a.resetAndPlay();
150
+ if (this.turbulenceEmitter) {
151
+ this.turbulenceEmitter.resetAndPlay();
152
+ }
153
+ }
154
+ /**
155
+ * Resets the particle emitters in this class without removing existing particles and plays them.
156
+ * @function play
157
+ */
158
+ play() {
159
+ var _a;
160
+ (_a = this.emitter) === null || _a === void 0 ? void 0 : _a.resetWithoutRemovingAndPlay();
161
+ if (this.turbulenceEmitter) {
162
+ this.turbulenceEmitter.resetWithoutRemovingAndPlay();
163
+ }
164
+ }
165
+ /**
166
+ * Immediately stops emitting particles
167
+ */
168
+ stopImmediately() {
169
+ var _a, _b, _c;
170
+ (_a = this._ticker) === null || _a === void 0 ? void 0 : _a.destroy();
171
+ this._ticker = undefined;
172
+ (_b = this.emitter) === null || _b === void 0 ? void 0 : _b.stop();
173
+ if (this.turbulenceEmitter) {
174
+ this.turbulenceEmitter.stop();
175
+ }
176
+ (_c = this.emitter) === null || _c === void 0 ? void 0 : _c.emit(Emitter.COMPLETE);
177
+ }
178
+ /**
179
+ * Destroy particles
180
+ */
181
+ destroy() {
182
+ this.stopImmediately();
183
+ super.destroy();
184
+ if (this.emitter) {
185
+ this.emitter.destroy();
186
+ this.emitter.off(Emitter.CREATE, this.onCreate, this);
187
+ this.emitter.off(Emitter.UPDATE, this.onUpdate, this);
188
+ this.emitter.off(Emitter.FINISHING, this.onFinishing, this);
189
+ this.emitter.off(Emitter.REMOVE, this.onRemove, this);
190
+ this.emitter.off(Emitter.COMPLETE, this.onCompleteFN, this);
191
+ // @ts-ignore
192
+ this.emitter = undefined;
193
+ }
194
+ // @ts-ignore
195
+ this.turbulenceEmitter = undefined;
196
+ // @ts-ignore
197
+ this.turbulenceParser = undefined;
198
+ // @ts-ignore
199
+ this.unusedSprites = undefined;
200
+ // @ts-ignore
201
+ this._model = undefined;
202
+ this.onComplete = undefined;
203
+ this.onCompleteFN = undefined;
204
+ this.config = undefined;
205
+ // @ts-ignore
206
+ this.textures = undefined;
207
+ // @ts-ignore
208
+ this.finishingTextureNames = undefined;
209
+ // @ts-ignore
210
+ this.emitterParser = undefined;
211
+ // @ts-ignore
212
+ this.textures = undefined;
213
+ document.removeEventListener('visibilitychange', this._visibilitychangeBinding);
214
+ }
215
+ /**
216
+ * Terminates the emitter and any turbulence emitter it is associated with
217
+ */
218
+ stop() {
219
+ var _a;
220
+ (_a = this.emitter) === null || _a === void 0 ? void 0 : _a.stopWithoutKilling();
221
+ if (this.turbulenceEmitter) {
222
+ this.turbulenceEmitter.stop();
223
+ }
224
+ }
225
+ /**
226
+ * Resets the emitters to their initial state
227
+ */
228
+ resetEmitter() {
229
+ var _a;
230
+ (_a = this.emitter) === null || _a === void 0 ? void 0 : _a.reset();
231
+ if (this.turbulenceEmitter) {
232
+ this.turbulenceEmitter.reset();
233
+ }
234
+ }
235
+ /**
236
+ * Sets the textures used by the emitter
237
+ * @param {string[]} textures - Array of strings containing the textures to be used by the emitter
238
+ */
239
+ setTextures(textures) {
240
+ this.textures = textures;
241
+ this.updateTexture();
242
+ }
243
+ /**
244
+ * Updates the configuration of the emitter
245
+ * @param {any} config - Configuration object to be used to update the emitter
246
+ * @param {boolean} resetDuration - should duration be reset
247
+ */
248
+ updateConfig(config, resetDuration = false) {
249
+ var _a;
250
+ (_a = this.emitterParser) === null || _a === void 0 ? void 0 : _a.update(config, this._model, resetDuration);
251
+ if (this.turbulenceEmitter) {
252
+ const turbulenceConfigIndex = this.getConfigIndexByName(BehaviourNames.TURBULENCE_BEHAVIOUR, config);
253
+ if (turbulenceConfigIndex !== -1) {
254
+ const turbulenceConfig = config.behaviours[turbulenceConfigIndex];
255
+ if (turbulenceConfig.enabled === true) {
256
+ this.turbulenceParser.update(this.buildTurbulenceConfig(turbulenceConfig), this._model, resetDuration);
257
+ }
258
+ }
259
+ }
260
+ }
261
+ /**
262
+ * Updates the position of the emitter
263
+ * @param {Object} position - Object containing the x and y coordinates of the new position
264
+ * @param {boolean} resetDuration - should duration be reset
265
+ */
266
+ updatePosition(position, resetDuration = true) {
267
+ var _a;
268
+ const behaviour = this.getByName(BehaviourNames.SPAWN_BEHAVIOUR);
269
+ behaviour.customPoints[0].position.x = position.x;
270
+ behaviour.customPoints[0].position.y = position.y;
271
+ (_a = this.emitterParser) === null || _a === void 0 ? void 0 : _a.update(this.config, this._model, resetDuration);
272
+ }
273
+ /**
274
+ * Clears the sprite pool, the unused sprites list and the turbulence and particle pools.
275
+ */
276
+ clearPool() {
277
+ this.removeChildren();
278
+ this.unusedSprites = [];
279
+ if (this.turbulenceEmitter && this.turbulenceEmitter.list) {
280
+ if (this.emitter) {
281
+ this.emitter.turbulencePool.list.reset();
282
+ this.emitter.turbulencePool.list = new List();
283
+ }
284
+ }
285
+ if (this.emitter) {
286
+ this.emitter.list.reset();
287
+ this.emitter.list = new List();
288
+ }
289
+ ParticlePool.global.reset();
290
+ }
291
+ getOrCreateSprite() {
292
+ var _a, _b, _c;
293
+ if (this.unusedSprites.length > 0) {
294
+ const sprite = this.unusedSprites.pop();
295
+ if (this.finishingTextureNames && this.finishingTextureNames.length) {
296
+ sprite.texture = Texture.from(this.getRandomTexture());
297
+ }
298
+ return sprite;
299
+ }
300
+ if ((_a = this.emitter) === null || _a === void 0 ? void 0 : _a.animatedSprite) {
301
+ const textures = this.createFrameAnimationByName(this.getRandomTexture());
302
+ if (textures.length) {
303
+ const animation = new AnimatedSprite(textures);
304
+ animation.anchor.set(this.anchor.x, this.anchor.y);
305
+ // @ts-ignore
306
+ animation.loop = (_b = this.emitter) === null || _b === void 0 ? void 0 : _b.animatedSprite.loop;
307
+ // @ts-ignore
308
+ animation.animationSpeed = (_c = this.emitter) === null || _c === void 0 ? void 0 : _c.animatedSprite.frameRate;
309
+ return this.addChild(animation);
310
+ }
311
+ }
312
+ const sprite = new Sprite(Texture.from(this.getRandomTexture()));
313
+ sprite.anchor.set(this.anchor.x, this.anchor.y);
314
+ return this.addChild(sprite);
315
+ }
316
+ createFrameAnimationByName(prefix, imageFileExtension = 'png') {
317
+ const zeroPad = this.zeroPad;
318
+ const textures = [];
319
+ let frame = '';
320
+ let indexFrame = this.indexToStart;
321
+ let padding = 0;
322
+ let texture;
323
+ const sheets = [];
324
+ const resources = Loader.shared.resources;
325
+ for (const key in resources) {
326
+ if (resources[key].extension === 'json') {
327
+ // @ts-ignore
328
+ sheets.push(resources[key].spritesheet);
329
+ }
330
+ }
331
+ do {
332
+ frame = indexFrame.toString();
333
+ padding = zeroPad - frame.length;
334
+ if (padding > 0) {
335
+ frame = '0'.repeat(padding) + frame;
336
+ }
337
+ try {
338
+ let found = false;
339
+ for (const sheet of sheets) {
340
+ if (sheet && sheet.textures[`${prefix}${frame}.${imageFileExtension}`]) {
341
+ found = true;
342
+ }
343
+ }
344
+ if (found) {
345
+ texture = Texture.from(`${prefix}${frame}.${imageFileExtension}`);
346
+ textures.push(texture);
347
+ indexFrame += 1;
348
+ }
349
+ else {
350
+ texture = null;
351
+ for (const key in resources) {
352
+ if (key === `${prefix}${frame}.${imageFileExtension}`) {
353
+ texture = Texture.from(`${prefix}${frame}.${imageFileExtension}`);
354
+ textures.push(texture);
355
+ indexFrame += 1;
356
+ }
357
+ }
358
+ }
359
+ }
360
+ catch (e) {
361
+ texture = null;
362
+ }
363
+ } while (texture);
364
+ return textures;
365
+ }
366
+ onCreate(particle) {
367
+ var _a;
368
+ const sprite = this.getOrCreateSprite();
369
+ sprite.visible = true;
370
+ sprite.alpha = 1;
371
+ if (this.blendMode) {
372
+ sprite.blendMode = this.blendMode;
373
+ }
374
+ if (sprite instanceof AnimatedSprite) {
375
+ if ((_a = this.emitter) === null || _a === void 0 ? void 0 : _a.animatedSprite.randomFrameStart) {
376
+ const textures = this.createFrameAnimationByName(this.getRandomTexture());
377
+ sprite.gotoAndPlay(this.getRandomFrameNumber(textures.length));
378
+ }
379
+ else {
380
+ sprite.play();
381
+ }
382
+ }
383
+ particle.sprite = sprite;
384
+ }
385
+ onCreateTurbulence(particle) {
386
+ let sprite;
387
+ if (particle.showVortices) {
388
+ sprite = new Sprite(Texture.from('vortex.png'));
389
+ }
390
+ else {
391
+ sprite = new Sprite();
392
+ }
393
+ sprite.anchor.set(this.anchor.x, this.anchor.y);
394
+ this.addChild(sprite);
395
+ sprite.visible = false;
396
+ sprite.alpha = 0;
397
+ particle.sprite = sprite;
398
+ if (particle.showVortices && sprite) {
399
+ sprite.visible = true;
400
+ sprite.alpha = 1;
401
+ }
402
+ }
403
+ onUpdate(particle) {
404
+ const sprite = particle.sprite;
405
+ sprite.x = particle.x;
406
+ sprite.y = particle.y;
407
+ sprite.scale.x = particle.size.x;
408
+ sprite.scale.y = particle.size.y;
409
+ sprite.tint = particle.color.hex;
410
+ sprite.alpha = particle.color.alpha;
411
+ sprite.rotation = particle.rotation;
412
+ }
413
+ onUpdateTurbulence(particle) {
414
+ const sprite = particle.sprite;
415
+ sprite.x = particle.x;
416
+ sprite.y = particle.y;
417
+ if (particle.showVortices && sprite) {
418
+ sprite.scale.x = particle.size.x;
419
+ sprite.scale.y = particle.size.y;
420
+ sprite.tint = particle.color.hex;
421
+ sprite.alpha = particle.color.alpha;
422
+ sprite.rotation = particle.rotation;
423
+ }
424
+ }
425
+ onFinishing(particle) {
426
+ if (!this.finishingTextureNames || !this.finishingTextureNames.length)
427
+ return;
428
+ const sprite = particle.sprite;
429
+ if (particle.finishingTexture <= this.finishingTextureNames.length - 1) {
430
+ sprite.texture = Texture.from(this.getRandomFinishingTexture());
431
+ particle.finishingTexture++;
432
+ }
433
+ }
434
+ onRemove(particle) {
435
+ const sprite = particle.sprite;
436
+ if (!particle.showVortices && sprite) {
437
+ sprite.visible = false;
438
+ sprite.alpha = 0;
439
+ }
440
+ particle.finishingTexture = 0;
441
+ this.unusedSprites.push(sprite);
442
+ if (sprite instanceof AnimatedSprite) {
443
+ sprite.stop();
444
+ }
445
+ }
446
+ onRemoveTurbulence(particle) {
447
+ const sprite = particle.sprite;
448
+ if (!particle.showVortices && sprite) {
449
+ sprite.visible = false;
450
+ sprite.alpha = 0;
451
+ }
452
+ this.removeChild(sprite);
453
+ delete particle.sprite;
454
+ }
455
+ getRandomTexture() {
456
+ return this.textures[Math.floor(Math.random() * this.textures.length)];
457
+ }
458
+ getRandomFinishingTexture() {
459
+ return this.finishingTextureNames[Math.floor(Math.random() * this.finishingTextureNames.length)];
460
+ }
461
+ getRandomFrameNumber(textures) {
462
+ return Math.floor(Math.random() * textures);
463
+ }
464
+ paused(paused) {
465
+ var _a, _b, _c, _d;
466
+ if (paused === this._paused)
467
+ return;
468
+ this._paused = paused;
469
+ if (paused) {
470
+ (_a = this._ticker) === null || _a === void 0 ? void 0 : _a.stop();
471
+ (_b = this.emitter) === null || _b === void 0 ? void 0 : _b.pause();
472
+ }
473
+ else {
474
+ (_c = this._ticker) === null || _c === void 0 ? void 0 : _c.start();
475
+ (_d = this.emitter) === null || _d === void 0 ? void 0 : _d.resume();
476
+ }
477
+ }
478
+ internalPause(paused) {
479
+ if (this._paused)
480
+ return;
481
+ if (paused === this._internalPaused)
482
+ return;
483
+ this._internalPaused = paused;
484
+ }
485
+ getConfigIndexByName(name, config) {
486
+ let index = -1;
487
+ config.behaviours.forEach((behaviour, i) => {
488
+ if (behaviour.name === name) {
489
+ index = i;
490
+ }
491
+ });
492
+ return index;
493
+ }
494
+ buildTurbulenceConfig(turbulenceConfig) {
495
+ return {
496
+ behaviours: [
497
+ {
498
+ enabled: true,
499
+ priority: 10000,
500
+ maxLifeTime: turbulenceConfig.maxLifeTime || 2,
501
+ timeVariance: turbulenceConfig.maxLifeTimeVariance || 0,
502
+ name: 'LifeBehaviour',
503
+ },
504
+ {
505
+ priority: 100,
506
+ spawnType: 'Ring',
507
+ customPoints: [
508
+ {
509
+ radius: 0,
510
+ position: {
511
+ x: turbulenceConfig.position.x || 0,
512
+ y: turbulenceConfig.position.y || 0,
513
+ },
514
+ positionVariance: {
515
+ x: turbulenceConfig.positionVariance.x || 0,
516
+ y: turbulenceConfig.positionVariance.y || 0,
517
+ },
518
+ },
519
+ ],
520
+ name: 'SpawnBehaviour',
521
+ },
522
+ {
523
+ enabled: true,
524
+ priority: 100,
525
+ velocity: {
526
+ x: turbulenceConfig.velocity.x || 0,
527
+ y: turbulenceConfig.velocity.y || 0,
528
+ },
529
+ velocityVariance: {
530
+ x: turbulenceConfig.velocityVariance.x || 0,
531
+ y: turbulenceConfig.velocityVariance.y || 0,
532
+ },
533
+ acceleration: {
534
+ x: turbulenceConfig.acceleration.x || 0,
535
+ y: turbulenceConfig.acceleration.y || 0,
536
+ },
537
+ accelerationVariance: {
538
+ x: turbulenceConfig.accelerationVariance.x || 0,
539
+ y: turbulenceConfig.accelerationVariance.y || 0,
540
+ },
541
+ name: 'PositionBehaviour',
542
+ },
543
+ {
544
+ enabled: true,
545
+ priority: 0,
546
+ sizeStart: {
547
+ x: turbulenceConfig.sizeStart.x || 1,
548
+ y: turbulenceConfig.sizeStart.y || 1,
549
+ },
550
+ sizeEnd: {
551
+ x: turbulenceConfig.sizeEnd.x || 1,
552
+ y: turbulenceConfig.sizeEnd.y || 1,
553
+ },
554
+ startVariance: turbulenceConfig.startVariance || 0,
555
+ endVariance: turbulenceConfig.endVariance || 0,
556
+ name: 'SizeBehaviour',
557
+ },
558
+ {
559
+ enabled: true,
560
+ priority: 0,
561
+ rotation: 12,
562
+ variance: 0,
563
+ name: 'RotationBehaviour',
564
+ },
565
+ {
566
+ enabled: true,
567
+ priority: 0,
568
+ showVortices: turbulenceConfig.showVortices || false,
569
+ turbulence: true,
570
+ name: 'TurbulenceBehaviour',
571
+ },
572
+ ],
573
+ emitController: {
574
+ _maxParticles: 0,
575
+ _maxLife: 1,
576
+ _emitPerSecond: turbulenceConfig.emitPerSecond || 2,
577
+ _frames: 0,
578
+ name: 'UniformEmission',
579
+ },
580
+ duration: turbulenceConfig.duration || -1,
581
+ };
582
+ }
583
+ }
584
+ //# sourceMappingURL=Renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Renderer.js","sourceRoot":"","sources":["../../../src/lib/pixi/Renderer.ts"],"names":[],"mappings":"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"}