custom-pixi-particles 8.0.1 → 8.1.1
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/README.md +2 -1
- package/package.json +5 -4
- package/dist/index.d.ts +0 -15
- package/dist/index.js +0 -45
- package/dist/index.js.map +0 -1
- package/dist/lib/Model.d.ts +0 -32
- package/dist/lib/Model.js +0 -44
- package/dist/lib/Model.js.map +0 -1
- package/dist/lib/Particle.d.ts +0 -234
- package/dist/lib/Particle.js +0 -201
- package/dist/lib/Particle.js.map +0 -1
- package/dist/lib/ParticlePool.d.ts +0 -37
- package/dist/lib/ParticlePool.js +0 -56
- package/dist/lib/ParticlePool.js.map +0 -1
- package/dist/lib/behaviour/AngularVelocityBehaviour.d.ts +0 -61
- package/dist/lib/behaviour/AngularVelocityBehaviour.js +0 -118
- package/dist/lib/behaviour/AngularVelocityBehaviour.js.map +0 -1
- package/dist/lib/behaviour/AttractionRepulsionBehaviour.d.ts +0 -42
- package/dist/lib/behaviour/AttractionRepulsionBehaviour.js +0 -78
- package/dist/lib/behaviour/AttractionRepulsionBehaviour.js.map +0 -1
- package/dist/lib/behaviour/Behaviour.d.ts +0 -33
- package/dist/lib/behaviour/Behaviour.js +0 -45
- package/dist/lib/behaviour/Behaviour.js.map +0 -1
- package/dist/lib/behaviour/BehaviourNames.d.ts +0 -22
- package/dist/lib/behaviour/BehaviourNames.js +0 -23
- package/dist/lib/behaviour/BehaviourNames.js.map +0 -1
- package/dist/lib/behaviour/CollisionBehaviour.d.ts +0 -86
- package/dist/lib/behaviour/CollisionBehaviour.js +0 -140
- package/dist/lib/behaviour/CollisionBehaviour.js.map +0 -1
- package/dist/lib/behaviour/ColorBehaviour.d.ts +0 -67
- package/dist/lib/behaviour/ColorBehaviour.js +0 -193
- package/dist/lib/behaviour/ColorBehaviour.js.map +0 -1
- package/dist/lib/behaviour/EmitDirectionBehaviour.d.ts +0 -52
- package/dist/lib/behaviour/EmitDirectionBehaviour.js +0 -105
- package/dist/lib/behaviour/EmitDirectionBehaviour.js.map +0 -1
- package/dist/lib/behaviour/EmitterBehaviours.d.ts +0 -69
- package/dist/lib/behaviour/EmitterBehaviours.js +0 -116
- package/dist/lib/behaviour/EmitterBehaviours.js.map +0 -1
- package/dist/lib/behaviour/ForceFieldsBehaviour.d.ts +0 -53
- package/dist/lib/behaviour/ForceFieldsBehaviour.js +0 -80
- package/dist/lib/behaviour/ForceFieldsBehaviour.js.map +0 -1
- package/dist/lib/behaviour/GroupingBehaviour.d.ts +0 -57
- package/dist/lib/behaviour/GroupingBehaviour.js +0 -143
- package/dist/lib/behaviour/GroupingBehaviour.js.map +0 -1
- package/dist/lib/behaviour/LifeBehaviour.d.ts +0 -47
- package/dist/lib/behaviour/LifeBehaviour.js +0 -65
- package/dist/lib/behaviour/LifeBehaviour.js.map +0 -1
- package/dist/lib/behaviour/LightEffectBehaviour.d.ts +0 -59
- package/dist/lib/behaviour/LightEffectBehaviour.js +0 -94
- package/dist/lib/behaviour/LightEffectBehaviour.js.map +0 -1
- package/dist/lib/behaviour/NoiseBasedMotionBehaviour.d.ts +0 -35
- package/dist/lib/behaviour/NoiseBasedMotionBehaviour.js +0 -93
- package/dist/lib/behaviour/NoiseBasedMotionBehaviour.js.map +0 -1
- package/dist/lib/behaviour/PositionBehaviour.d.ts +0 -164
- package/dist/lib/behaviour/PositionBehaviour.js +0 -484
- package/dist/lib/behaviour/PositionBehaviour.js.map +0 -1
- package/dist/lib/behaviour/RotationBehaviour.d.ts +0 -59
- package/dist/lib/behaviour/RotationBehaviour.js +0 -100
- package/dist/lib/behaviour/RotationBehaviour.js.map +0 -1
- package/dist/lib/behaviour/SizeBehaviour.d.ts +0 -61
- package/dist/lib/behaviour/SizeBehaviour.js +0 -156
- package/dist/lib/behaviour/SizeBehaviour.js.map +0 -1
- package/dist/lib/behaviour/SoundReactiveBehaviour.d.ts +0 -58
- package/dist/lib/behaviour/SoundReactiveBehaviour.js +0 -132
- package/dist/lib/behaviour/SoundReactiveBehaviour.js.map +0 -1
- package/dist/lib/behaviour/SpawnBehaviour.d.ts +0 -89
- package/dist/lib/behaviour/SpawnBehaviour.js +0 -705
- package/dist/lib/behaviour/SpawnBehaviour.js.map +0 -1
- package/dist/lib/behaviour/StretchBehaviour.d.ts +0 -30
- package/dist/lib/behaviour/StretchBehaviour.js +0 -59
- package/dist/lib/behaviour/StretchBehaviour.js.map +0 -1
- package/dist/lib/behaviour/TemperatureBehaviour.d.ts +0 -47
- package/dist/lib/behaviour/TemperatureBehaviour.js +0 -64
- package/dist/lib/behaviour/TemperatureBehaviour.js.map +0 -1
- package/dist/lib/behaviour/TimelineBehaviour.d.ts +0 -73
- package/dist/lib/behaviour/TimelineBehaviour.js +0 -100
- package/dist/lib/behaviour/TimelineBehaviour.js.map +0 -1
- package/dist/lib/behaviour/TurbulenceBehaviour.d.ts +0 -73
- package/dist/lib/behaviour/TurbulenceBehaviour.js +0 -133
- package/dist/lib/behaviour/TurbulenceBehaviour.js.map +0 -1
- package/dist/lib/behaviour/index.d.ts +0 -23
- package/dist/lib/behaviour/index.js +0 -24
- package/dist/lib/behaviour/index.js.map +0 -1
- package/dist/lib/customPixiParticlesSettingsInterface.d.ts +0 -19
- package/dist/lib/customPixiParticlesSettingsInterface.js +0 -2
- package/dist/lib/customPixiParticlesSettingsInterface.js.map +0 -1
- package/dist/lib/emission/AbstractEmission.d.ts +0 -30
- package/dist/lib/emission/AbstractEmission.js +0 -39
- package/dist/lib/emission/AbstractEmission.js.map +0 -1
- package/dist/lib/emission/EmissionTypes.d.ts +0 -6
- package/dist/lib/emission/EmissionTypes.js +0 -6
- package/dist/lib/emission/EmissionTypes.js.map +0 -1
- package/dist/lib/emission/RandomEmission.d.ts +0 -44
- package/dist/lib/emission/RandomEmission.js +0 -66
- package/dist/lib/emission/RandomEmission.js.map +0 -1
- package/dist/lib/emission/StandardEmission.d.ts +0 -62
- package/dist/lib/emission/StandardEmission.js +0 -87
- package/dist/lib/emission/StandardEmission.js.map +0 -1
- package/dist/lib/emission/UniformEmission.d.ts +0 -56
- package/dist/lib/emission/UniformEmission.js +0 -83
- package/dist/lib/emission/UniformEmission.js.map +0 -1
- package/dist/lib/emission/index.d.ts +0 -6
- package/dist/lib/emission/index.js +0 -7
- package/dist/lib/emission/index.js.map +0 -1
- package/dist/lib/emitter/Duration.d.ts +0 -27
- package/dist/lib/emitter/Duration.js +0 -41
- package/dist/lib/emitter/Duration.js.map +0 -1
- package/dist/lib/emitter/Emitter.d.ts +0 -116
- package/dist/lib/emitter/Emitter.js +0 -240
- package/dist/lib/emitter/Emitter.js.map +0 -1
- package/dist/lib/emitter/index.d.ts +0 -3
- package/dist/lib/emitter/index.js +0 -4
- package/dist/lib/emitter/index.js.map +0 -1
- package/dist/lib/index.d.ts +0 -20
- package/dist/lib/index.js +0 -21
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/parser/BehaviourParser.d.ts +0 -21
- package/dist/lib/parser/BehaviourParser.js +0 -72
- package/dist/lib/parser/BehaviourParser.js.map +0 -1
- package/dist/lib/parser/CompatibilityHelper.d.ts +0 -12
- package/dist/lib/parser/CompatibilityHelper.js +0 -19
- package/dist/lib/parser/CompatibilityHelper.js.map +0 -1
- package/dist/lib/parser/EmitControllerParser.d.ts +0 -27
- package/dist/lib/parser/EmitControllerParser.js +0 -39
- package/dist/lib/parser/EmitControllerParser.js.map +0 -1
- package/dist/lib/parser/EmitterParser.d.ts +0 -67
- package/dist/lib/parser/EmitterParser.js +0 -168
- package/dist/lib/parser/EmitterParser.js.map +0 -1
- package/dist/lib/parser/index.d.ts +0 -5
- package/dist/lib/parser/index.js +0 -6
- package/dist/lib/parser/index.js.map +0 -1
- package/dist/lib/pixi/Renderer.d.ts +0 -125
- package/dist/lib/pixi/Renderer.js +0 -560
- package/dist/lib/pixi/Renderer.js.map +0 -1
- package/dist/lib/pixi/TestRenderer.d.ts +0 -125
- package/dist/lib/pixi/TestRenderer.js +0 -560
- package/dist/lib/pixi/TestRenderer.js.map +0 -1
- package/dist/lib/util/Color.d.ts +0 -133
- package/dist/lib/util/Color.js +0 -173
- package/dist/lib/util/Color.js.map +0 -1
- package/dist/lib/util/List.d.ts +0 -49
- package/dist/lib/util/List.js +0 -87
- package/dist/lib/util/List.js.map +0 -1
- package/dist/lib/util/MinMax.d.ts +0 -34
- package/dist/lib/util/MinMax.js +0 -46
- package/dist/lib/util/MinMax.js.map +0 -1
- package/dist/lib/util/Point.d.ts +0 -34
- package/dist/lib/util/Point.js +0 -46
- package/dist/lib/util/Point.js.map +0 -1
- package/dist/lib/util/Random.d.ts +0 -24
- package/dist/lib/util/Random.js +0 -30
- package/dist/lib/util/Random.js.map +0 -1
- package/dist/lib/util/ThereBack.d.ts +0 -14
- package/dist/lib/util/ThereBack.js +0 -23
- package/dist/lib/util/ThereBack.js.map +0 -1
- package/dist/lib/util/index.d.ts +0 -5
- package/dist/lib/util/index.js +0 -6
- package/dist/lib/util/index.js.map +0 -1
- package/dist/lib/util/maths.d.ts +0 -10
- package/dist/lib/util/maths.js +0 -13
- package/dist/lib/util/maths.js.map +0 -1
- package/dist/lib/util/turbulencePool.d.ts +0 -4
- package/dist/lib/util/turbulencePool.js +0 -7
- package/dist/lib/util/turbulencePool.js.map +0 -1
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
// tslint:disable:prefer-for-of
|
|
2
|
-
/**
|
|
3
|
-
* EmitterBehaviours class manages the behaviour of particles
|
|
4
|
-
*/
|
|
5
|
-
export default class EmitterBehaviours {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.behaviours = [];
|
|
8
|
-
/**
|
|
9
|
-
* Gets all the enabled behaviours
|
|
10
|
-
*
|
|
11
|
-
* @return {any[]} The enabled behaviours
|
|
12
|
-
*/
|
|
13
|
-
this.getAll = () => {
|
|
14
|
-
return this.behaviours.filter((behaviour) => {
|
|
15
|
-
return behaviour.enabled;
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* Clears all the stored behaviours
|
|
20
|
-
*/
|
|
21
|
-
this.clear = () => {
|
|
22
|
-
this.behaviours = [];
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Adds a behaviour
|
|
26
|
-
*
|
|
27
|
-
* @param {any} behaviour The behaviour to add
|
|
28
|
-
*
|
|
29
|
-
* @return {any} The added behaviour
|
|
30
|
-
*/
|
|
31
|
-
this.add = (behaviour) => {
|
|
32
|
-
if (this.getByName(behaviour.getName()) !== null) {
|
|
33
|
-
throw new Error('Emitter duplicate');
|
|
34
|
-
}
|
|
35
|
-
this.behaviours.push(behaviour);
|
|
36
|
-
this.behaviours.sort((a, b) => {
|
|
37
|
-
return b.priority - a.priority;
|
|
38
|
-
});
|
|
39
|
-
return behaviour;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Checks if there are no behaviours stored
|
|
43
|
-
*
|
|
44
|
-
* @return {boolean} True if there are no behaviours stored, false otherwise
|
|
45
|
-
*/
|
|
46
|
-
this.isEmpty = () => {
|
|
47
|
-
return this.getAll().length === 0;
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Gets a behaviour by name
|
|
51
|
-
*
|
|
52
|
-
* @param {string} name The name of the behaviour to get
|
|
53
|
-
*
|
|
54
|
-
* @return {any | null} The behaviour with the given name or null if not found
|
|
55
|
-
*/
|
|
56
|
-
this.getByName = (name) => {
|
|
57
|
-
for (let i = 0; i < this.behaviours.length; ++i) {
|
|
58
|
-
if (this.behaviours[i].getName() === name) {
|
|
59
|
-
return this.behaviours[i];
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return null;
|
|
63
|
-
};
|
|
64
|
-
/**
|
|
65
|
-
* Removes a behaviour by name
|
|
66
|
-
*
|
|
67
|
-
* @param {string} name The name of the behaviour to remove
|
|
68
|
-
*/
|
|
69
|
-
this.removeByName = (name) => {
|
|
70
|
-
const behaviours = [];
|
|
71
|
-
for (let i = 0; i < this.behaviours.length; ++i) {
|
|
72
|
-
if (this.behaviours[i].getName() !== name) {
|
|
73
|
-
behaviours.push(this.behaviours[i]);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
this.behaviours = behaviours;
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* Initialises the behaviours
|
|
80
|
-
*
|
|
81
|
-
* @param {Particle} particle The particle
|
|
82
|
-
* @param {Model} model The model
|
|
83
|
-
* @param {Model} turbulencePool The turbulencePool
|
|
84
|
-
*/
|
|
85
|
-
this.init = (particle, model, turbulencePool) => {
|
|
86
|
-
for (let i = 0; i < this.behaviours.length; ++i) {
|
|
87
|
-
this.behaviours[i].init(particle, model, turbulencePool);
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* Applies the behaviours
|
|
92
|
-
*
|
|
93
|
-
* @param {Particle} particle The particle
|
|
94
|
-
* @param {number} deltaTime The delta time
|
|
95
|
-
* @param {Model} model The model
|
|
96
|
-
*/
|
|
97
|
-
this.apply = (particle, deltaTime, model) => {
|
|
98
|
-
for (let i = 0; i < this.behaviours.length; ++i) {
|
|
99
|
-
model.updateCamera(deltaTime);
|
|
100
|
-
this.behaviours[i].apply(particle, deltaTime, model);
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
/**
|
|
104
|
-
* Update once per frame
|
|
105
|
-
*
|
|
106
|
-
* @param {number} deltaTime The delta time
|
|
107
|
-
*/
|
|
108
|
-
this.update = (deltaTime) => {
|
|
109
|
-
for (let i = 0; i < this.behaviours.length; ++i) {
|
|
110
|
-
if (this.behaviours[i].update)
|
|
111
|
-
this.behaviours[i].update(deltaTime);
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=EmitterBehaviours.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmitterBehaviours.js","sourceRoot":"","sources":["../../../src/lib/behaviour/EmitterBehaviours.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Behaviour } from './index';
|
|
2
|
-
import Particle from '../Particle';
|
|
3
|
-
import { Point } from '../util';
|
|
4
|
-
/**
|
|
5
|
-
* ForceFieldsBehaviour applies region-based forces (wind, gravity, turbulence) to particles.
|
|
6
|
-
* @extends Behaviour
|
|
7
|
-
*/
|
|
8
|
-
export default class ForceFieldsBehaviour extends Behaviour {
|
|
9
|
-
enabled: boolean;
|
|
10
|
-
priority: number;
|
|
11
|
-
/**
|
|
12
|
-
* List of force fields
|
|
13
|
-
*/
|
|
14
|
-
fields: {
|
|
15
|
-
position: Point;
|
|
16
|
-
radius: number;
|
|
17
|
-
strength: number;
|
|
18
|
-
type: 'wind' | 'gravity' | 'turbulence';
|
|
19
|
-
direction?: Point;
|
|
20
|
-
}[];
|
|
21
|
-
/**
|
|
22
|
-
* Initializes the particle, but does not modify position directly.
|
|
23
|
-
* @param {Particle} particle - The particle to initialize.
|
|
24
|
-
*/
|
|
25
|
-
init: (particle: Particle) => void;
|
|
26
|
-
/**
|
|
27
|
-
* Applies the force field behavior to particles.
|
|
28
|
-
* @param {Particle} particle - The particle to apply the behavior to.
|
|
29
|
-
* @param {number} deltaTime - Time elapsed since the last frame.
|
|
30
|
-
*/
|
|
31
|
-
apply: (particle: Particle, deltaTime: number) => void;
|
|
32
|
-
/**
|
|
33
|
-
* Gets the name of the behaviour.
|
|
34
|
-
* @returns {string} - The name of the behaviour.
|
|
35
|
-
*/
|
|
36
|
-
getName(): string;
|
|
37
|
-
/**
|
|
38
|
-
* Gets the properties of the behaviour.
|
|
39
|
-
* @returns {object} - The properties of the behaviour.
|
|
40
|
-
*/
|
|
41
|
-
getProps(): {
|
|
42
|
-
enabled: boolean;
|
|
43
|
-
priority: number;
|
|
44
|
-
fields: {
|
|
45
|
-
position: Point;
|
|
46
|
-
radius: number;
|
|
47
|
-
strength: number;
|
|
48
|
-
type: "wind" | "gravity" | "turbulence";
|
|
49
|
-
direction?: Point;
|
|
50
|
-
}[];
|
|
51
|
-
name: string;
|
|
52
|
-
};
|
|
53
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { Behaviour, BehaviourNames } from './index';
|
|
2
|
-
/**
|
|
3
|
-
* ForceFieldsBehaviour applies region-based forces (wind, gravity, turbulence) to particles.
|
|
4
|
-
* @extends Behaviour
|
|
5
|
-
*/
|
|
6
|
-
export default class ForceFieldsBehaviour extends Behaviour {
|
|
7
|
-
constructor() {
|
|
8
|
-
super(...arguments);
|
|
9
|
-
this.enabled = true;
|
|
10
|
-
this.priority = 300; // Executes after initial movement behaviors
|
|
11
|
-
/**
|
|
12
|
-
* List of force fields
|
|
13
|
-
*/
|
|
14
|
-
this.fields = [];
|
|
15
|
-
/**
|
|
16
|
-
* Initializes the particle, but does not modify position directly.
|
|
17
|
-
* @param {Particle} particle - The particle to initialize.
|
|
18
|
-
*/
|
|
19
|
-
this.init = (particle) => {
|
|
20
|
-
// Initialization logic if needed.
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Applies the force field behavior to particles.
|
|
24
|
-
* @param {Particle} particle - The particle to apply the behavior to.
|
|
25
|
-
* @param {number} deltaTime - Time elapsed since the last frame.
|
|
26
|
-
*/
|
|
27
|
-
this.apply = (particle, deltaTime) => {
|
|
28
|
-
if (!this.enabled || particle.skipPositionBehaviour)
|
|
29
|
-
return;
|
|
30
|
-
this.fields.forEach((field) => {
|
|
31
|
-
const distance = Math.sqrt(Math.pow((particle.x - field.position.x), 2) + Math.pow((particle.y - field.position.y), 2));
|
|
32
|
-
// Check if the particle is within the field's radius
|
|
33
|
-
if (distance <= field.radius) {
|
|
34
|
-
const influence = (field.radius - distance) / field.radius; // Influence factor (closer = stronger)
|
|
35
|
-
switch (field.type) {
|
|
36
|
-
case 'wind':
|
|
37
|
-
if (field.direction) {
|
|
38
|
-
particle.movement.x += field.direction.x * field.strength * influence * deltaTime;
|
|
39
|
-
particle.movement.y += field.direction.y * field.strength * influence * deltaTime;
|
|
40
|
-
}
|
|
41
|
-
break;
|
|
42
|
-
case 'gravity':
|
|
43
|
-
const dx = field.position.x - particle.x;
|
|
44
|
-
const dy = field.position.y - particle.y;
|
|
45
|
-
const angle = Math.atan2(dy, dx);
|
|
46
|
-
particle.movement.x += Math.cos(angle) * field.strength * influence * deltaTime;
|
|
47
|
-
particle.movement.y += Math.sin(angle) * field.strength * influence * deltaTime;
|
|
48
|
-
break;
|
|
49
|
-
case 'turbulence':
|
|
50
|
-
const randomForceX = (Math.random() - 0.5) * 2 * field.strength * influence;
|
|
51
|
-
const randomForceY = (Math.random() - 0.5) * 2 * field.strength * influence;
|
|
52
|
-
particle.movement.x += randomForceX * deltaTime;
|
|
53
|
-
particle.movement.y += randomForceY * deltaTime;
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Gets the name of the behaviour.
|
|
62
|
-
* @returns {string} - The name of the behaviour.
|
|
63
|
-
*/
|
|
64
|
-
getName() {
|
|
65
|
-
return BehaviourNames.FORCE_FIELDS_BEHAVIOUR;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Gets the properties of the behaviour.
|
|
69
|
-
* @returns {object} - The properties of the behaviour.
|
|
70
|
-
*/
|
|
71
|
-
getProps() {
|
|
72
|
-
return {
|
|
73
|
-
enabled: this.enabled,
|
|
74
|
-
priority: this.priority,
|
|
75
|
-
fields: this.fields,
|
|
76
|
-
name: this.getName(),
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=ForceFieldsBehaviour.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ForceFieldsBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/ForceFieldsBehaviour.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { Point } from '../util';
|
|
2
|
-
import { Behaviour } from './index';
|
|
3
|
-
import Particle from '../Particle';
|
|
4
|
-
export default class GroupingBehaviour extends Behaviour {
|
|
5
|
-
enabled: boolean;
|
|
6
|
-
priority: number;
|
|
7
|
-
groupCenter: Point;
|
|
8
|
-
groupRadius: number;
|
|
9
|
-
attractionStrength: number;
|
|
10
|
-
repulsionStrength: number;
|
|
11
|
-
orbitSpeed: number;
|
|
12
|
-
randomness: number;
|
|
13
|
-
boundaryEnforcement: boolean;
|
|
14
|
-
dynamicRadiusSpeed: number;
|
|
15
|
-
maxRadius: number;
|
|
16
|
-
minRadius: number;
|
|
17
|
-
clusterPoints: Point[];
|
|
18
|
-
private particleAngles;
|
|
19
|
-
init(particle: Particle): void;
|
|
20
|
-
apply(particle: Particle, deltaTime: number): void;
|
|
21
|
-
/**
|
|
22
|
-
* Adjusts the group radius dynamically over time
|
|
23
|
-
*/
|
|
24
|
-
adjustDynamicRadius(deltaTime: number): void;
|
|
25
|
-
/**
|
|
26
|
-
* Applies repulsion forces to keep particles apart
|
|
27
|
-
*/
|
|
28
|
-
applyRepulsion(particle: Particle): void;
|
|
29
|
-
/**
|
|
30
|
-
* Enforces boundary limits to keep particles within the group radius
|
|
31
|
-
*/
|
|
32
|
-
enforceBoundary(particle: Particle): void;
|
|
33
|
-
/**
|
|
34
|
-
* Finds the nearest cluster point to a given position
|
|
35
|
-
*/
|
|
36
|
-
getNearestClusterPoint(position: Point): Point;
|
|
37
|
-
getName(): string;
|
|
38
|
-
getProps(): {
|
|
39
|
-
enabled: boolean;
|
|
40
|
-
priority: number;
|
|
41
|
-
groupCenter: {
|
|
42
|
-
x: number;
|
|
43
|
-
y: number;
|
|
44
|
-
};
|
|
45
|
-
groupRadius: number;
|
|
46
|
-
attractionStrength: number;
|
|
47
|
-
repulsionStrength: number;
|
|
48
|
-
orbitSpeed: number;
|
|
49
|
-
randomness: number;
|
|
50
|
-
boundaryEnforcement: boolean;
|
|
51
|
-
dynamicRadiusSpeed: number;
|
|
52
|
-
maxRadius: number;
|
|
53
|
-
minRadius: number;
|
|
54
|
-
clusterPoints: Point[];
|
|
55
|
-
name: string;
|
|
56
|
-
};
|
|
57
|
-
}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { Point } from '../util';
|
|
2
|
-
import { Behaviour, BehaviourNames } from './index';
|
|
3
|
-
export default class GroupingBehaviour extends Behaviour {
|
|
4
|
-
constructor() {
|
|
5
|
-
super(...arguments);
|
|
6
|
-
this.enabled = true;
|
|
7
|
-
this.priority = 0;
|
|
8
|
-
this.groupCenter = new Point(0, 0); // Shared center for the group
|
|
9
|
-
this.groupRadius = 100; // Radius of the group
|
|
10
|
-
this.attractionStrength = 0.1; // Strength of attraction toward the group center
|
|
11
|
-
this.repulsionStrength = 0; // Strength of repulsion between particles
|
|
12
|
-
this.orbitSpeed = 0; // Speed of orbiting (0 for no orbit)
|
|
13
|
-
this.randomness = 0.2; // Adds randomness to particle movement
|
|
14
|
-
this.boundaryEnforcement = false; // Enforce group boundary limits
|
|
15
|
-
this.dynamicRadiusSpeed = 0; // Speed for dynamic radius scaling
|
|
16
|
-
this.maxRadius = 150; // Maximum radius for dynamic scaling
|
|
17
|
-
this.minRadius = 50; // Minimum radius for dynamic scaling
|
|
18
|
-
this.clusterPoints = []; // Additional cluster points
|
|
19
|
-
this.particleAngles = new Map(); // Store unique angles for each particle
|
|
20
|
-
}
|
|
21
|
-
init(particle) {
|
|
22
|
-
if (!this.enabled)
|
|
23
|
-
return;
|
|
24
|
-
// Assign each particle an initial random angle within the group
|
|
25
|
-
const initialAngle = Math.random() * Math.PI * 2;
|
|
26
|
-
this.particleAngles.set(particle.uid, initialAngle);
|
|
27
|
-
}
|
|
28
|
-
apply(particle, deltaTime) {
|
|
29
|
-
if (!this.enabled)
|
|
30
|
-
return;
|
|
31
|
-
const angle = this.particleAngles.get(particle.uid) || 0;
|
|
32
|
-
// Calculate vector toward the group center or nearest cluster point
|
|
33
|
-
const targetPoint = this.getNearestClusterPoint(particle.movement);
|
|
34
|
-
const dx = targetPoint.x - particle.movement.x;
|
|
35
|
-
const dy = targetPoint.y - particle.movement.y;
|
|
36
|
-
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
37
|
-
// Apply attraction toward the target point
|
|
38
|
-
particle.movement.x += dx * this.attractionStrength * deltaTime;
|
|
39
|
-
particle.movement.y += dy * this.attractionStrength * deltaTime;
|
|
40
|
-
// Apply orbiting behavior if enabled
|
|
41
|
-
if (this.orbitSpeed !== 0) {
|
|
42
|
-
const currentAngle = angle + this.orbitSpeed * deltaTime;
|
|
43
|
-
this.particleAngles.set(particle.uid, currentAngle);
|
|
44
|
-
particle.movement.x = targetPoint.x + Math.cos(currentAngle) * Math.min(distance, this.groupRadius);
|
|
45
|
-
particle.movement.y = targetPoint.y + Math.sin(currentAngle) * Math.min(distance, this.groupRadius);
|
|
46
|
-
}
|
|
47
|
-
// Apply repulsion from other particles
|
|
48
|
-
this.applyRepulsion(particle);
|
|
49
|
-
// Add randomness for natural movement
|
|
50
|
-
particle.movement.x += (Math.random() - 0.5) * this.randomness;
|
|
51
|
-
particle.movement.y += (Math.random() - 0.5) * this.randomness;
|
|
52
|
-
// Enforce group boundary limits if enabled
|
|
53
|
-
if (this.boundaryEnforcement) {
|
|
54
|
-
this.enforceBoundary(particle);
|
|
55
|
-
}
|
|
56
|
-
// Dynamically adjust the group radius
|
|
57
|
-
this.adjustDynamicRadius(deltaTime);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Adjusts the group radius dynamically over time
|
|
61
|
-
*/
|
|
62
|
-
adjustDynamicRadius(deltaTime) {
|
|
63
|
-
if (this.dynamicRadiusSpeed !== 0) {
|
|
64
|
-
this.groupRadius += this.dynamicRadiusSpeed * deltaTime;
|
|
65
|
-
if (this.groupRadius > this.maxRadius || this.groupRadius < this.minRadius) {
|
|
66
|
-
this.dynamicRadiusSpeed *= -1; // Reverse direction
|
|
67
|
-
}
|
|
68
|
-
this.groupRadius = Math.max(this.minRadius, Math.min(this.groupRadius, this.maxRadius));
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Applies repulsion forces to keep particles apart
|
|
73
|
-
*/
|
|
74
|
-
applyRepulsion(particle) {
|
|
75
|
-
if (this.repulsionStrength === 0)
|
|
76
|
-
return;
|
|
77
|
-
this.clusterPoints.forEach((point) => {
|
|
78
|
-
const dx = point.x - particle.movement.x;
|
|
79
|
-
const dy = point.y - particle.movement.y;
|
|
80
|
-
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
81
|
-
if (distance > 0 && distance < this.groupRadius) {
|
|
82
|
-
const force = Math.pow((this.repulsionStrength / distance), 2);
|
|
83
|
-
particle.movement.x -= dx * force;
|
|
84
|
-
particle.movement.y -= dy * force;
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Enforces boundary limits to keep particles within the group radius
|
|
90
|
-
*/
|
|
91
|
-
enforceBoundary(particle) {
|
|
92
|
-
const dx = particle.movement.x - this.groupCenter.x;
|
|
93
|
-
const dy = particle.movement.y - this.groupCenter.y;
|
|
94
|
-
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
95
|
-
if (distance > this.groupRadius) {
|
|
96
|
-
const angle = Math.atan2(dy, dx);
|
|
97
|
-
particle.movement.x = this.groupCenter.x + Math.cos(angle) * this.groupRadius;
|
|
98
|
-
particle.movement.y = this.groupCenter.y + Math.sin(angle) * this.groupRadius;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Finds the nearest cluster point to a given position
|
|
103
|
-
*/
|
|
104
|
-
getNearestClusterPoint(position) {
|
|
105
|
-
if (this.clusterPoints.length === 0) {
|
|
106
|
-
return this.groupCenter;
|
|
107
|
-
}
|
|
108
|
-
let nearest = this.groupCenter;
|
|
109
|
-
let minDistance = Infinity;
|
|
110
|
-
for (const point of this.clusterPoints) {
|
|
111
|
-
const dx = point.x - position.x;
|
|
112
|
-
const dy = point.y - position.y;
|
|
113
|
-
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
114
|
-
if (distance < minDistance) {
|
|
115
|
-
minDistance = distance;
|
|
116
|
-
nearest = point;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return nearest;
|
|
120
|
-
}
|
|
121
|
-
getName() {
|
|
122
|
-
return BehaviourNames.GROUPING_BEHAVIOUR;
|
|
123
|
-
}
|
|
124
|
-
getProps() {
|
|
125
|
-
return {
|
|
126
|
-
enabled: this.enabled,
|
|
127
|
-
priority: this.priority,
|
|
128
|
-
groupCenter: { x: this.groupCenter.x, y: this.groupCenter.y },
|
|
129
|
-
groupRadius: this.groupRadius,
|
|
130
|
-
attractionStrength: this.attractionStrength,
|
|
131
|
-
repulsionStrength: this.repulsionStrength,
|
|
132
|
-
orbitSpeed: this.orbitSpeed,
|
|
133
|
-
randomness: this.randomness,
|
|
134
|
-
boundaryEnforcement: this.boundaryEnforcement,
|
|
135
|
-
dynamicRadiusSpeed: this.dynamicRadiusSpeed,
|
|
136
|
-
maxRadius: this.maxRadius,
|
|
137
|
-
minRadius: this.minRadius,
|
|
138
|
-
clusterPoints: this.clusterPoints,
|
|
139
|
-
name: this.getName(),
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=GroupingBehaviour.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GroupingBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/GroupingBehaviour.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { Behaviour } from './index';
|
|
2
|
-
import Particle from '../Particle';
|
|
3
|
-
/**
|
|
4
|
-
* This class is responsible for managing the lifetimes of particles.
|
|
5
|
-
* It sets the maximum lifetime of the particle and updates its progress.
|
|
6
|
-
*
|
|
7
|
-
* @extends Behaviour
|
|
8
|
-
*/
|
|
9
|
-
export default class LifeBehaviour extends Behaviour {
|
|
10
|
-
enabled: boolean;
|
|
11
|
-
priority: number;
|
|
12
|
-
maxLifeTime: number;
|
|
13
|
-
timeVariance: number;
|
|
14
|
-
/**
|
|
15
|
-
* Sets the particle's life time and maximum life time.
|
|
16
|
-
*
|
|
17
|
-
* @param {Particle} particle - The particle to set the life time of.
|
|
18
|
-
* @returns {void}
|
|
19
|
-
*/
|
|
20
|
-
init: (particle: Particle) => void;
|
|
21
|
-
/**
|
|
22
|
-
* Updates the particle's life time and progress.
|
|
23
|
-
*
|
|
24
|
-
* @param {Particle} particle - The particle to update.
|
|
25
|
-
* @param {number} deltaTime - The time since the last update.
|
|
26
|
-
* @returns {void}
|
|
27
|
-
*/
|
|
28
|
-
apply: (particle: Particle, deltaTime: number) => void;
|
|
29
|
-
/**
|
|
30
|
-
* Returns the name of this behaviour.
|
|
31
|
-
*
|
|
32
|
-
* @returns {string} - The name of the behaviour.
|
|
33
|
-
*/
|
|
34
|
-
getName(): string;
|
|
35
|
-
/**
|
|
36
|
-
* Returns the properties of the behaviour.
|
|
37
|
-
*
|
|
38
|
-
* @returns {Object} - The properties of the behaviour.
|
|
39
|
-
*/
|
|
40
|
-
getProps(): {
|
|
41
|
-
enabled: boolean;
|
|
42
|
-
priority: number;
|
|
43
|
-
maxLifeTime: number;
|
|
44
|
-
timeVariance: number;
|
|
45
|
-
name: string;
|
|
46
|
-
};
|
|
47
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Behaviour, BehaviourNames } from './index';
|
|
2
|
-
/**
|
|
3
|
-
* This class is responsible for managing the lifetimes of particles.
|
|
4
|
-
* It sets the maximum lifetime of the particle and updates its progress.
|
|
5
|
-
*
|
|
6
|
-
* @extends Behaviour
|
|
7
|
-
*/
|
|
8
|
-
export default class LifeBehaviour extends Behaviour {
|
|
9
|
-
constructor() {
|
|
10
|
-
super(...arguments);
|
|
11
|
-
this.enabled = true;
|
|
12
|
-
this.priority = 10000;
|
|
13
|
-
this.maxLifeTime = 0;
|
|
14
|
-
this.timeVariance = 0;
|
|
15
|
-
/**
|
|
16
|
-
* Sets the particle's life time and maximum life time.
|
|
17
|
-
*
|
|
18
|
-
* @param {Particle} particle - The particle to set the life time of.
|
|
19
|
-
* @returns {void}
|
|
20
|
-
*/
|
|
21
|
-
this.init = (particle) => {
|
|
22
|
-
particle.lifeTime = 0;
|
|
23
|
-
particle.lifeProgress = 0;
|
|
24
|
-
particle.maxLifeTime = Math.max(this.maxLifeTime + this.varianceFrom(this.timeVariance), 0.0);
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Updates the particle's life time and progress.
|
|
28
|
-
*
|
|
29
|
-
* @param {Particle} particle - The particle to update.
|
|
30
|
-
* @param {number} deltaTime - The time since the last update.
|
|
31
|
-
* @returns {void}
|
|
32
|
-
*/
|
|
33
|
-
this.apply = (particle, deltaTime) => {
|
|
34
|
-
const { maxLifeTime } = particle;
|
|
35
|
-
const lifeTime = particle.lifeTime + deltaTime;
|
|
36
|
-
particle.lifeTime = lifeTime;
|
|
37
|
-
if (maxLifeTime > 0) {
|
|
38
|
-
particle.lifeProgress = Math.min(1.0, lifeTime / maxLifeTime);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Returns the name of this behaviour.
|
|
44
|
-
*
|
|
45
|
-
* @returns {string} - The name of the behaviour.
|
|
46
|
-
*/
|
|
47
|
-
getName() {
|
|
48
|
-
return BehaviourNames.LIFE_BEHAVIOUR;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Returns the properties of the behaviour.
|
|
52
|
-
*
|
|
53
|
-
* @returns {Object} - The properties of the behaviour.
|
|
54
|
-
*/
|
|
55
|
-
getProps() {
|
|
56
|
-
return {
|
|
57
|
-
enabled: this.enabled,
|
|
58
|
-
priority: this.priority,
|
|
59
|
-
maxLifeTime: this.maxLifeTime,
|
|
60
|
-
timeVariance: this.timeVariance,
|
|
61
|
-
name: this.getName(),
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=LifeBehaviour.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LifeBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/LifeBehaviour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAGnD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,SAAS;IAApD;;QACE,YAAO,GAAG,IAAI,CAAA;QACd,aAAQ,GAAG,KAAK,CAAA;QAChB,gBAAW,GAAG,CAAC,CAAA;QACf,iBAAY,GAAG,CAAC,CAAA;QAEhB;;;;;WAKG;QACH,SAAI,GAAG,CAAC,QAAkB,EAAE,EAAE;YAC5B,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAA;YACrB,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAA;YACzB,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAA;QAC/F,CAAC,CAAA;QAED;;;;;;WAMG;QACH,UAAK,GAAG,CAAC,QAAkB,EAAE,SAAiB,EAAE,EAAE;YAChD,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAA;YAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAA;YAE9C,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAA;YAE5B,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAA;YAC/D,CAAC;QACH,CAAC,CAAA;IAyBH,CAAC;IAvBC;;;;OAIG;IACH,OAAO;QACL,OAAO,cAAc,CAAC,cAAc,CAAA;IACtC,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;SACrB,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { Point } from '../util';
|
|
2
|
-
import { Behaviour } from './index';
|
|
3
|
-
import Particle from '../Particle';
|
|
4
|
-
export default class LightEffectBehaviour extends Behaviour {
|
|
5
|
-
enabled: boolean;
|
|
6
|
-
priority: number;
|
|
7
|
-
lightSource: Point;
|
|
8
|
-
lightIntensity: number;
|
|
9
|
-
lightColor: {
|
|
10
|
-
r: number;
|
|
11
|
-
g: number;
|
|
12
|
-
b: number;
|
|
13
|
-
};
|
|
14
|
-
attenuationFactor: number;
|
|
15
|
-
ambientLight: number;
|
|
16
|
-
directionalLight: boolean;
|
|
17
|
-
direction: Point;
|
|
18
|
-
spreadAngle: number;
|
|
19
|
-
volumetricLight: boolean;
|
|
20
|
-
volumetricIntensity: number;
|
|
21
|
-
fogDensity: number;
|
|
22
|
-
init: () => void;
|
|
23
|
-
apply: (particle: Particle, deltaTime: number) => void;
|
|
24
|
-
/**
|
|
25
|
-
* Gets the name of the behaviour
|
|
26
|
-
* @return {string} The name of the behaviour
|
|
27
|
-
*/
|
|
28
|
-
getName(): string;
|
|
29
|
-
/**
|
|
30
|
-
* @description Retrieves the properties of the object.
|
|
31
|
-
* @returns {Object} The properties of the object.
|
|
32
|
-
*/
|
|
33
|
-
getProps(): {
|
|
34
|
-
enabled: boolean;
|
|
35
|
-
priority: number;
|
|
36
|
-
lightSource: {
|
|
37
|
-
x: number;
|
|
38
|
-
y: number;
|
|
39
|
-
};
|
|
40
|
-
lightIntensity: number;
|
|
41
|
-
lightColor: {
|
|
42
|
-
r: number;
|
|
43
|
-
g: number;
|
|
44
|
-
b: number;
|
|
45
|
-
};
|
|
46
|
-
attenuationFactor: number;
|
|
47
|
-
ambientLight: number;
|
|
48
|
-
directionalLight: boolean;
|
|
49
|
-
direction: {
|
|
50
|
-
x: number;
|
|
51
|
-
y: number;
|
|
52
|
-
};
|
|
53
|
-
spreadAngle: number;
|
|
54
|
-
volumetricLight: boolean;
|
|
55
|
-
volumetricIntensity: number;
|
|
56
|
-
fogDensity: number;
|
|
57
|
-
name: string;
|
|
58
|
-
};
|
|
59
|
-
}
|