custom-pixi-particles 4.0.24 → 4.1.0

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 (36) hide show
  1. package/dist/index.js +4 -1
  2. package/dist/index.js.map +1 -1
  3. package/dist/lib/behaviour/AngularVelocityBehaviour.js +8 -14
  4. package/dist/lib/behaviour/AngularVelocityBehaviour.js.map +1 -1
  5. package/dist/lib/behaviour/ColorBehaviour.d.ts +4 -0
  6. package/dist/lib/behaviour/ColorBehaviour.js +14 -7
  7. package/dist/lib/behaviour/ColorBehaviour.js.map +1 -1
  8. package/dist/lib/behaviour/EmitDirectionBehaviour.js +2 -3
  9. package/dist/lib/behaviour/EmitDirectionBehaviour.js.map +1 -1
  10. package/dist/lib/behaviour/EmitterBehaviours.d.ts +6 -0
  11. package/dist/lib/behaviour/EmitterBehaviours.js +8 -0
  12. package/dist/lib/behaviour/EmitterBehaviours.js.map +1 -1
  13. package/dist/lib/behaviour/LifeBehaviour.js +5 -6
  14. package/dist/lib/behaviour/LifeBehaviour.js.map +1 -1
  15. package/dist/lib/behaviour/PositionBehaviour.js +23 -27
  16. package/dist/lib/behaviour/PositionBehaviour.js.map +1 -1
  17. package/dist/lib/behaviour/SizeBehaviour.js +13 -24
  18. package/dist/lib/behaviour/SizeBehaviour.js.map +1 -1
  19. package/dist/lib/customPixiParticlesSettingsInterface.d.ts +3 -0
  20. package/dist/lib/emitter/Emitter.d.ts +0 -1
  21. package/dist/lib/emitter/Emitter.js +0 -2
  22. package/dist/lib/emitter/Emitter.js.map +1 -1
  23. package/dist/lib/parser/EmitterParser.js +12 -20
  24. package/dist/lib/parser/EmitterParser.js.map +1 -1
  25. package/dist/lib/pixi/Renderer.d.ts +2 -5
  26. package/dist/lib/pixi/Renderer.js +19 -26
  27. package/dist/lib/pixi/Renderer.js.map +1 -1
  28. package/dist/lib/util/Color.js +7 -6
  29. package/dist/lib/util/Color.js.map +1 -1
  30. package/dist/lib/util/maths.d.ts +0 -14
  31. package/dist/lib/util/maths.js +0 -19
  32. package/dist/lib/util/maths.js.map +1 -1
  33. package/package.json +3 -3
  34. package/dist/lib/pixi/TestRenderer.d.ts +0 -58
  35. package/dist/lib/pixi/TestRenderer.js +0 -442
  36. package/dist/lib/pixi/TestRenderer.js.map +0 -1
