custom-pixi-particles 8.15.1 → 8.16.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.
@@ -24,6 +24,11 @@ export default class SizeBehaviour extends Behaviour {
24
24
  yScalingFunction: string;
25
25
  sizeAlphaDependency: boolean;
26
26
  init: (particle: Particle) => void;
27
+ /**
28
+ * Infinite life: `lifeProgress` loops 0→1 over `infiniteLifeVisualPeriod`.
29
+ * Map phase to a triangle 0→1→0 so size eases start→end→start smoothly (no jump at wrap).
30
+ */
31
+ private infiniteSizeProgress;
27
32
  apply: (particle: Particle, deltaTime: number) => void;
28
33
  applyMultiStepSize: (particle: Particle, lifeProgress: number) => void;
29
34
  applyEasing: (progress: number, easingType: string) => number;
@@ -58,11 +58,18 @@ export default class SizeBehaviour extends Behaviour {
58
58
  this.apply = (particle, deltaTime) => {
59
59
  if (!this.enabled || particle.skipSizeBehaviour)
60
60
  return;
61
- let lifeProgress = particle.lifeProgress - this.timeOffset;
62
- if (lifeProgress < 0)
61
+ const t = particle.lifeProgress - this.timeOffset;
62
+ if (t < 0)
63
63
  return; // Skip if delayed
64
- if (this.invertAtMidpoint && lifeProgress > 0.5) {
65
- lifeProgress = 1 - lifeProgress; // Invert at midpoint
64
+ let lifeProgress;
65
+ if (Number.isFinite(particle.maxLifeTime)) {
66
+ lifeProgress = t;
67
+ if (this.invertAtMidpoint && lifeProgress > 0.5) {
68
+ lifeProgress = 1 - lifeProgress; // Invert at midpoint
69
+ }
70
+ }
71
+ else {
72
+ lifeProgress = this.infiniteSizeProgress(t);
66
73
  }
67
74
  // Handle multi-step transitions
68
75
  if (this.sizeSteps.length > 0) {
@@ -130,6 +137,14 @@ export default class SizeBehaviour extends Behaviour {
130
137
  return x - Math.floor(x); // Ensure result is between 0 and 1
131
138
  };
132
139
  }
140
+ /**
141
+ * Infinite life: `lifeProgress` loops 0→1 over `infiniteLifeVisualPeriod`.
142
+ * Map phase to a triangle 0→1→0 so size eases start→end→start smoothly (no jump at wrap).
143
+ */
144
+ infiniteSizeProgress(phase01) {
145
+ const phase = ((phase01 % 1) + 1) % 1;
146
+ return 1 - Math.abs(2 * phase - 1);
147
+ }
133
148
  getName() {
134
149
  return BehaviourNames.SIZE_BEHAVIOUR;
135
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SizeBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/SizeBehaviour.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SizeBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/SizeBehaviour.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import AbstractEmission from './AbstractEmission';
6
6
  export default class PersistentFillEmission extends AbstractEmission {
7
7
  _maxParticles: number;
8
8
  _burstPerFrame: number;
9
+ _carry: number;
9
10
  /**
10
11
  * @param deltaTime - unused; API matches other emission controllers
11
12
  * @param particlesCount - current live particle count
@@ -9,6 +9,7 @@ export default class PersistentFillEmission extends AbstractEmission {
9
9
  super(...arguments);
10
10
  this._maxParticles = 0;
11
11
  this._burstPerFrame = 500;
12
+ this._carry = 0;
12
13
  this.getName = () => {
13
14
  return EmissionTypes.PERSISTENT_FILL;
14
15
  };
@@ -21,15 +22,23 @@ export default class PersistentFillEmission extends AbstractEmission {
21
22
  if (particlesCount >= this._maxParticles) {
22
23
  return 0;
23
24
  }
25
+ this._carry += this._burstPerFrame;
26
+ const wholeParticles = Math.floor(this._carry + 1e-9);
27
+ if (wholeParticles <= 0) {
28
+ return 0;
29
+ }
24
30
  const capacity = this._maxParticles - particlesCount;
25
- return Math.min(capacity, this._burstPerFrame);
31
+ const toEmit = Math.min(capacity, wholeParticles);
32
+ this._carry -= toEmit;
33
+ return toEmit;
26
34
  }
27
35
  reset() {
28
- //
36
+ this._carry = 0;
29
37
  }
30
38
  validate() {
31
39
  this._maxParticles = Math.max(0, this._maxParticles);
32
- this._burstPerFrame = Math.max(1, Math.floor(this._burstPerFrame));
40
+ this._burstPerFrame = Math.max(0, this._burstPerFrame);
41
+ this._carry = 0;
33
42
  }
34
43
  set maxParticles(value) {
35
44
  this._maxParticles = Math.max(value, 0);
@@ -38,7 +47,7 @@ export default class PersistentFillEmission extends AbstractEmission {
38
47
  return this._maxParticles;
39
48
  }
40
49
  set burstPerFrame(value) {
41
- this._burstPerFrame = Math.max(1, Math.floor(value));
50
+ this._burstPerFrame = Math.max(value, 0);
42
51
  }
43
52
  get burstPerFrame() {
44
53
  return this._burstPerFrame;
@@ -1 +1 @@
1
- {"version":3,"file":"PersistentFillEmission.js","sourceRoot":"","sources":["../../../src/lib/emission/PersistentFillEmission.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAE3C;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,gBAAgB;IAApE;;QACE,kBAAa,GAAG,CAAC,CAAA;QACjB,mBAAc,GAAG,GAAG,CAAA;QAuCpB,YAAO,GAAG,GAAG,EAAE;YACb,OAAO,aAAa,CAAC,eAAe,CAAA;QACtC,CAAC,CAAA;IACH,CAAC;IAxCC;;;OAGG;IACH,OAAO,CAAC,UAAkB,EAAE,cAAsB;QAChD,IAAI,cAAc,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,OAAO,CAAC,CAAA;QACV,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;QACpD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;IAChD,CAAC;IAED,KAAK;QACH,EAAE;IACJ,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QACpD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;IACpE,CAAC;IAED,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED,IAAI,aAAa,CAAC,KAAa;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;CAKF"}
1
+ {"version":3,"file":"PersistentFillEmission.js","sourceRoot":"","sources":["../../../src/lib/emission/PersistentFillEmission.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAE3C;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,gBAAgB;IAApE;;QACE,kBAAa,GAAG,CAAC,CAAA;QACjB,mBAAc,GAAG,GAAG,CAAA;QACpB,WAAM,GAAG,CAAC,CAAA;QAiDV,YAAO,GAAG,GAAG,EAAE;YACb,OAAO,aAAa,CAAC,eAAe,CAAA;QACtC,CAAC,CAAA;IACH,CAAC;IAlDC;;;OAGG;IACH,OAAO,CAAC,UAAkB,EAAE,cAAsB;QAChD,IAAI,cAAc,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,OAAO,CAAC,CAAA;QACV,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAA;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;QACrD,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,CAAA;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;QACjD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAA;QACrB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IACjB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QACpD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QACtD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,YAAY,CAAC,KAAa;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED,IAAI,aAAa,CAAC,KAAa;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;CAKF"}
package/package.json CHANGED
@@ -51,5 +51,5 @@
51
51
  "lint:fix": "tslint --fix 'src/**/*.ts'",
52
52
  "test": "vitest run"
53
53
  },
54
- "version": "8.15.1"
54
+ "version": "8.16.0"
55
55
  }