custom-pixi-particles 4.20.0 → 4.21.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.
@@ -20,6 +20,16 @@ export default class MoveToPointBehaviour extends Behaviour {
20
20
  * The speed at which particles move towards the target point (units per second).
21
21
  */
22
22
  speed: number;
23
+ /**
24
+ * If true, particles will be marked as "dead" (lifeTime >= maxLifeTime)
25
+ * once they reach the targetPoint while this behaviour is active.
26
+ */
27
+ killOnArrival: boolean;
28
+ resetMaxLifeTime: boolean;
29
+ /**
30
+ * The distance threshold to consider a particle "at" the target point.
31
+ */
32
+ arrivalThreshold: number;
23
33
  /**
24
34
  * Priority determines execution order. A lower number means it runs later.
25
35
  * This should run after default position behaviours to override the particle's position.
@@ -58,6 +68,9 @@ export default class MoveToPointBehaviour extends Behaviour {
58
68
  y: number;
59
69
  };
60
70
  speed: number;
71
+ killOnArrival: boolean;
72
+ resetMaxLifeTime: boolean;
73
+ arrivalThreshold: number;
61
74
  priority: number;
62
75
  name: string;
63
76
  };
@@ -21,6 +21,16 @@ export default class MoveToPointBehaviour extends Behaviour {
21
21
  * The speed at which particles move towards the target point (units per second).
22
22
  */
23
23
  this.speed = 100;
24
+ /**
25
+ * If true, particles will be marked as "dead" (lifeTime >= maxLifeTime)
26
+ * once they reach the targetPoint while this behaviour is active.
27
+ */
28
+ this.killOnArrival = false;
29
+ this.resetMaxLifeTime = false;
30
+ /**
31
+ * The distance threshold to consider a particle "at" the target point.
32
+ */
33
+ this.arrivalThreshold = 1.0;
24
34
  /**
25
35
  * Priority determines execution order. A lower number means it runs later.
26
36
  * This should run after default position behaviours to override the particle's position.
@@ -49,6 +59,10 @@ export default class MoveToPointBehaviour extends Behaviour {
49
59
  // The particle will continue its movement based on other behaviours.
50
60
  return;
51
61
  }
62
+ // If the particle is already considered dead by other means, don't process further.
63
+ if (particle.isDead()) {
64
+ return;
65
+ }
52
66
  const dx = this.targetPoint.x - particle.x;
53
67
  const dy = this.targetPoint.y - particle.y;
54
68
  const distance = Math.sqrt(dx * dx + dy * dy);
@@ -58,10 +72,30 @@ export default class MoveToPointBehaviour extends Behaviour {
58
72
  particle.velocity.set(0, 0);
59
73
  particle.acceleration.set(0, 0);
60
74
  // If particle is already at or very close to the target
61
- if (distance < 1.0) {
62
- // Using a small threshold to prevent jittering
75
+ if (distance < this.arrivalThreshold) {
63
76
  particle.x = this.targetPoint.x;
64
77
  particle.y = this.targetPoint.y;
78
+ if (this.killOnArrival) {
79
+ // Mark the particle as dead. The Emitter will pick this up and remove it.
80
+ // Ensure maxLifeTime is positive; otherwise, this won't "kill" it effectively.
81
+ if (particle.maxLifeTime > 0) {
82
+ particle.lifeTime = particle.maxLifeTime;
83
+ if (this.resetMaxLifeTime) {
84
+ particle.maxLifeTime = 0;
85
+ }
86
+ }
87
+ else {
88
+ // If maxLifeTime is 0 or negative (infinite),
89
+ // we can't use it to kill. Consider an alternative
90
+ // or ensure particles using this feature have a finite life.
91
+ // For now, we'll just set it to a high value, but ideally,
92
+ // this feature is for particles with defined lifespans.
93
+ // Or, one could introduce a specific "killNow" flag on the particle
94
+ // if the Emitter was modified to check for it.
95
+ // Simplest for now is to rely on a positive maxLifeTime.
96
+ // If maxLifeTime is not > 0, the particle won't be "killed" by this mechanism.
97
+ }
98
+ }
65
99
  }
66
100
  else {
67
101
  const moveAmount = this.speed * deltaTime;
@@ -69,6 +103,14 @@ export default class MoveToPointBehaviour extends Behaviour {
69
103
  // If the movement step is enough to reach the target, snap to target
70
104
  particle.x = this.targetPoint.x;
71
105
  particle.y = this.targetPoint.y;
106
+ if (this.killOnArrival) {
107
+ if (particle.maxLifeTime > 0) {
108
+ particle.lifeTime = particle.maxLifeTime;
109
+ if (this.resetMaxLifeTime) {
110
+ particle.maxLifeTime = 0;
111
+ }
112
+ }
113
+ }
72
114
  }
73
115
  else {
74
116
  // Move towards the target
@@ -102,6 +144,9 @@ export default class MoveToPointBehaviour extends Behaviour {
102
144
  active: this.active,
103
145
  targetPoint: { x: this.targetPoint.x, y: this.targetPoint.y },
104
146
  speed: this.speed,
147
+ killOnArrival: this.killOnArrival,
148
+ resetMaxLifeTime: this.resetMaxLifeTime,
149
+ arrivalThreshold: this.arrivalThreshold,
105
150
  priority: this.priority,
106
151
  name: this.getName(),
107
152
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MoveToPointBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/MoveToPointBehaviour.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MoveToPointBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/MoveToPointBehaviour.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -42,5 +42,5 @@
42
42
  "lint": "tslint 'src/**/*.ts'",
43
43
  "lint:fix": "tslint --fix 'src/**/*.ts'"
44
44
  },
45
- "version": "4.20.0"
45
+ "version": "4.21.0"
46
46
  }