custom-pixi-particles 8.2.1 → 8.4.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.
- package/dist/lib/Particle.d.ts +5 -0
- package/dist/lib/Particle.js +11 -0
- package/dist/lib/Particle.js.map +1 -1
- package/dist/lib/behaviour/BehaviourNames.d.ts +1 -0
- package/dist/lib/behaviour/BehaviourNames.js +1 -0
- package/dist/lib/behaviour/BehaviourNames.js.map +1 -1
- package/dist/lib/behaviour/EmitterBehaviours.d.ts +6 -0
- package/dist/lib/behaviour/EmitterBehaviours.js +13 -0
- package/dist/lib/behaviour/EmitterBehaviours.js.map +1 -1
- package/dist/lib/behaviour/MoveToPointBehaviour.d.ts +107 -0
- package/dist/lib/behaviour/MoveToPointBehaviour.js +317 -0
- package/dist/lib/behaviour/MoveToPointBehaviour.js.map +1 -0
- package/dist/lib/behaviour/PositionBehaviour.d.ts +8 -8
- package/dist/lib/behaviour/PositionBehaviour.js +8 -8
- package/dist/lib/behaviour/PositionBehaviour.js.map +1 -1
- package/dist/lib/behaviour/SoundReactiveBehaviour.js +1 -0
- package/dist/lib/behaviour/SoundReactiveBehaviour.js.map +1 -1
- package/dist/lib/behaviour/index.d.ts +2 -1
- package/dist/lib/behaviour/index.js +2 -1
- package/dist/lib/behaviour/index.js.map +1 -1
- package/dist/lib/emitter/Emitter.d.ts +1 -1
- package/dist/lib/emitter/Emitter.js +11 -7
- package/dist/lib/emitter/Emitter.js.map +1 -1
- package/dist/lib/pixi/Renderer.d.ts +6 -2
- package/dist/lib/pixi/Renderer.js +36 -36
- package/dist/lib/pixi/Renderer.js.map +1 -1
- package/dist/lib/pixi/TestRenderer.d.ts +5 -1
- package/dist/lib/pixi/TestRenderer.js +35 -29
- package/dist/lib/pixi/TestRenderer.js.map +1 -1
- package/package.json +3 -3
package/dist/lib/Particle.d.ts
CHANGED
|
@@ -207,6 +207,11 @@ export default class Particle {
|
|
|
207
207
|
initialDirectionSin: number;
|
|
208
208
|
velocityScale: number;
|
|
209
209
|
rotationAcceleration: number;
|
|
210
|
+
pathTime: number;
|
|
211
|
+
moveToPointInitialX: number;
|
|
212
|
+
moveToPointInitialY: number;
|
|
213
|
+
moveToPointTotalDistance: number;
|
|
214
|
+
moveToPointAccumulatedLinearDistance: number;
|
|
210
215
|
/**
|
|
211
216
|
* Constructs a particle object
|
|
212
217
|
*/
|
package/dist/lib/Particle.js
CHANGED
|
@@ -93,6 +93,12 @@ class Particle {
|
|
|
93
93
|
this.initialDirectionSin = 0;
|
|
94
94
|
this.velocityScale = 1;
|
|
95
95
|
this.rotationAcceleration = 0;
|
|
96
|
+
this.pathTime = 0; // For behaviours like MoveToPoint sinusoidal path
|
|
97
|
+
// For MoveToPointBehaviour with easing
|
|
98
|
+
this.moveToPointInitialX = 0;
|
|
99
|
+
this.moveToPointInitialY = 0;
|
|
100
|
+
this.moveToPointTotalDistance = 0;
|
|
101
|
+
this.moveToPointAccumulatedLinearDistance = 0;
|
|
96
102
|
this.reset();
|
|
97
103
|
}
|
|
98
104
|
/**
|
|
@@ -168,6 +174,11 @@ class Particle {
|
|
|
168
174
|
this.initialDirectionSin = 0;
|
|
169
175
|
this.velocityScale = 1;
|
|
170
176
|
this.rotationAcceleration = 0;
|
|
177
|
+
this.pathTime = 0;
|
|
178
|
+
this.moveToPointInitialX = 0;
|
|
179
|
+
this.moveToPointInitialY = 0;
|
|
180
|
+
this.moveToPointTotalDistance = 0;
|
|
181
|
+
this.moveToPointAccumulatedLinearDistance = 0;
|
|
171
182
|
}
|
|
172
183
|
/**
|
|
173
184
|
* Checks if the particle is almost dead
|
package/dist/lib/Particle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Particle.js","sourceRoot":"","sources":["../../src/lib/Particle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Particle.js","sourceRoot":"","sources":["../../src/lib/Particle.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ const behaviourNames = {
|
|
|
18
18
|
LIGHT_EFFECT_BEHAVIOUR: 'LightEffectBehaviour',
|
|
19
19
|
STRETCH_BEHAVIOUR: 'StretchBehaviour',
|
|
20
20
|
TEMPERATURE_BEHAVIOUR: 'TemperatureBehaviour',
|
|
21
|
+
MOVE_TO_POINT_BEHAVIOUR: 'MoveToPointBehaviour',
|
|
21
22
|
};
|
|
22
23
|
export default behaviourNames;
|
|
23
24
|
//# sourceMappingURL=BehaviourNames.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BehaviourNames.js","sourceRoot":"","sources":["../../../src/lib/behaviour/BehaviourNames.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG;IACrB,iBAAiB,EAAE,0BAA0B;IAC7C,cAAc,EAAE,eAAe;IAC/B,eAAe,EAAE,gBAAgB;IACjC,kBAAkB,EAAE,mBAAmB;IACvC,cAAc,EAAE,eAAe;IAC/B,cAAc,EAAE,wBAAwB;IACxC,kBAAkB,EAAE,mBAAmB;IACvC,oBAAoB,EAAE,qBAAqB;IAC3C,mBAAmB,EAAE,oBAAoB;IACzC,8BAA8B,EAAE,8BAA8B;IAC9D,4BAA4B,EAAE,2BAA2B;IACzD,sBAAsB,EAAE,sBAAsB;IAC9C,eAAe,EAAE,gBAAgB;IACjC,kBAAkB,EAAE,mBAAmB;IACvC,kBAAkB,EAAE,mBAAmB;IACvC,wBAAwB,EAAE,wBAAwB;IAClD,sBAAsB,EAAE,sBAAsB;IAC9C,iBAAiB,EAAE,kBAAkB;IACrC,qBAAqB,EAAE,sBAAsB;
|
|
1
|
+
{"version":3,"file":"BehaviourNames.js","sourceRoot":"","sources":["../../../src/lib/behaviour/BehaviourNames.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG;IACrB,iBAAiB,EAAE,0BAA0B;IAC7C,cAAc,EAAE,eAAe;IAC/B,eAAe,EAAE,gBAAgB;IACjC,kBAAkB,EAAE,mBAAmB;IACvC,cAAc,EAAE,eAAe;IAC/B,cAAc,EAAE,wBAAwB;IACxC,kBAAkB,EAAE,mBAAmB;IACvC,oBAAoB,EAAE,qBAAqB;IAC3C,mBAAmB,EAAE,oBAAoB;IACzC,8BAA8B,EAAE,8BAA8B;IAC9D,4BAA4B,EAAE,2BAA2B;IACzD,sBAAsB,EAAE,sBAAsB;IAC9C,eAAe,EAAE,gBAAgB;IACjC,kBAAkB,EAAE,mBAAmB;IACvC,kBAAkB,EAAE,mBAAmB;IACvC,wBAAwB,EAAE,wBAAwB;IAClD,sBAAsB,EAAE,sBAAsB;IAC9C,iBAAiB,EAAE,kBAAkB;IACrC,qBAAqB,EAAE,sBAAsB;IAC7C,uBAAuB,EAAE,sBAAsB;CAChD,CAAA;AAED,eAAe,cAAc,CAAA"}
|
|
@@ -66,4 +66,10 @@ export default class EmitterBehaviours {
|
|
|
66
66
|
* @param {number} deltaTime The delta time
|
|
67
67
|
*/
|
|
68
68
|
update: (deltaTime: number) => void;
|
|
69
|
+
/**
|
|
70
|
+
* Called when a particle is removed from the emitter.
|
|
71
|
+
* Allows behaviours to clean up any per-particle state.
|
|
72
|
+
* @param {Particle} particle The particle being removed.
|
|
73
|
+
*/
|
|
74
|
+
onParticleRemoved: (particle: Particle) => void;
|
|
69
75
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// src/lib/behaviour/EmitterBehaviours.ts
|
|
1
2
|
// tslint:disable:prefer-for-of
|
|
2
3
|
/**
|
|
3
4
|
* EmitterBehaviours class manages the behaviour of particles
|
|
@@ -111,6 +112,18 @@ export default class EmitterBehaviours {
|
|
|
111
112
|
this.behaviours[i].update(deltaTime);
|
|
112
113
|
}
|
|
113
114
|
};
|
|
115
|
+
/**
|
|
116
|
+
* Called when a particle is removed from the emitter.
|
|
117
|
+
* Allows behaviours to clean up any per-particle state.
|
|
118
|
+
* @param {Particle} particle The particle being removed.
|
|
119
|
+
*/
|
|
120
|
+
this.onParticleRemoved = (particle) => {
|
|
121
|
+
for (let i = 0; i < this.behaviours.length; ++i) {
|
|
122
|
+
if (typeof this.behaviours[i].onParticleRemoved === 'function') {
|
|
123
|
+
this.behaviours[i].onParticleRemoved(particle);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
};
|
|
114
127
|
}
|
|
115
128
|
}
|
|
116
129
|
//# sourceMappingURL=EmitterBehaviours.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmitterBehaviours.js","sourceRoot":"","sources":["../../../src/lib/behaviour/EmitterBehaviours.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EmitterBehaviours.js","sourceRoot":"","sources":["../../../src/lib/behaviour/EmitterBehaviours.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Behaviour } from './index';
|
|
2
|
+
import Particle from '../Particle';
|
|
3
|
+
import { Point } from '../util';
|
|
4
|
+
/**
|
|
5
|
+
* MoveToPointBehaviour makes particles move towards a specified target point
|
|
6
|
+
* when active, with options for different path types and easing.
|
|
7
|
+
* @extends Behaviour
|
|
8
|
+
*/
|
|
9
|
+
export default class MoveToPointBehaviour extends Behaviour {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* When true, particles will move towards the targetPoint.
|
|
13
|
+
*/
|
|
14
|
+
active: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* The target (x, y) coordinates for the particles.
|
|
17
|
+
*/
|
|
18
|
+
targetPoint: Point;
|
|
19
|
+
/**
|
|
20
|
+
* The speed at which particles move towards the target point (units per second).
|
|
21
|
+
*/
|
|
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;
|
|
33
|
+
/**
|
|
34
|
+
* Priority determines execution order. A lower number means it runs later.
|
|
35
|
+
* This should run after default position behaviours to override the particle's position.
|
|
36
|
+
* PositionBehaviour is 100, EmitDirection is 0. Set to -10 to run after them.
|
|
37
|
+
*/
|
|
38
|
+
priority: number;
|
|
39
|
+
/**
|
|
40
|
+
* Type of path the particle will follow.
|
|
41
|
+
* 'linear': Straight line to the target.
|
|
42
|
+
* 'sinusoidal': Moves towards the target with a sine wave perpendicular to the path.
|
|
43
|
+
*/
|
|
44
|
+
pathType: 'linear' | 'sinusoidal';
|
|
45
|
+
/**
|
|
46
|
+
* Amplitude of the sine wave for 'sinusoidal' pathType.
|
|
47
|
+
*/
|
|
48
|
+
sinusoidalAmplitude: number;
|
|
49
|
+
/**
|
|
50
|
+
* Frequency of the sine wave for 'sinusoidal' pathType (in radians per unit of pathTime).
|
|
51
|
+
*/
|
|
52
|
+
sinusoidalFrequency: number;
|
|
53
|
+
/**
|
|
54
|
+
* Easing function to apply to the particle's movement towards the target.
|
|
55
|
+
* Examples: 'linear', 'back.in', 'back.out', 'back.inOut', 'power1.in', 'power1.out', 'power1.inOut',
|
|
56
|
+
* 'bounce.in', 'bounce.out', 'bounce.inOut', 'elastic.in', 'elastic.out', 'elastic.inOut', 'steps'
|
|
57
|
+
*/
|
|
58
|
+
pathEasing: string;
|
|
59
|
+
private _wasActiveLastFrame;
|
|
60
|
+
private _lastTargetPoint;
|
|
61
|
+
constructor();
|
|
62
|
+
init: (particle: Particle) => void;
|
|
63
|
+
private _initializeParticleForMove;
|
|
64
|
+
apply: (particle: Particle, deltaTime: number) => void;
|
|
65
|
+
/**
|
|
66
|
+
* Gets the name of the behaviour.
|
|
67
|
+
* @returns {string} - The name of the behaviour.
|
|
68
|
+
*/
|
|
69
|
+
onParticleRemoved: (particle: Particle) => void;
|
|
70
|
+
private _applyEasing;
|
|
71
|
+
private _easeBackInOut;
|
|
72
|
+
private _easeBackIn;
|
|
73
|
+
private _easeBackOut;
|
|
74
|
+
private _easePower1In;
|
|
75
|
+
private _easePower1Out;
|
|
76
|
+
private _easePower1InOut;
|
|
77
|
+
private _easeBounceIn;
|
|
78
|
+
private _easeBounceOut;
|
|
79
|
+
private _easeBounceInOut;
|
|
80
|
+
private _easeElasticIn;
|
|
81
|
+
private _easeElasticOut;
|
|
82
|
+
private _easeElasticInOut;
|
|
83
|
+
private _easeSteps;
|
|
84
|
+
getName(): string;
|
|
85
|
+
/**
|
|
86
|
+
* Gets the properties of the behaviour for configuration.
|
|
87
|
+
* @returns {object} - The properties of the behaviour.
|
|
88
|
+
*/
|
|
89
|
+
getProps(): {
|
|
90
|
+
enabled: boolean;
|
|
91
|
+
active: boolean;
|
|
92
|
+
targetPoint: {
|
|
93
|
+
x: number;
|
|
94
|
+
y: number;
|
|
95
|
+
};
|
|
96
|
+
speed: number;
|
|
97
|
+
priority: number;
|
|
98
|
+
killOnArrival: boolean;
|
|
99
|
+
resetMaxLifeTime: boolean;
|
|
100
|
+
arrivalThreshold: number;
|
|
101
|
+
pathType: "linear" | "sinusoidal";
|
|
102
|
+
sinusoidalAmplitude: number;
|
|
103
|
+
sinusoidalFrequency: number;
|
|
104
|
+
pathEasing: string;
|
|
105
|
+
name: string;
|
|
106
|
+
};
|
|
107
|
+
}
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import { Behaviour, BehaviourNames } from './index';
|
|
2
|
+
import { Point } from '../util';
|
|
3
|
+
/**
|
|
4
|
+
* MoveToPointBehaviour makes particles move towards a specified target point
|
|
5
|
+
* when active, with options for different path types and easing.
|
|
6
|
+
* @extends Behaviour
|
|
7
|
+
*/
|
|
8
|
+
export default class MoveToPointBehaviour extends Behaviour {
|
|
9
|
+
constructor() {
|
|
10
|
+
super();
|
|
11
|
+
this.enabled = true;
|
|
12
|
+
/**
|
|
13
|
+
* When true, particles will move towards the targetPoint.
|
|
14
|
+
*/
|
|
15
|
+
this.active = false;
|
|
16
|
+
/**
|
|
17
|
+
* The target (x, y) coordinates for the particles.
|
|
18
|
+
*/
|
|
19
|
+
this.targetPoint = new Point(0, 0);
|
|
20
|
+
/**
|
|
21
|
+
* The speed at which particles move towards the target point (units per second).
|
|
22
|
+
*/
|
|
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;
|
|
34
|
+
/**
|
|
35
|
+
* Priority determines execution order. A lower number means it runs later.
|
|
36
|
+
* This should run after default position behaviours to override the particle's position.
|
|
37
|
+
* PositionBehaviour is 100, EmitDirection is 0. Set to -10 to run after them.
|
|
38
|
+
*/
|
|
39
|
+
this.priority = -10;
|
|
40
|
+
/**
|
|
41
|
+
* Type of path the particle will follow.
|
|
42
|
+
* 'linear': Straight line to the target.
|
|
43
|
+
* 'sinusoidal': Moves towards the target with a sine wave perpendicular to the path.
|
|
44
|
+
*/
|
|
45
|
+
this.pathType = 'linear';
|
|
46
|
+
/**
|
|
47
|
+
* Amplitude of the sine wave for 'sinusoidal' pathType.
|
|
48
|
+
*/
|
|
49
|
+
this.sinusoidalAmplitude = 20;
|
|
50
|
+
/**
|
|
51
|
+
* Frequency of the sine wave for 'sinusoidal' pathType (in radians per unit of pathTime).
|
|
52
|
+
*/
|
|
53
|
+
this.sinusoidalFrequency = 5;
|
|
54
|
+
/**
|
|
55
|
+
* Easing function to apply to the particle's movement towards the target.
|
|
56
|
+
* Examples: 'linear', 'back.in', 'back.out', 'back.inOut', 'power1.in', 'power1.out', 'power1.inOut',
|
|
57
|
+
* 'bounce.in', 'bounce.out', 'bounce.inOut', 'elastic.in', 'elastic.out', 'elastic.inOut', 'steps'
|
|
58
|
+
*/
|
|
59
|
+
this.pathEasing = 'linear'; // Default to linear
|
|
60
|
+
// Internal state
|
|
61
|
+
this._wasActiveLastFrame = new Map();
|
|
62
|
+
this._lastTargetPoint = new Point(0, 0);
|
|
63
|
+
this.init = (particle) => {
|
|
64
|
+
// Particle properties are reset in Particle.reset()
|
|
65
|
+
};
|
|
66
|
+
this.apply = (particle, deltaTime) => {
|
|
67
|
+
var _a;
|
|
68
|
+
if (!this.enabled) {
|
|
69
|
+
if (this._wasActiveLastFrame.has(particle.uid)) {
|
|
70
|
+
this._wasActiveLastFrame.delete(particle.uid);
|
|
71
|
+
}
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const isActiveThisFrame = this.active;
|
|
75
|
+
const wasActivePreviously = (_a = this._wasActiveLastFrame.get(particle.uid)) !== null && _a !== void 0 ? _a : false;
|
|
76
|
+
const targetChanged = this.targetPoint.x !== this._lastTargetPoint.x || this.targetPoint.y !== this._lastTargetPoint.y;
|
|
77
|
+
if (targetChanged) {
|
|
78
|
+
this._lastTargetPoint.copyFrom(this.targetPoint);
|
|
79
|
+
}
|
|
80
|
+
if (!isActiveThisFrame) {
|
|
81
|
+
if (wasActivePreviously) {
|
|
82
|
+
this._wasActiveLastFrame.set(particle.uid, false);
|
|
83
|
+
particle.moveToPointAccumulatedLinearDistance = 0;
|
|
84
|
+
particle.moveToPointTotalDistance = 0;
|
|
85
|
+
particle.pathTime = 0;
|
|
86
|
+
}
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (!wasActivePreviously || (isActiveThisFrame && targetChanged)) {
|
|
90
|
+
this._initializeParticleForMove(particle);
|
|
91
|
+
}
|
|
92
|
+
this._wasActiveLastFrame.set(particle.uid, true);
|
|
93
|
+
// If already very close to the target at the start of this frame (before any movement this frame)
|
|
94
|
+
// Or if the total distance to cover was 0 from the start
|
|
95
|
+
if (particle.moveToPointTotalDistance < this.arrivalThreshold) {
|
|
96
|
+
particle.x = this.targetPoint.x;
|
|
97
|
+
particle.y = this.targetPoint.y;
|
|
98
|
+
if (this.killOnArrival) {
|
|
99
|
+
if (particle.maxLifeTime > 0) {
|
|
100
|
+
particle.lifeTime = particle.maxLifeTime;
|
|
101
|
+
if (this.resetMaxLifeTime)
|
|
102
|
+
particle.maxLifeTime = 0;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
particle.movement.x = particle.x;
|
|
106
|
+
particle.movement.y = particle.y;
|
|
107
|
+
return; // Already arrived or no distance to cover
|
|
108
|
+
}
|
|
109
|
+
particle.velocity.set(0, 0);
|
|
110
|
+
particle.acceleration.set(0, 0);
|
|
111
|
+
const moveAmount = this.speed * deltaTime;
|
|
112
|
+
particle.moveToPointAccumulatedLinearDistance += moveAmount;
|
|
113
|
+
let normalizedProgress = particle.moveToPointTotalDistance > 0
|
|
114
|
+
? particle.moveToPointAccumulatedLinearDistance / particle.moveToPointTotalDistance
|
|
115
|
+
: 1;
|
|
116
|
+
// Ensure progress doesn't exceed 1.0 before easing, which could cause overshooting with certain eases.
|
|
117
|
+
normalizedProgress = Math.min(1.0, normalizedProgress);
|
|
118
|
+
const easedProgress = this._applyEasing(normalizedProgress, this.pathEasing);
|
|
119
|
+
// Calculate the position on the straight line path based on eased progress
|
|
120
|
+
const currentXOnLine = particle.moveToPointInitialX + (this.targetPoint.x - particle.moveToPointInitialX) * easedProgress;
|
|
121
|
+
const currentYOnLine = particle.moveToPointInitialY + (this.targetPoint.y - particle.moveToPointInitialY) * easedProgress;
|
|
122
|
+
// Apply sinusoidal offset if applicable and the linear journey is not yet complete
|
|
123
|
+
if (this.pathType === 'sinusoidal' && normalizedProgress < 1.0) {
|
|
124
|
+
const dirToTargetX = (this.targetPoint.x - particle.moveToPointInitialX) / particle.moveToPointTotalDistance;
|
|
125
|
+
const dirToTargetY = (this.targetPoint.y - particle.moveToPointInitialY) / particle.moveToPointTotalDistance;
|
|
126
|
+
const perpDx = -dirToTargetY; // Perpendicular vector component
|
|
127
|
+
const perpDy = dirToTargetX; // Perpendicular vector component
|
|
128
|
+
// The sinusoidal offset should diminish as it approaches the target
|
|
129
|
+
// We can scale the amplitude by (1 - easedProgress) or (1 - normalizedProgress)
|
|
130
|
+
// Using (1 - normalizedProgress) makes the wave die out more linearly with distance.
|
|
131
|
+
const diminishingFactor = Math.max(0, 1 - normalizedProgress); // Ensure factor is not negative
|
|
132
|
+
const currentAmplitude = this.sinusoidalAmplitude * diminishingFactor;
|
|
133
|
+
const sinMagnitude = currentAmplitude * Math.sin(particle.pathTime * this.sinusoidalFrequency);
|
|
134
|
+
particle.x = currentXOnLine + perpDx * sinMagnitude;
|
|
135
|
+
particle.y = currentYOnLine + perpDy * sinMagnitude;
|
|
136
|
+
particle.pathTime += deltaTime; // Advance sinusoidal path time
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// For linear path, or if sinusoidal path has "completed" its linear component
|
|
140
|
+
particle.x = currentXOnLine;
|
|
141
|
+
particle.y = currentYOnLine;
|
|
142
|
+
}
|
|
143
|
+
// Final Arrival Snap and State Reset
|
|
144
|
+
// This check is based on the linear progress.
|
|
145
|
+
if (normalizedProgress >= 1.0) {
|
|
146
|
+
particle.x = this.targetPoint.x; // Snap precisely to target
|
|
147
|
+
particle.y = this.targetPoint.y;
|
|
148
|
+
particle.moveToPointAccumulatedLinearDistance = 0;
|
|
149
|
+
particle.moveToPointTotalDistance = 0;
|
|
150
|
+
particle.pathTime = 0;
|
|
151
|
+
if (this.killOnArrival) {
|
|
152
|
+
if (particle.maxLifeTime > 0) {
|
|
153
|
+
particle.lifeTime = particle.maxLifeTime;
|
|
154
|
+
if (this.resetMaxLifeTime)
|
|
155
|
+
particle.maxLifeTime = 0;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
particle.movement.x = particle.x;
|
|
160
|
+
particle.movement.y = particle.y;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Gets the name of the behaviour.
|
|
164
|
+
* @returns {string} - The name of the behaviour.
|
|
165
|
+
*/
|
|
166
|
+
this.onParticleRemoved = (particle) => {
|
|
167
|
+
this._wasActiveLastFrame.delete(particle.uid);
|
|
168
|
+
};
|
|
169
|
+
this.targetPoint = new Point(0, 0);
|
|
170
|
+
this._lastTargetPoint.copyFrom(this.targetPoint);
|
|
171
|
+
}
|
|
172
|
+
_initializeParticleForMove(particle) {
|
|
173
|
+
particle.moveToPointInitialX = particle.x;
|
|
174
|
+
particle.moveToPointInitialY = particle.y;
|
|
175
|
+
const dx = this.targetPoint.x - particle.moveToPointInitialX;
|
|
176
|
+
const dy = this.targetPoint.y - particle.moveToPointInitialY;
|
|
177
|
+
particle.moveToPointTotalDistance = Math.sqrt(dx * dx + dy * dy);
|
|
178
|
+
particle.moveToPointAccumulatedLinearDistance = 0;
|
|
179
|
+
particle.pathTime = 0; // Reset for sinusoidal path as well
|
|
180
|
+
}
|
|
181
|
+
_applyEasing(t, easeType) {
|
|
182
|
+
// Ensure t is clamped between 0 and 1 before applying easing
|
|
183
|
+
const clampedT = Math.max(0, Math.min(1, t));
|
|
184
|
+
switch (easeType) {
|
|
185
|
+
case 'back.in':
|
|
186
|
+
return this._easeBackIn(clampedT);
|
|
187
|
+
case 'back.out':
|
|
188
|
+
return this._easeBackOut(clampedT);
|
|
189
|
+
case 'back.inOut':
|
|
190
|
+
return this._easeBackInOut(clampedT);
|
|
191
|
+
case 'power1.in':
|
|
192
|
+
return this._easePower1In(clampedT);
|
|
193
|
+
case 'power1.out':
|
|
194
|
+
return this._easePower1Out(clampedT);
|
|
195
|
+
case 'power1.inOut':
|
|
196
|
+
return this._easePower1InOut(clampedT);
|
|
197
|
+
case 'bounce.in':
|
|
198
|
+
return this._easeBounceIn(clampedT);
|
|
199
|
+
case 'bounce.out':
|
|
200
|
+
return this._easeBounceOut(clampedT);
|
|
201
|
+
case 'bounce.inOut':
|
|
202
|
+
return this._easeBounceInOut(clampedT);
|
|
203
|
+
case 'elastic.in':
|
|
204
|
+
return this._easeElasticIn(clampedT);
|
|
205
|
+
case 'elastic.out':
|
|
206
|
+
return this._easeElasticOut(clampedT);
|
|
207
|
+
case 'elastic.inOut':
|
|
208
|
+
return this._easeElasticInOut(clampedT);
|
|
209
|
+
case 'steps':
|
|
210
|
+
return this._easeSteps(clampedT);
|
|
211
|
+
case 'linear':
|
|
212
|
+
default:
|
|
213
|
+
return clampedT;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
_easeBackInOut(t, c1 = 1.70158, c2 = c1 * 1.525) {
|
|
217
|
+
return t < 0.5
|
|
218
|
+
? (Math.pow(2 * t, 2) * ((c2 + 1) * 2 * t - c2)) / 2
|
|
219
|
+
: (Math.pow(2 * t - 2, 2) * ((c2 + 1) * (t * 2 - 2) + c2) + 2) / 2;
|
|
220
|
+
}
|
|
221
|
+
_easeBackIn(t, c1 = 1.70158) {
|
|
222
|
+
return t * t * ((c1 + 1) * t - c1);
|
|
223
|
+
}
|
|
224
|
+
_easeBackOut(t, c1 = 1.70158) {
|
|
225
|
+
const tInv = t - 1;
|
|
226
|
+
return tInv * tInv * ((c1 + 1) * tInv + c1) + 1;
|
|
227
|
+
}
|
|
228
|
+
_easePower1In(t) {
|
|
229
|
+
return t;
|
|
230
|
+
}
|
|
231
|
+
_easePower1Out(t) {
|
|
232
|
+
return t; // Linear
|
|
233
|
+
}
|
|
234
|
+
_easePower1InOut(t) {
|
|
235
|
+
return t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2;
|
|
236
|
+
}
|
|
237
|
+
_easeBounceIn(t) {
|
|
238
|
+
return 1 - this._easeBounceOut(1 - t);
|
|
239
|
+
}
|
|
240
|
+
_easeBounceOut(t) {
|
|
241
|
+
const n1 = 7.5625;
|
|
242
|
+
const d1 = 2.75;
|
|
243
|
+
if (t < 1 / d1) {
|
|
244
|
+
return n1 * t * t;
|
|
245
|
+
}
|
|
246
|
+
else if (t < 2 / d1) {
|
|
247
|
+
return n1 * (t -= 1.5 / d1) * t + 0.75;
|
|
248
|
+
}
|
|
249
|
+
else if (t < 2.5 / d1) {
|
|
250
|
+
return n1 * (t -= 2.25 / d1) * t + 0.9375;
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
return n1 * (t -= 2.625 / d1) * t + 0.984375;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
_easeBounceInOut(t) {
|
|
257
|
+
return t < 0.5 ? (1 - this._easeBounceOut(1 - 2 * t)) / 2 : (1 + this._easeBounceOut(2 * t - 1)) / 2;
|
|
258
|
+
}
|
|
259
|
+
_easeElasticIn(t, amplitude = 1, period = 0.3) {
|
|
260
|
+
if (t === 0)
|
|
261
|
+
return 0;
|
|
262
|
+
if (t === 1)
|
|
263
|
+
return 1;
|
|
264
|
+
const s = (period / (2 * Math.PI)) * Math.asin(1 / amplitude);
|
|
265
|
+
return -(amplitude * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t - s) * (2 * Math.PI)) / period));
|
|
266
|
+
}
|
|
267
|
+
_easeElasticOut(t, amplitude = 1, period = 0.3) {
|
|
268
|
+
if (t === 0)
|
|
269
|
+
return 0;
|
|
270
|
+
if (t === 1)
|
|
271
|
+
return 1;
|
|
272
|
+
const s = (period / (2 * Math.PI)) * Math.asin(1 / amplitude);
|
|
273
|
+
return amplitude * Math.pow(2, -10 * t) * Math.sin(((t - s) * (2 * Math.PI)) / period) + 1;
|
|
274
|
+
}
|
|
275
|
+
_easeElasticInOut(t, amplitude = 1, period = 0.45) {
|
|
276
|
+
if (t === 0)
|
|
277
|
+
return 0;
|
|
278
|
+
if (t === 1)
|
|
279
|
+
return 1;
|
|
280
|
+
const s = (period / (2 * Math.PI)) * Math.asin(1 / amplitude);
|
|
281
|
+
// tslint:disable-next-line:no-conditional-assignment
|
|
282
|
+
if ((t *= 2) < 1) {
|
|
283
|
+
return -0.5 * (amplitude * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t - s) * (2 * Math.PI)) / period));
|
|
284
|
+
}
|
|
285
|
+
return amplitude * Math.pow(2, -10 * (t -= 1)) * Math.sin(((t - s) * (2 * Math.PI)) / period) * 0.5 + 1;
|
|
286
|
+
}
|
|
287
|
+
_easeSteps(t, numSteps = 12) {
|
|
288
|
+
const stepSize = 1 / numSteps;
|
|
289
|
+
const stepIndex = Math.floor(t / stepSize);
|
|
290
|
+
return Math.min(stepIndex * stepSize, 1.0);
|
|
291
|
+
}
|
|
292
|
+
getName() {
|
|
293
|
+
return BehaviourNames.MOVE_TO_POINT_BEHAVIOUR;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Gets the properties of the behaviour for configuration.
|
|
297
|
+
* @returns {object} - The properties of the behaviour.
|
|
298
|
+
*/
|
|
299
|
+
getProps() {
|
|
300
|
+
return {
|
|
301
|
+
enabled: this.enabled,
|
|
302
|
+
active: this.active,
|
|
303
|
+
targetPoint: { x: this.targetPoint.x, y: this.targetPoint.y },
|
|
304
|
+
speed: this.speed,
|
|
305
|
+
priority: this.priority,
|
|
306
|
+
killOnArrival: this.killOnArrival,
|
|
307
|
+
resetMaxLifeTime: this.resetMaxLifeTime,
|
|
308
|
+
arrivalThreshold: this.arrivalThreshold,
|
|
309
|
+
pathType: this.pathType,
|
|
310
|
+
sinusoidalAmplitude: this.sinusoidalAmplitude,
|
|
311
|
+
sinusoidalFrequency: this.sinusoidalFrequency,
|
|
312
|
+
pathEasing: this.pathEasing,
|
|
313
|
+
name: this.getName(),
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=MoveToPointBehaviour.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MoveToPointBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/MoveToPointBehaviour.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,20 +110,20 @@ export default class PositionBehaviour extends Behaviour {
|
|
|
110
110
|
y: number;
|
|
111
111
|
};
|
|
112
112
|
thereDuration: {
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
min: number;
|
|
114
|
+
max: number;
|
|
115
115
|
};
|
|
116
116
|
thereAmplitude: {
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
min: number;
|
|
118
|
+
max: number;
|
|
119
119
|
};
|
|
120
120
|
backDuration: {
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
min: number;
|
|
122
|
+
max: number;
|
|
123
123
|
};
|
|
124
124
|
backAmplitude: {
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
min: number;
|
|
126
|
+
max: number;
|
|
127
127
|
};
|
|
128
128
|
warp: boolean;
|
|
129
129
|
sinX: boolean;
|
|
@@ -428,20 +428,20 @@ export default class PositionBehaviour extends Behaviour {
|
|
|
428
428
|
y: this.pointB.y,
|
|
429
429
|
},
|
|
430
430
|
thereDuration: {
|
|
431
|
-
|
|
432
|
-
|
|
431
|
+
min: this.thereDuration.min,
|
|
432
|
+
max: this.thereDuration.max,
|
|
433
433
|
},
|
|
434
434
|
thereAmplitude: {
|
|
435
|
-
|
|
436
|
-
|
|
435
|
+
min: this.thereAmplitude.min,
|
|
436
|
+
max: this.thereAmplitude.max,
|
|
437
437
|
},
|
|
438
438
|
backDuration: {
|
|
439
|
-
|
|
440
|
-
|
|
439
|
+
min: this.backDuration.min,
|
|
440
|
+
max: this.backDuration.max,
|
|
441
441
|
},
|
|
442
442
|
backAmplitude: {
|
|
443
|
-
|
|
444
|
-
|
|
443
|
+
min: this.backAmplitude.min,
|
|
444
|
+
max: this.backAmplitude.max,
|
|
445
445
|
},
|
|
446
446
|
warp: this.warp,
|
|
447
447
|
sinX: this.sinX,
|