@@ -1,442 +0,0 @@
1
- // tslint:disable:prefer-for-of
2
- import engine from '../index';
3
- import { Emitter } from '../emitter';
4
- import turbulencePool from '../util/turbulencePool';
5
- import BehaviourNames from '../behaviour/BehaviourNames';
6
- import List from '../util/List';
7
- import ParticlePool from '../ParticlePool';
8
- import { AnimatedSprite, Loader, Container, Sprite, Texture } from 'pixi.js-legacy';
9
- import Model from '../Model';
10
- export default class TestRenderer extends Container {
11
- constructor(settings) {
12
- super();
13
- this.onComplete = () => { };
14
- this._paused = false;
15
- this._internalPaused = false;
16
- this.currentTime = 0;
17
- this.lastTime = 0;
18
- this.zeroPad = 2;
19
- this.indexToStart = 0;
20
- this.pausedTime = 0;
21
- this.unusedSprites = [];
22
- this.anchor = { x: 0.5, y: 0.5 };
23
- this._model = new Model();
24
- this.getByName = (name) => {
25
- for (let i = 0; i < this.config.behaviours.length; ++i) {
26
- if (this.config.behaviours[i].name === name) {
27
- return this.config.behaviours[i];
28
- }
29
- }
30
- return null;
31
- };
32
- const { textures, emitterConfig, finishingTextures, animatedSpriteZeroPad, animatedSpriteIndexToStart } = settings;
33
- this.config = emitterConfig;
34
- this.textures = textures;
35
- this.finishingTextureNames = finishingTextures;
36
- this.zeroPad = animatedSpriteZeroPad;
37
- this.indexToStart = animatedSpriteIndexToStart;
38
- const turbulenceConfigIndex = this.getConfigIndexByName(BehaviourNames.TURBULENCE_BEHAVIOUR, emitterConfig);
39
- if (turbulenceConfigIndex !== -1) {
40
- const turbulenceConfig = emitterConfig.behaviours[turbulenceConfigIndex];
41
- if (turbulenceConfig.enabled === true) {
42
- this.turbulenceEmitter = new engine.Emitter(this._model);
43
- this.turbulenceParser = this.turbulenceEmitter.getParser();
44
- this.turbulenceParser.read(this.buildTurbulenceConfig(turbulenceConfig), this._model);
45
- this.turbulenceEmitter.on(Emitter.CREATE, this.onCreateTurbulence, this);
46
- this.turbulenceEmitter.on(Emitter.UPDATE, this.onUpdateTurbulence, this);
47
- this.turbulenceEmitter.on(Emitter.REMOVE, this.onRemoveTurbulence, this);
48
- }
49
- }
50
- if (typeof emitterConfig.alpha !== 'undefined') {
51
- this.alpha = emitterConfig.alpha;
52
- }
53
- if (typeof emitterConfig.blendMode !== 'undefined') {
54
- this.blendMode = emitterConfig.blendMode;
55
- }
56
- if (typeof emitterConfig.anchor !== 'undefined') {
57
- this.anchor = emitterConfig.anchor;
58
- }
59
- this.emitter = new engine.Emitter(this._model);
60
- this.emitterParser = this.emitter.getParser();
61
- this.emitterParser.read(emitterConfig, this._model);
62
- this.emitter.on(Emitter.CREATE, this.onCreate, this);
63
- this.emitter.on(Emitter.UPDATE, this.onUpdate, this);
64
- this.emitter.on(Emitter.FINISHING, this.onFinishing, this);
65
- this.emitter.on(Emitter.REMOVE, this.onRemove, this);
66
- this.emitter.on(Emitter.PLAY, this.onPlay, this);
67
- this.emitter.on(Emitter.COMPLETE, () => {
68
- this.onComplete();
69
- });
70
- if (this.turbulenceEmitter && this.turbulenceEmitter.list) {
71
- turbulencePool.list = this.turbulenceEmitter.list;
72
- }
73
- document.addEventListener('visibilitychange', () => this.internalPause(document.hidden));
74
- }
75
- pause(isPaused) {
76
- this.paused(isPaused);
77
- }
78
- updateTransform() {
79
- if (this._paused)
80
- return;
81
- this.currentTime = performance.now();
82
- if (this.lastTime === 0) {
83
- this.lastTime = this.currentTime;
84
- }
85
- this.emitter.update((this.currentTime - this.lastTime) / 1000);
86
- if (this.turbulenceEmitter) {
87
- this.turbulenceEmitter.update((this.currentTime - this.lastTime) / 1000);
88
- }
89
- Container.prototype.updateTransform.call(this);
90
- this.lastTime = this.currentTime;
91
- }
92
- updateTexture() {
93
- for (let i = 0; i < this.unusedSprites.length; ++i) {
94
- this.unusedSprites[i].texture = Texture.from(this.getRandomTexture());
95
- }
96
- for (let i = 0; i < this.children.length; ++i) {
97
- // @ts-ignore
98
- this.children[i].texture = Texture.from(this.getRandomTexture());
99
- }
100
- }
101
- start() {
102
- this.emitter.resetAndPlay();
103
- if (this.turbulenceEmitter) {
104
- this.turbulenceEmitter.resetAndPlay();
105
- }
106
- }
107
- play() {
108
- this.emitter.resetWithoutRemovingAndPlay();
109
- if (this.turbulenceEmitter) {
110
- this.turbulenceEmitter.resetWithoutRemovingAndPlay();
111
- }
112
- }
113
- stopImmediately() {
114
- this.emitter.stop();
115
- if (this.turbulenceEmitter) {
116
- this.turbulenceEmitter.stop();
117
- }
118
- this.emitter.emit(Emitter.COMPLETE);
119
- }
120
- stop() {
121
- this.emitter.stopWithoutKilling();
122
- if (this.turbulenceEmitter) {
123
- this.turbulenceEmitter.stop();
124
- }
125
- }
126
- resetEmitter() {
127
- this.emitter.reset();
128
- if (this.turbulenceEmitter) {
129
- this.turbulenceEmitter.reset();
130
- }
131
- }
132
- setTextures(textures) {
133
- this.textures = textures;
134
- this.updateTexture();
135
- }
136
- updateConfig(config) {
137
- this.emitterParser.update(config, this._model);
138
- if (this.turbulenceEmitter) {
139
- const turbulenceConfigIndex = this.getConfigIndexByName(BehaviourNames.TURBULENCE_BEHAVIOUR, config);
140
- if (turbulenceConfigIndex !== -1) {
141
- const turbulenceConfig = config.behaviours[turbulenceConfigIndex];
142
- if (turbulenceConfig.enabled === true) {
143
- this.turbulenceParser.update(this.buildTurbulenceConfig(turbulenceConfig), this._model);
144
- }
145
- }
146
- }
147
- }
148
- updatePosition(position) {
149
- const positionBehaviour = this.getByName(BehaviourNames.POSITION_BEHAVIOUR);
150
- positionBehaviour.position.x = position.x;
151
- positionBehaviour.position.y = position.y;
152
- this.emitterParser.update(this.config, this._model);
153
- }
154
- clearPool() {
155
- this.removeChildren();
156
- this.unusedSprites = [];
157
- if (this.turbulenceEmitter && this.turbulenceEmitter.list) {
158
- turbulencePool.list.reset();
159
- turbulencePool.list = new List();
160
- }
161
- this.emitter.list.reset();
162
- this.emitter.list = new List();
163
- ParticlePool.global.reset();
164
- }
165
- getOrCreateSprite() {
166
- if (this.unusedSprites.length > 0) {
167
- const sprite = this.unusedSprites.pop();
168
- if (this.finishingTextureNames && this.finishingTextureNames.length) {
169
- sprite.texture = Texture.from(this.getRandomTexture());
170
- }
171
- return sprite;
172
- }
173
- if (this.emitter.animatedSprite) {
174
- const textures = this.createFrameAnimationByName(this.getRandomTexture());
175
- if (textures.length) {
176
- const animation = new AnimatedSprite(textures);
177
- animation.anchor.set(this.anchor.x, this.anchor.y);
178
- animation.loop = this.emitter.animatedSprite.loop;
179
- if (this.emitter.animatedSprite.randomFrameStart) {
180
- animation.gotoAndPlay(this.getRandomFrameNumber(textures.length));
181
- }
182
- else {
183
- animation.play();
184
- }
185
- animation.animationSpeed = this.emitter.animatedSprite.frameRate;
186
- return this.addChild(animation);
187
- }
188
- }
189
- const sprite = new Sprite(Texture.from(this.getRandomTexture()));
190
- sprite.anchor.set(this.anchor.x, this.anchor.y);
191
- return this.addChild(sprite);
192
- }
193
- createFrameAnimationByName(prefix, imageFileExtension = 'png') {
194
- const zeroPad = this.zeroPad;
195
- const textures = [];
196
- let frame = '';
197
- let indexFrame = this.indexToStart;
198
- let padding = 0;
199
- let texture;
200
- const sheets = [];
201
- const resources = Loader.shared.resources;
202
- for (const key in resources) {
203
- if (resources[key].extension === 'json') {
204
- // @ts-ignore
205
- sheets.push(resources[key].spritesheet);
206
- }
207
- }
208
- do {
209
- frame = indexFrame.toString();
210
- padding = zeroPad - frame.length;
211
- if (padding > 0) {
212
- frame = '0'.repeat(padding) + frame;
213
- }
214
- try {
215
- let found = false;
216
- for (const sheet of sheets) {
217
- if (sheet && sheet.textures[`${prefix}${frame}.${imageFileExtension}`]) {
218
- found = true;
219
- }
220
- }
221
- if (found) {
222
- texture = Texture.from(`${prefix}${frame}.${imageFileExtension}`);
223
- textures.push(texture);
224
- indexFrame += 1;
225
- }
226
- else {
227
- texture = null;
228
- for (const key in resources) {
229
- if (key === `${prefix}${frame}.${imageFileExtension}`) {
230
- texture = Texture.from(`${prefix}${frame}.${imageFileExtension}`);
231
- textures.push(texture);
232
- indexFrame += 1;
233
- }
234
- }
235
- }
236
- }
237
- catch (e) {
238
- texture = null;
239
- }
240
- } while (texture);
241
- return textures;
242
- }
243
- onPlay() {
244
- this.currentTime = 0;
245
- this.lastTime = 0;
246
- }
247
- onCreate(particle) {
248
- const sprite = this.getOrCreateSprite();
249
- sprite.visible = true;
250
- sprite.alpha = 1;
251
- if (this.blendMode) {
252
- sprite.blendMode = this.blendMode;
253
- }
254
- particle.sprite = sprite;
255
- }
256
- onCreateTurbulence(particle) {
257
- let sprite;
258
- if (particle.showVortices) {
259
- sprite = new Sprite(Texture.from('vortex.png'));
260
- }
261
- else {
262
- sprite = new Sprite();
263
- }
264
- sprite.anchor.set(this.anchor.x, this.anchor.y);
265
- this.addChild(sprite);
266
- sprite.visible = false;
267
- sprite.alpha = 0;
268
- particle.sprite = sprite;
269
- if (particle.showVortices && sprite) {
270
- sprite.visible = true;
271
- sprite.alpha = 1;
272
- }
273
- }
274
- onUpdate(particle) {
275
- const sprite = particle.sprite;
276
- sprite.x = particle.x;
277
- sprite.y = particle.y;
278
- sprite.scale.x = particle.size.x;
279
- sprite.scale.y = particle.size.y;
280
- sprite.tint = particle.color.hex;
281
- sprite.alpha = particle.color.alpha;
282
- sprite.rotation = particle.rotation;
283
- }
284
- onUpdateTurbulence(particle) {
285
- const sprite = particle.sprite;
286
- sprite.x = particle.x;
287
- sprite.y = particle.y;
288
- if (particle.showVortices && sprite) {
289
- sprite.scale.x = particle.size.x;
290
- sprite.scale.y = particle.size.y;
291
- sprite.tint = particle.color.hex;
292
- sprite.alpha = particle.color.alpha;
293
- sprite.rotation = particle.rotation;
294
- }
295
- }
296
- onFinishing(particle) {
297
- if (!this.finishingTextureNames || !this.finishingTextureNames.length)
298
- return;
299
- const sprite = particle.sprite;
300
- if (particle.finishingTexture <= this.finishingTextureNames.length - 1) {
301
- sprite.texture = Texture.from(this.getRandomFinishingTexture());
302
- particle.finishingTexture++;
303
- }
304
- }
305
- onRemove(particle) {
306
- const sprite = particle.sprite;
307
- if (!particle.showVortices && sprite) {
308
- sprite.visible = false;
309
- sprite.alpha = 0;
310
- }
311
- particle.finishingTexture = 0;
312
- this.unusedSprites.push(sprite);
313
- // this.removeChild(sprite)
314
- // delete particle.sprite
315
- }
316
- onRemoveTurbulence(particle) {
317
- const sprite = particle.sprite;
318
- if (!particle.showVortices && sprite) {
319
- sprite.visible = false;
320
- sprite.alpha = 0;
321
- }
322
- this.removeChild(sprite);
323
- delete particle.sprite;
324
- }
325
- getRandomTexture() {
326
- return this.textures[Math.floor(Math.random() * this.textures.length)];
327
- }
328
- getRandomFinishingTexture() {
329
- return this.finishingTextureNames[Math.floor(Math.random() * this.finishingTextureNames.length)];
330
- }
331
- getRandomFrameNumber(textures) {
332
- return Math.floor(Math.random() * textures);
333
- }
334
- paused(paused) {
335
- if (paused === this._paused)
336
- return;
337
- if (!paused) {
338
- this.lastTime = performance.now();
339
- }
340
- this._paused = paused;
341
- }
342
- internalPause(paused) {
343
- if (this._paused)
344
- return;
345
- if (paused === this._internalPaused)
346
- return;
347
- if (!paused) {
348
- this.lastTime = performance.now();
349
- }
350
- this._internalPaused = paused;
351
- }
352
- getConfigIndexByName(name, config) {
353
- let index = -1;
354
- config.behaviours.forEach((behaviour, i) => {
355
- if (behaviour.name === name) {
356
- index = i;
357
- }
358
- });
359
- return index;
360
- }
361
- buildTurbulenceConfig(turbulenceConfig) {
362
- const config = {
363
- behaviours: [
364
- {
365
- enabled: true,
366
- priority: 10000,
367
- maxLifeTime: turbulenceConfig.maxLifeTime || 2,
368
- timeVariance: turbulenceConfig.maxLifeTimeVariance || 0,
369
- name: 'LifeBehaviour',
370
- },
371
- {
372
- enabled: true,
373
- priority: 100,
374
- position: {
375
- x: turbulenceConfig.position.x || 0,
376
- y: turbulenceConfig.position.y || 0,
377
- },
378
- positionVariance: {
379
- x: turbulenceConfig.positionVariance.x || 0,
380
- y: turbulenceConfig.positionVariance.y || 0,
381
- },
382
- velocity: {
383
- x: turbulenceConfig.velocity.x || 0,
384
- y: turbulenceConfig.velocity.y || 0,
385
- },
386
- velocityVariance: {
387
- x: turbulenceConfig.velocityVariance.x || 0,
388
- y: turbulenceConfig.velocityVariance.y || 0,
389
- },
390
- acceleration: {
391
- x: turbulenceConfig.acceleration.x || 0,
392
- y: turbulenceConfig.acceleration.y || 0,
393
- },
394
- accelerationVariance: {
395
- x: turbulenceConfig.accelerationVariance.x || 0,
396
- y: turbulenceConfig.accelerationVariance.y || 0,
397
- },
398
- name: 'PositionBehaviour',
399
- },
400
- {
401
- enabled: true,
402
- priority: 0,
403
- sizeStart: {
404
- x: turbulenceConfig.sizeStart.x || 1,
405
- y: turbulenceConfig.sizeStart.y || 1,
406
- },
407
- sizeEnd: {
408
- x: turbulenceConfig.sizeEnd.x || 1,
409
- y: turbulenceConfig.sizeEnd.y || 1,
410
- },
411
- startVariance: turbulenceConfig.startVariance || 0,
412
- endVariance: turbulenceConfig.endVariance || 0,
413
- name: 'SizeBehaviour',
414
- },
415
- {
416
- enabled: true,
417
- priority: 0,
418
- rotation: 12,
419
- variance: 0,
420
- name: 'RotationBehaviour',
421
- },
422
- {
423
- enabled: true,
424
- priority: 0,
425
- showVortices: turbulenceConfig.showVortices || false,
426
- turbulence: true,
427
- name: 'TurbulenceBehaviour',
428
- },
429
- ],
430
- emitController: {
431
- _maxParticles: 0,
432
- _maxLife: 1,
433
- _emitPerSecond: turbulenceConfig.emitPerSecond || 2,
434
- _frames: 0,
435
- name: 'UniformEmission',
436
- },
437
- duration: turbulenceConfig.duration || -1,
438
- };
439
- return config;
440
- }
441
- }
442
- //# sourceMappingURL=TestRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TestRenderer.js","sourceRoot":"","sources":["../../../src/lib/pixi/TestRenderer.ts"],"names":[],"mappings":"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"}