custom-pixi-particles 8.5.1 → 8.7.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 (46) hide show
  1. package/README.md +1000 -20
  2. package/dist/index.d.ts +3 -1
  3. package/dist/index.js +2 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/behaviour/SubEmitterBehaviour.d.ts +0 -0
  6. package/dist/lib/behaviour/SubEmitterBehaviour.js +1 -0
  7. package/dist/lib/behaviour/SubEmitterBehaviour.js.map +1 -0
  8. package/dist/lib/effects/DissolveEffect.d.ts +28 -0
  9. package/dist/lib/effects/DissolveEffect.js +198 -0
  10. package/dist/lib/effects/DissolveEffect.js.map +1 -0
  11. package/dist/lib/effects/GhostEffect.d.ts +32 -0
  12. package/dist/lib/effects/GhostEffect.js +125 -0
  13. package/dist/lib/effects/GhostEffect.js.map +1 -0
  14. package/dist/lib/effects/GlitchEffect.d.ts +25 -0
  15. package/dist/lib/effects/GlitchEffect.js +137 -0
  16. package/dist/lib/effects/GlitchEffect.js.map +1 -0
  17. package/dist/lib/effects/MagneticAssemblyEffect.d.ts +27 -0
  18. package/dist/lib/effects/MagneticAssemblyEffect.js +188 -0
  19. package/dist/lib/effects/MagneticAssemblyEffect.js.map +1 -0
  20. package/dist/lib/effects/MeltEffect.d.ts +27 -0
  21. package/dist/lib/effects/MeltEffect.js +217 -0
  22. package/dist/lib/effects/MeltEffect.js.map +1 -0
  23. package/dist/lib/effects/ShatterEffect.d.ts +40 -0
  24. package/dist/lib/effects/ShatterEffect.js +227 -0
  25. package/dist/lib/effects/ShatterEffect.js.map +1 -0
  26. package/dist/lib/effects/index.d.ts +12 -0
  27. package/dist/lib/effects/index.js +13 -0
  28. package/dist/lib/effects/index.js.map +1 -0
  29. package/dist/lib/emission/RandomEmission.js +3 -3
  30. package/dist/lib/emission/RandomEmission.js.map +1 -1
  31. package/dist/lib/emission/StandardEmission.js +10 -4
  32. package/dist/lib/emission/StandardEmission.js.map +1 -1
  33. package/dist/lib/emission/UniformEmission.js +10 -1
  34. package/dist/lib/emission/UniformEmission.js.map +1 -1
  35. package/dist/lib/emitter/Emitter.js +7 -1
  36. package/dist/lib/emitter/Emitter.js.map +1 -1
  37. package/dist/lib/index.d.ts +2 -0
  38. package/dist/lib/index.js +2 -0
  39. package/dist/lib/index.js.map +1 -1
  40. package/dist/lib/pixi/Renderer.d.ts +2 -4
  41. package/dist/lib/pixi/Renderer.js +20 -16
  42. package/dist/lib/pixi/Renderer.js.map +1 -1
  43. package/dist/lib/pixi/TestRenderer.d.ts +2 -4
  44. package/dist/lib/pixi/TestRenderer.js +20 -16
  45. package/dist/lib/pixi/TestRenderer.js.map +1 -1
  46. package/package.json +1 -1
@@ -0,0 +1,227 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Container, Rectangle, Sprite, Texture, Ticker } from 'pixi.js';
11
+ import ParticlePool from '../ParticlePool';
12
+ import Random from '../util/Random';
13
+ export default class ShatterEffect extends Container {
14
+ constructor(sourceSprite, options = {}) {
15
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
16
+ super();
17
+ this.fragments = [];
18
+ this.isExploded = false;
19
+ this.isCleanedUp = false;
20
+ const cols = (_a = options.gridCols) !== null && _a !== void 0 ? _a : 10;
21
+ const rows = (_b = options.gridRows) !== null && _b !== void 0 ? _b : 10;
22
+ const needsRotation = (_c = options.enableRotation) !== null && _c !== void 0 ? _c : true;
23
+ this.sourceSprite = sourceSprite;
24
+ this.options = {
25
+ gridCols: cols,
26
+ gridRows: rows,
27
+ explosionPower: (_d = options.explosionPower) !== null && _d !== void 0 ? _d : 1000,
28
+ friction: (_e = options.friction) !== null && _e !== void 0 ? _e : 0.96,
29
+ gravity: (_f = options.gravity) !== null && _f !== void 0 ? _f : 800,
30
+ turbulence: (_g = options.turbulence) !== null && _g !== void 0 ? _g : 0.2,
31
+ lifetime: (_h = options.lifetime) !== null && _h !== void 0 ? _h : 2.0,
32
+ fadeOutDuration: (_j = options.fadeOutDuration) !== null && _j !== void 0 ? _j : 0.5,
33
+ mode: (_k = options.mode) !== null && _k !== void 0 ? _k : 'radial',
34
+ explosionOrigin: (_l = options.explosionOrigin) !== null && _l !== void 0 ? _l : { x: 0.5, y: 0.5 },
35
+ blastDirection: (_m = options.blastDirection) !== null && _m !== void 0 ? _m : 0,
36
+ swirlStrength: (_o = options.swirlStrength) !== null && _o !== void 0 ? _o : 0,
37
+ randomizeScale: (_p = options.randomizeScale) !== null && _p !== void 0 ? _p : false,
38
+ endTint: (_q = options.endTint) !== null && _q !== void 0 ? _q : 0xffffff,
39
+ enableRotation: needsRotation,
40
+ rotationStrength: (_r = options.rotationStrength) !== null && _r !== void 0 ? _r : 1.0,
41
+ };
42
+ this.x = this.sourceSprite.x;
43
+ this.y = this.sourceSprite.y;
44
+ this.rotation = this.sourceSprite.rotation;
45
+ this.sourceSprite.visible = false;
46
+ }
47
+ createFragments() {
48
+ const texture = this.sourceSprite.texture;
49
+ if (!texture || !texture.source)
50
+ return;
51
+ const scale = this.sourceSprite.scale.x;
52
+ const texFrame = texture.frame;
53
+ const stepW = texFrame.width / this.options.gridCols;
54
+ const stepH = texFrame.height / this.options.gridRows;
55
+ const anchorX = this.sourceSprite.anchor.x;
56
+ const anchorY = this.sourceSprite.anchor.y;
57
+ const originX = texFrame.width * this.options.explosionOrigin.x;
58
+ const originY = texFrame.height * this.options.explosionOrigin.y;
59
+ for (let row = 0; row < this.options.gridRows; row++) {
60
+ for (let col = 0; col < this.options.gridCols; col++) {
61
+ const x1 = Math.floor(col * stepW);
62
+ const y1 = Math.floor(row * stepH);
63
+ const x2 = Math.min(Math.floor((col + 1) * stepW), texFrame.width);
64
+ const y2 = Math.min(Math.floor((row + 1) * stepH), texFrame.height);
65
+ const currentFragW = x2 - x1;
66
+ const currentFragH = y2 - y1;
67
+ if (currentFragW <= 0 || currentFragH <= 0)
68
+ continue;
69
+ // Create a sub-texture for this fragment
70
+ const fragRect = new Rectangle(texFrame.x + x1, texFrame.y + y1, currentFragW, currentFragH);
71
+ const fragTex = new Texture({ source: texture.source, frame: fragRect });
72
+ const sprite = new Sprite(fragTex);
73
+ sprite.anchor.set(0.5);
74
+ const finalScale = this.options.randomizeScale ? scale * Random.uniform(0.8, 1.2) : scale;
75
+ sprite.scale.set(finalScale);
76
+ const lx = (x1 - texFrame.width * anchorX + currentFragW / 2) * scale;
77
+ const ly = (y1 - texFrame.height * anchorY + currentFragH / 2) * scale;
78
+ const dx = x1 + currentFragW / 2 - originX;
79
+ const dy = y1 + currentFragH / 2 - originY;
80
+ const dist = Math.sqrt(dx * dx + dy * dy);
81
+ const angleToOrigin = Math.atan2(dy, dx);
82
+ let vx = 0;
83
+ let vy = 0;
84
+ if (this.options.mode === 'radial' || this.options.mode === 'swirl') {
85
+ const force = (1.5 - dist / texFrame.width) * this.options.explosionPower;
86
+ const angle = angleToOrigin + Random.uniform(-this.options.turbulence, this.options.turbulence);
87
+ vx = Math.cos(angle) * force;
88
+ vy = Math.sin(angle) * force;
89
+ if (this.options.mode === 'swirl') {
90
+ const swirl = this.options.swirlStrength;
91
+ vx += Math.cos(angle + Math.PI / 2) * (dist * swirl);
92
+ vy += Math.sin(angle + Math.PI / 2) * (dist * swirl);
93
+ }
94
+ }
95
+ else if (this.options.mode === 'directional') {
96
+ const force = this.options.explosionPower * Random.uniform(0.5, 1.5);
97
+ const angle = this.options.blastDirection + Random.uniform(-this.options.turbulence, this.options.turbulence);
98
+ vx = Math.cos(angle) * force;
99
+ vy = Math.sin(angle) * force;
100
+ }
101
+ const particle = ParticlePool.global.pop();
102
+ particle.reset();
103
+ particle.x = lx;
104
+ particle.y = ly;
105
+ particle.velocity.set(vx, vy);
106
+ particle.acceleration.set(0, this.options.gravity);
107
+ particle.maxLifeTime = this.options.lifetime * Random.uniform(0.8, 1.2);
108
+ particle.lifeTime = 0;
109
+ // tslint:disable-next-line:max-line-length
110
+ particle.radiansPerSecond = this.options.enableRotation
111
+ ? Random.uniform(-12, 12) * this.options.rotationStrength
112
+ : 0;
113
+ this.fragments.push({
114
+ sprite,
115
+ particle,
116
+ initialScale: finalScale,
117
+ vz: Random.uniform(-15, 15),
118
+ z: 0,
119
+ });
120
+ this.addChild(sprite);
121
+ }
122
+ }
123
+ }
124
+ Explode() {
125
+ if (this.isExploded)
126
+ return Promise.resolve();
127
+ this.isExploded = true;
128
+ this.createFragments();
129
+ Ticker.shared.add(this.update, this);
130
+ return new Promise((resolve) => {
131
+ this.explodeResolve = resolve;
132
+ });
133
+ }
134
+ update() {
135
+ if (!this.isExploded || this.isCleanedUp)
136
+ return;
137
+ const dt = Ticker.shared.deltaMS / 1000;
138
+ for (let i = this.fragments.length - 1; i >= 0; i--) {
139
+ const f = this.fragments[i];
140
+ const p = f.particle;
141
+ p.lifeTime += dt;
142
+ p.velocity.x *= this.options.friction;
143
+ p.velocity.y *= this.options.friction;
144
+ p.velocity.y += p.acceleration.y * dt;
145
+ p.x += p.velocity.x * dt;
146
+ p.y += p.velocity.y * dt;
147
+ p.rotation += p.radiansPerSecond * dt;
148
+ f.z += f.vz * dt;
149
+ const progress = p.lifeTime / p.maxLifeTime;
150
+ // Update Sprite Properties
151
+ f.sprite.x = p.x;
152
+ f.sprite.y = p.y;
153
+ f.sprite.rotation = p.rotation;
154
+ const depthScale = Math.max(0.1, 1 + f.z / 200);
155
+ f.sprite.scale.set(f.initialScale * depthScale);
156
+ if (this.options.endTint !== 0xffffff) {
157
+ f.sprite.tint = this.lerpColor(0xffffff, this.options.endTint, progress);
158
+ }
159
+ const fadeThreshold = 1 - this.options.fadeOutDuration / p.maxLifeTime;
160
+ if (progress > fadeThreshold) {
161
+ f.sprite.alpha = Math.max(0, (1 - progress) / (1 - fadeThreshold));
162
+ }
163
+ if (p.lifeTime >= p.maxLifeTime || f.sprite.alpha <= 0) {
164
+ this.removeFragment(i);
165
+ }
166
+ }
167
+ if (this.fragments.length === 0) {
168
+ this.finish();
169
+ }
170
+ }
171
+ lerpColor(start, end, t) {
172
+ // tslint:disable-next-line:one-variable-per-declaration no-bitwise
173
+ const r1 = (start >> 16) & 0xff,
174
+ // tslint:disable-next-line:no-bitwise
175
+ g1 = (start >> 8) & 0xff,
176
+ // tslint:disable-next-line:no-bitwise
177
+ b1 = start & 0xff;
178
+ // tslint:disable-next-line:one-variable-per-declaration no-bitwise
179
+ const r2 = (end >> 16) & 0xff,
180
+ // tslint:disable-next-line:no-bitwise
181
+ g2 = (end >> 8) & 0xff,
182
+ // tslint:disable-next-line:no-bitwise
183
+ b2 = end & 0xff;
184
+ // tslint:disable-next-line:one-variable-per-declaration no-bitwise
185
+ const r = r1 + (r2 - r1) * t, g = g1 + (g2 - g1) * t, b = b1 + (b2 - b1) * t;
186
+ // tslint:disable-next-line:no-bitwise
187
+ return (r << 16) | (g << 8) | b;
188
+ }
189
+ removeFragment(index) {
190
+ const f = this.fragments[index];
191
+ if (f.particle)
192
+ ParticlePool.global.push(f.particle);
193
+ if (f.sprite) {
194
+ this.removeChild(f.sprite);
195
+ // Note: We destroy the unique fragment texture to prevent memory leaks,
196
+ // but NOT the source.
197
+ f.sprite.texture.destroy();
198
+ f.sprite.destroy();
199
+ }
200
+ this.fragments.splice(index, 1);
201
+ }
202
+ finish() {
203
+ var _a;
204
+ Ticker.shared.remove(this.update, this);
205
+ (_a = this.explodeResolve) === null || _a === void 0 ? void 0 : _a.call(this);
206
+ this.explodeResolve = undefined;
207
+ }
208
+ destroy(options) {
209
+ this.isCleanedUp = true;
210
+ Ticker.shared.remove(this.update, this);
211
+ this.fragments.forEach((f, i) => this.removeFragment(i));
212
+ this.fragments = [];
213
+ super.destroy(options);
214
+ }
215
+ static shatter(sprite_1) {
216
+ return __awaiter(this, arguments, void 0, function* (sprite, options = {}) {
217
+ if (!sprite.parent)
218
+ return;
219
+ const effect = new ShatterEffect(sprite, options);
220
+ const index = sprite.parent.getChildIndex(sprite);
221
+ sprite.parent.addChildAt(effect, index);
222
+ yield effect.Explode();
223
+ effect.destroy();
224
+ });
225
+ }
226
+ }
227
+ //# sourceMappingURL=ShatterEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShatterEffect.js","sourceRoot":"","sources":["../../../src/lib/effects/ShatterEffect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export { default as ShatterEffect } from './ShatterEffect';
2
+ export { default as DissolveEffect } from './DissolveEffect';
3
+ export { default as MagneticAssemblyEffect } from './MagneticAssemblyEffect';
4
+ export { default as GhostEffect } from './GhostEffect';
5
+ export { default as GlitchEffect } from './GlitchEffect';
6
+ export { default as MeltEffect } from './MeltEffect';
7
+ export * from './ShatterEffect';
8
+ export * from './DissolveEffect';
9
+ export * from './MagneticAssemblyEffect';
10
+ export * from './GhostEffect';
11
+ export * from './GlitchEffect';
12
+ export * from './MeltEffect';
@@ -0,0 +1,13 @@
1
+ export { default as ShatterEffect } from './ShatterEffect';
2
+ export { default as DissolveEffect } from './DissolveEffect';
3
+ export { default as MagneticAssemblyEffect } from './MagneticAssemblyEffect';
4
+ export { default as GhostEffect } from './GhostEffect';
5
+ export { default as GlitchEffect } from './GlitchEffect';
6
+ export { default as MeltEffect } from './MeltEffect';
7
+ export * from './ShatterEffect';
8
+ export * from './DissolveEffect';
9
+ export * from './MagneticAssemblyEffect';
10
+ export * from './GhostEffect';
11
+ export * from './GlitchEffect';
12
+ export * from './MeltEffect';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/effects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAC5E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA"}
@@ -30,9 +30,9 @@ export default class RandomEmission extends AbstractEmission {
30
30
  */
31
31
  howMany(deltaTime, particlesCount) {
32
32
  if (particlesCount < this.maxParticles) {
33
- const count = Math.round(Random.uniform(0, Math.ceil(this.emissionRate * deltaTime)));
34
- const total = particlesCount + count;
35
- return total > this._maxParticles ? this.maxParticles - particlesCount : count;
33
+ const potential = Math.ceil(this.emissionRate * deltaTime);
34
+ const count = Math.round(Random.uniform(0, potential));
35
+ return Math.min(count, this.maxParticles - particlesCount);
36
36
  }
37
37
  return 0;
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RandomEmission.js","sourceRoot":"","sources":["../../../src/lib/emission/RandomEmission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEhC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,gBAAgB;IAA5D;;QACE;;WAEG;QACH,kBAAa,GAAG,CAAC,CAAA;QAEjB;;WAEG;QACH,kBAAa,GAAG,CAAC,CAAA;QA+CjB;;;WAGG;QACH,YAAO,GAAG,GAAG,EAAE;YACb,OAAO,aAAa,CAAC,MAAM,CAAA;QAC7B,CAAC,CAAA;IACH,CAAC;IApDC;;;;OAIG;IACH,OAAO,CAAC,SAAiB,EAAE,cAAsB;QAC/C,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YACrF,MAAM,KAAK,GAAG,cAAc,GAAG,KAAK,CAAA;YACpC,OAAO,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,CAAA;QAChF,CAAC;QAED,OAAO,CAAC,CAAA;IACV,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC;CASF"}
1
+ {"version":3,"file":"RandomEmission.js","sourceRoot":"","sources":["../../../src/lib/emission/RandomEmission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEhC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,gBAAgB;IAA5D;;QACE;;WAEG;QACH,kBAAa,GAAG,CAAC,CAAA;QAEjB;;WAEG;QACH,kBAAa,GAAG,CAAC,CAAA;QA+CjB;;;WAGG;QACH,YAAO,GAAG,GAAG,EAAE;YACb,OAAO,aAAa,CAAC,MAAM,CAAA;QAC7B,CAAC,CAAA;IACH,CAAC;IApDC;;;;OAIG;IACH,OAAO,CAAC,SAAiB,EAAE,cAAsB;QAC/C,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;YAEtD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,CAAA;QAC5D,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC;CASF"}
@@ -72,14 +72,20 @@ export default class StandardEmission extends AbstractEmission {
72
72
  * @return {number} - The number of particles to be emitted.
73
73
  */
74
74
  howMany(deltaTime, particlesCount) {
75
+ if (this.emissionRate <= 0)
76
+ return 0;
75
77
  const rate = 1.0 / this.emissionRate;
76
78
  let count = 0;
77
- if (particlesCount < this.maxParticles) {
78
- this._emitCounter += deltaTime;
79
- }
80
- while (particlesCount < this.maxParticles && this._emitCounter > rate) {
79
+ let virtualCount = particlesCount;
80
+ this._emitCounter += deltaTime;
81
+ while (virtualCount < this._maxParticles && this._emitCounter >= rate) {
81
82
  count++;
83
+ virtualCount++;
82
84
  this._emitCounter -= rate;
85
+ if (count > 1000) {
86
+ this._emitCounter = 0;
87
+ break;
88
+ }
83
89
  }
84
90
  return count;
85
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StandardEmission.js","sourceRoot":"","sources":["../../../src/lib/emission/StandardEmission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEzD;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,gBAAgB;IAA9D;;QACE;;;;WAIG;QACH,iBAAY,GAAG,CAAC,CAAA;QAEhB;;;;WAIG;QACH,kBAAa,GAAG,CAAC,CAAA;QAkBjB;;;;WAIG;QACH,kBAAa,GAAG,CAAC,CAAA;QAwCjB;;;WAGG;QACH,YAAO,GAAG,GAAG,EAAE;YACb,OAAO,aAAa,CAAC,OAAO,CAAA;QAC9B,CAAC,CAAA;IACH,CAAC;IApEC;;;OAGG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC;IASD;;;OAGG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,SAAiB,EAAE,cAAsB;QAC/C,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAA;QACpC,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,IAAI,CAAC,YAAY,IAAI,SAAS,CAAA;QAChC,CAAC;QAED,OAAO,cAAc,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,CAAC;YACtE,KAAK,EAAE,CAAA;YACP,IAAI,CAAC,YAAY,IAAI,IAAI,CAAA;QAC3B,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;CASF"}
1
+ {"version":3,"file":"StandardEmission.js","sourceRoot":"","sources":["../../../src/lib/emission/StandardEmission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEzD;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,gBAAgB;IAA9D;;QACE;;;;WAIG;QACH,iBAAY,GAAG,CAAC,CAAA;QAEhB;;;;WAIG;QACH,kBAAa,GAAG,CAAC,CAAA;QAkBjB;;;;WAIG;QACH,kBAAa,GAAG,CAAC,CAAA;QAiDjB;;;WAGG;QACH,YAAO,GAAG,GAAG,EAAE;YACb,OAAO,aAAa,CAAC,OAAO,CAAA;QAC9B,CAAC,CAAA;IACH,CAAC;IA7EC;;;OAGG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC;IASD;;;OAGG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACzC,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,SAAiB,EAAE,cAAsB;QAC/C,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC;YAAE,OAAO,CAAC,CAAA;QAEpC,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAA;QACpC,IAAI,KAAK,GAAG,CAAC,CAAA;QAEb,IAAI,YAAY,GAAG,cAAc,CAAA;QAEjC,IAAI,CAAC,YAAY,IAAI,SAAS,CAAA;QAE9B,OAAO,YAAY,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;YACtE,KAAK,EAAE,CAAA;YACP,YAAY,EAAE,CAAA;YACd,IAAI,CAAC,YAAY,IAAI,IAAI,CAAA;YAEzB,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;gBACrB,MAAK;YACP,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;CASF"}
@@ -30,11 +30,20 @@ export default class UniformEmission extends AbstractEmission {
30
30
  * @returns {number} The number of particles to emit in the current frame.
31
31
  */
32
32
  howMany(deltaTime, particlesCount) {
33
+ if (particlesCount >= this._maxParticles) {
34
+ this._frames = 0;
35
+ return 0;
36
+ }
33
37
  const ratio = this._emitPerSecond * deltaTime;
34
38
  this._frames += ratio;
35
39
  let numberToEmit = 0;
36
40
  if (this._frames >= 1.0) {
37
- numberToEmit = Math.round(this._frames);
41
+ numberToEmit = Math.floor(this._frames);
42
+ this._frames -= numberToEmit;
43
+ }
44
+ const capacity = this._maxParticles - particlesCount;
45
+ if (numberToEmit > capacity) {
46
+ numberToEmit = Math.max(0, capacity);
38
47
  this._frames = 0;
39
48
  }
40
49
  return numberToEmit;
@@ -1 +1 @@
1
- {"version":3,"file":"UniformEmission.js","sourceRoot":"","sources":["../../../src/lib/emission/UniformEmission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,gBAAgB;IAA7D;;QACE,kBAAa,GAAG,CAAC,CAAA;QACjB,aAAQ,GAAG,CAAC,CAAA;QACZ,mBAAc,GAAG,CAAC,CAAA;QAClB,YAAO,GAAG,CAAC,CAAA;QAmEX;;;;WAIG;QACH,YAAO,GAAG,GAAG,EAAE;YACb,OAAO,aAAa,CAAC,OAAO,CAAA;QAC9B,CAAC,CAAA;IACH,CAAC;IAzEC;;;;;;OAMG;IACH,OAAO,CAAC,SAAiB,EAAE,cAAsB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QAC7C,IAAI,CAAC,OAAO,IAAI,KAAK,CAAA;QAErB,IAAI,YAAY,GAAG,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;YACxB,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACvC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAClB,CAAC;QAED,OAAO,YAAY,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAA;IACzD,CAAC;IAED;;;;OAIG;IACH,IAAI,OAAO,CAAC,KAAa;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAClC,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACH,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAI,aAAa,CAAC,KAAa;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;CAUF"}
1
+ {"version":3,"file":"UniformEmission.js","sourceRoot":"","sources":["../../../src/lib/emission/UniformEmission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEzD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,gBAAgB;IAA7D;;QACE,kBAAa,GAAG,CAAC,CAAA;QACjB,aAAQ,GAAG,CAAC,CAAA;QACZ,mBAAc,GAAG,CAAC,CAAA;QAClB,YAAO,GAAG,CAAC,CAAA;QA8EX;;;;WAIG;QACH,YAAO,GAAG,GAAG,EAAE;YACb,OAAO,aAAa,CAAC,OAAO,CAAA;QAC9B,CAAC,CAAA;IACH,CAAC;IApFC;;;;;;OAMG;IACH,OAAO,CAAC,SAAiB,EAAE,cAAsB;QAC/C,IAAI,cAAc,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;YAChB,OAAO,CAAC,CAAA;QACV,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QAC7C,IAAI,CAAC,OAAO,IAAI,KAAK,CAAA;QAErB,IAAI,YAAY,GAAG,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;YACxB,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACvC,IAAI,CAAC,OAAO,IAAI,YAAY,CAAA;QAC9B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;QACpD,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;YAC5B,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;YACpC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAClB,CAAC;QAED,OAAO,YAAY,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAA;IACzD,CAAC;IAED;;;;OAIG;IACH,IAAI,OAAO,CAAC,KAAa;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAClC,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACH,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAI,aAAa,CAAC,KAAa;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;CAUF"}
@@ -71,7 +71,13 @@ class Emitter extends eventemitter3 {
71
71
  for (let i = 0; i < particlesToEmit; ++i) {
72
72
  const particle = this.list.add(ParticlePool.global.pop());
73
73
  this.behaviours.init(particle, this._model, this.turbulencePool);
74
- this.emit(Emitter.CREATE, particle);
74
+ this.behaviours.apply(particle, deltaTime, this._model);
75
+ if (particle.isDead()) {
76
+ this.removeParticle(particle);
77
+ }
78
+ else {
79
+ this.emit(Emitter.CREATE, particle);
80
+ }
75
81
  }
76
82
  }
77
83
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Emitter.js","sourceRoot":"","sources":["../../../src/lib/emitter/Emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Emitter.js","sourceRoot":"","sources":["../../../src/lib/emitter/Emitter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,6BAA6B;AAC7B,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,aAAa,MAAM,eAAe,CAAA;AACzC,OAAO,YAAY,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,IAAI,MAAM,cAAc,CAAA;AAC/B,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,cAAc,EAAe,MAAM,SAAS,CAAA;AAErD,OAAO,cAAc,MAAM,wBAAwB,CAAA;AAEnD,MAAqB,OAAQ,SAAQ,aAAa;IAoBhD,YAAY,KAAY;QACtB,KAAK,EAAE,CAAA;QAbT,SAAI,GAAS,IAAI,IAAI,EAAE,CAAA;QACvB,aAAQ,GAAa,IAAI,QAAQ,EAAE,CAAA;QAEnC,UAAK,GAAW,CAAC,CAAA;QACjB,WAAM,GAA6B,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAA;QACrD,cAAS,GAAgB,QAAQ,CAAA;QACjC,eAAU,GAAsB,IAAI,iBAAiB,EAAE,CAAA;QAEvD,mBAAc,GAAmB,IAAI,cAAc,EAAE,CAAA;QAMnD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QAEnB,aAAa;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAA;IACtE,CAAC;IAED;;;;OAIG;IACG,MAAM,CAAC,SAAiB;;YAC5B,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAM;YAEvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACjC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;YAC7B,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;YAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YAE/B,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzD,IAAI,CAAC,IAAI,EAAE,CAAA;gBACX,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAC7B,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;KAAA;IAED;;;OAGG;IACH,aAAa,CAAC,SAAiB;QAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,SAAiB;QAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAa,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAA;YACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;YAEhE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YAEvD,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,SAAiB;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAkB,EAAE,EAAE;YACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,QAAkB,EAAE,SAAiB;QAClD,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;YAC7B,OAAM;QACR,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEvD,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACxC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,QAAkB;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACnC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA,CAAC,oBAAoB;QAChE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC1B,QAAQ,CAAC,KAAK,EAAE,CAAA;QAChB,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAClC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IACpD,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED;;OAEG;IACH,2BAA2B;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3B,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACrB,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAkB,EAAE,EAAE;YACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAkB,EAAE,EAAE;YACtD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAkB,EAAE,EAAE;YACvC,IAAI,QAAQ,CAAC,MAAM,YAAY,cAAc,EAAE,CAAC;gBAC9C,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACxB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAkB,EAAE,EAAE;YACvC,IAAI,QAAQ,CAAC,MAAM,YAAY,cAAc,EAAE,CAAC;gBAC9C,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACxB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;;QACL,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,aAAa;QACb,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;QACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QAChC,aAAa;QACb,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,SAAS,CAAA;QACpC,aAAa;QACb,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QAC/B,aAAa;QACb,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;QACzB,aAAa;QACb,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QAC/B,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,EAAE,CAAA;QACxB,aAAa;QACb,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YACrD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC7B,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QAC/B,aAAa;QACb,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;IACzB,CAAC;;AA3PM,YAAI,GAAG,cAAc,AAAjB,CAAiB;AACrB,aAAK,GAAG,eAAe,AAAlB,CAAkB;AACvB,cAAM,GAAG,gBAAgB,AAAnB,CAAmB;AACzB,cAAM,GAAG,gBAAgB,AAAnB,CAAmB;AACzB,cAAM,GAAG,gBAAgB,AAAnB,CAAmB;AACzB,iBAAS,GAAG,mBAAmB,AAAtB,CAAsB;AAC/B,gBAAQ,GAAG,kBAAkB,AAArB,CAAqB;eAPjB,OAAO"}
@@ -1,6 +1,7 @@
1
1
  import * as controller from './emission';
2
2
  import * as behaviour from './behaviour';
3
3
  import * as parser from './parser';
4
+ import * as effects from './effects';
4
5
  import Particle from './Particle';
5
6
  import ParticlePool from './ParticlePool';
6
7
  import { Duration, Emitter } from './emitter';
@@ -11,6 +12,7 @@ declare const cpp: {
11
12
  parser: typeof parser;
12
13
  controller: typeof controller;
13
14
  behaviour: typeof behaviour;
15
+ effects: typeof effects;
14
16
  Color: typeof Color;
15
17
  Point: typeof Point;
16
18
  Random: typeof Random;
package/dist/lib/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as controller from './emission';
2
2
  import * as behaviour from './behaviour';
3
3
  import * as parser from './parser';
4
+ import * as effects from './effects';
4
5
  import Particle from './Particle';
5
6
  import ParticlePool from './ParticlePool';
6
7
  import { Duration, Emitter } from './emitter';
@@ -11,6 +12,7 @@ const cpp = {
11
12
  parser,
12
13
  controller,
13
14
  behaviour,
15
+ effects,
14
16
  Color,
15
17
  Point,
16
18
  Random,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,MAAM,GAAG,GAAG;IACV,QAAQ;IACR,YAAY;IACZ,MAAM;IACN,UAAU;IACV,SAAS;IACT,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;IACR,OAAO;CACR,CAAA;AAED,eAAe,GAAG,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AACpC,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,MAAM,GAAG,GAAG;IACV,QAAQ;IACR,YAAY;IACZ,MAAM;IACN,UAAU;IACV,SAAS;IACT,OAAO;IACP,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;IACR,OAAO;CACR,CAAA;AAED,eAAe,GAAG,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { Emitter } from '../emitter';
2
2
  import { ICustomPixiParticlesSettings } from '../customPixiParticlesSettingsInterface';
3
- import { Container } from 'pixi.js';
3
+ import { Container, Ticker } from 'pixi.js';
4
4
  /**
5
5
  * Renderer is a class used to render particles in the Pixi library.
6
6
  *
@@ -51,9 +51,7 @@ export default class Renderer extends Container {
51
51
  /**
52
52
  * Updates the transform of the ParticleContainer and updates the emitters.
53
53
  */
54
- _updateTransform(deltaTime: {
55
- deltaTime: number;
56
- }): void;
54
+ _updateTransform(ticker: Ticker): void;
57
55
  /**
58
56
  *
59
57
  * @method updateTexture
@@ -124,13 +124,13 @@ class Renderer extends Container {
124
124
  /**
125
125
  * Updates the transform of the ParticleContainer and updates the emitters.
126
126
  */
127
- _updateTransform(deltaTime) {
127
+ _updateTransform(ticker) {
128
128
  var _a;
129
129
  if (this._paused)
130
130
  return;
131
- (_a = this.emitter) === null || _a === void 0 ? void 0 : _a.update(deltaTime.deltaTime);
131
+ (_a = this.emitter) === null || _a === void 0 ? void 0 : _a.update(ticker.deltaTime);
132
132
  if (this.turbulenceEmitter) {
133
- this.turbulenceEmitter.update(deltaTime.deltaTime);
133
+ this.turbulenceEmitter.update(ticker.deltaTime);
134
134
  }
135
135
  }
136
136
  /**
@@ -301,12 +301,14 @@ class Renderer extends Container {
301
301
  }
302
302
  getOrCreateSprite() {
303
303
  var _a, _b, _c;
304
- if (this.unusedSprites.length > 0) {
304
+ while (this.unusedSprites.length > 0) {
305
305
  const sprite = this.unusedSprites.pop();
306
- if (this.finishingTextureNames && this.finishingTextureNames.length) {
307
- sprite.texture = Assets.get(this.getRandomTexture());
306
+ if (sprite) {
307
+ if (this.finishingTextureNames && this.finishingTextureNames.length) {
308
+ sprite.texture = Assets.get(this.getRandomTexture());
309
+ }
310
+ return sprite;
308
311
  }
309
- return sprite;
310
312
  }
311
313
  if ((_a = this.emitter) === null || _a === void 0 ? void 0 : _a.animatedSprite) {
312
314
  const textures = this.createFrameAnimationByName(this.getRandomTexture());
@@ -425,21 +427,23 @@ class Renderer extends Container {
425
427
  }
426
428
  onRemove(particle) {
427
429
  if (!this._firstParticleHasBeenDestroyed) {
428
- if (this.onFirstParticleDestroy) {
430
+ if (this.onFirstParticleDestroy)
429
431
  this.onFirstParticleDestroy();
430
- }
431
432
  this._firstParticleHasBeenDestroyed = true;
432
433
  }
433
434
  const sprite = particle.sprite;
434
- if (!particle.showVortices && sprite) {
435
- sprite.visible = false;
436
- sprite.alpha = 0;
435
+ if (sprite) {
436
+ if (!particle.showVortices) {
437
+ sprite.visible = false;
438
+ sprite.alpha = 0;
439
+ }
440
+ if (sprite instanceof AnimatedSprite) {
441
+ sprite.stop();
442
+ }
443
+ this.unusedSprites.push(sprite);
444
+ particle.sprite = null;
437
445
  }
438
446
  particle.finishingTexture = 0;
439
- this.unusedSprites.push(sprite);
440
- if (sprite instanceof AnimatedSprite) {
441
- sprite.stop();
442
- }
443
447
  }
444
448
  onRemoveTurbulence(particle) {
445
449
  const sprite = particle.sprite;