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.
Files changed (164) hide show
  1. package/README.md +2 -1
  2. package/package.json +5 -4
  3. package/dist/index.d.ts +0 -15
  4. package/dist/index.js +0 -45
  5. package/dist/index.js.map +0 -1
  6. package/dist/lib/Model.d.ts +0 -32
  7. package/dist/lib/Model.js +0 -44
  8. package/dist/lib/Model.js.map +0 -1
  9. package/dist/lib/Particle.d.ts +0 -234
  10. package/dist/lib/Particle.js +0 -201
  11. package/dist/lib/Particle.js.map +0 -1
  12. package/dist/lib/ParticlePool.d.ts +0 -37
  13. package/dist/lib/ParticlePool.js +0 -56
  14. package/dist/lib/ParticlePool.js.map +0 -1
  15. package/dist/lib/behaviour/AngularVelocityBehaviour.d.ts +0 -61
  16. package/dist/lib/behaviour/AngularVelocityBehaviour.js +0 -118
  17. package/dist/lib/behaviour/AngularVelocityBehaviour.js.map +0 -1
  18. package/dist/lib/behaviour/AttractionRepulsionBehaviour.d.ts +0 -42
  19. package/dist/lib/behaviour/AttractionRepulsionBehaviour.js +0 -78
  20. package/dist/lib/behaviour/AttractionRepulsionBehaviour.js.map +0 -1
  21. package/dist/lib/behaviour/Behaviour.d.ts +0 -33
  22. package/dist/lib/behaviour/Behaviour.js +0 -45
  23. package/dist/lib/behaviour/Behaviour.js.map +0 -1
  24. package/dist/lib/behaviour/BehaviourNames.d.ts +0 -22
  25. package/dist/lib/behaviour/BehaviourNames.js +0 -23
  26. package/dist/lib/behaviour/BehaviourNames.js.map +0 -1
  27. package/dist/lib/behaviour/CollisionBehaviour.d.ts +0 -86
  28. package/dist/lib/behaviour/CollisionBehaviour.js +0 -140
  29. package/dist/lib/behaviour/CollisionBehaviour.js.map +0 -1
  30. package/dist/lib/behaviour/ColorBehaviour.d.ts +0 -67
  31. package/dist/lib/behaviour/ColorBehaviour.js +0 -193
  32. package/dist/lib/behaviour/ColorBehaviour.js.map +0 -1
  33. package/dist/lib/behaviour/EmitDirectionBehaviour.d.ts +0 -52
  34. package/dist/lib/behaviour/EmitDirectionBehaviour.js +0 -105
  35. package/dist/lib/behaviour/EmitDirectionBehaviour.js.map +0 -1
  36. package/dist/lib/behaviour/EmitterBehaviours.d.ts +0 -69
  37. package/dist/lib/behaviour/EmitterBehaviours.js +0 -116
  38. package/dist/lib/behaviour/EmitterBehaviours.js.map +0 -1
  39. package/dist/lib/behaviour/ForceFieldsBehaviour.d.ts +0 -53
  40. package/dist/lib/behaviour/ForceFieldsBehaviour.js +0 -80
  41. package/dist/lib/behaviour/ForceFieldsBehaviour.js.map +0 -1
  42. package/dist/lib/behaviour/GroupingBehaviour.d.ts +0 -57
  43. package/dist/lib/behaviour/GroupingBehaviour.js +0 -143
  44. package/dist/lib/behaviour/GroupingBehaviour.js.map +0 -1
  45. package/dist/lib/behaviour/LifeBehaviour.d.ts +0 -47
  46. package/dist/lib/behaviour/LifeBehaviour.js +0 -65
  47. package/dist/lib/behaviour/LifeBehaviour.js.map +0 -1
  48. package/dist/lib/behaviour/LightEffectBehaviour.d.ts +0 -59
  49. package/dist/lib/behaviour/LightEffectBehaviour.js +0 -94
  50. package/dist/lib/behaviour/LightEffectBehaviour.js.map +0 -1
  51. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.d.ts +0 -35
  52. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.js +0 -93
  53. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.js.map +0 -1
  54. package/dist/lib/behaviour/PositionBehaviour.d.ts +0 -164
  55. package/dist/lib/behaviour/PositionBehaviour.js +0 -484
  56. package/dist/lib/behaviour/PositionBehaviour.js.map +0 -1
  57. package/dist/lib/behaviour/RotationBehaviour.d.ts +0 -59
  58. package/dist/lib/behaviour/RotationBehaviour.js +0 -100
  59. package/dist/lib/behaviour/RotationBehaviour.js.map +0 -1
  60. package/dist/lib/behaviour/SizeBehaviour.d.ts +0 -61
  61. package/dist/lib/behaviour/SizeBehaviour.js +0 -156
  62. package/dist/lib/behaviour/SizeBehaviour.js.map +0 -1
  63. package/dist/lib/behaviour/SoundReactiveBehaviour.d.ts +0 -58
  64. package/dist/lib/behaviour/SoundReactiveBehaviour.js +0 -132
  65. package/dist/lib/behaviour/SoundReactiveBehaviour.js.map +0 -1
  66. package/dist/lib/behaviour/SpawnBehaviour.d.ts +0 -89
  67. package/dist/lib/behaviour/SpawnBehaviour.js +0 -705
  68. package/dist/lib/behaviour/SpawnBehaviour.js.map +0 -1
  69. package/dist/lib/behaviour/StretchBehaviour.d.ts +0 -30
  70. package/dist/lib/behaviour/StretchBehaviour.js +0 -59
  71. package/dist/lib/behaviour/StretchBehaviour.js.map +0 -1
  72. package/dist/lib/behaviour/TemperatureBehaviour.d.ts +0 -47
  73. package/dist/lib/behaviour/TemperatureBehaviour.js +0 -64
  74. package/dist/lib/behaviour/TemperatureBehaviour.js.map +0 -1
  75. package/dist/lib/behaviour/TimelineBehaviour.d.ts +0 -73
  76. package/dist/lib/behaviour/TimelineBehaviour.js +0 -100
  77. package/dist/lib/behaviour/TimelineBehaviour.js.map +0 -1
  78. package/dist/lib/behaviour/TurbulenceBehaviour.d.ts +0 -73
  79. package/dist/lib/behaviour/TurbulenceBehaviour.js +0 -133
  80. package/dist/lib/behaviour/TurbulenceBehaviour.js.map +0 -1
  81. package/dist/lib/behaviour/index.d.ts +0 -23
  82. package/dist/lib/behaviour/index.js +0 -24
  83. package/dist/lib/behaviour/index.js.map +0 -1
  84. package/dist/lib/customPixiParticlesSettingsInterface.d.ts +0 -19
  85. package/dist/lib/customPixiParticlesSettingsInterface.js +0 -2
  86. package/dist/lib/customPixiParticlesSettingsInterface.js.map +0 -1
  87. package/dist/lib/emission/AbstractEmission.d.ts +0 -30
  88. package/dist/lib/emission/AbstractEmission.js +0 -39
  89. package/dist/lib/emission/AbstractEmission.js.map +0 -1
  90. package/dist/lib/emission/EmissionTypes.d.ts +0 -6
  91. package/dist/lib/emission/EmissionTypes.js +0 -6
  92. package/dist/lib/emission/EmissionTypes.js.map +0 -1
  93. package/dist/lib/emission/RandomEmission.d.ts +0 -44
  94. package/dist/lib/emission/RandomEmission.js +0 -66
  95. package/dist/lib/emission/RandomEmission.js.map +0 -1
  96. package/dist/lib/emission/StandardEmission.d.ts +0 -62
  97. package/dist/lib/emission/StandardEmission.js +0 -87
  98. package/dist/lib/emission/StandardEmission.js.map +0 -1
  99. package/dist/lib/emission/UniformEmission.d.ts +0 -56
  100. package/dist/lib/emission/UniformEmission.js +0 -83
  101. package/dist/lib/emission/UniformEmission.js.map +0 -1
  102. package/dist/lib/emission/index.d.ts +0 -6
  103. package/dist/lib/emission/index.js +0 -7
  104. package/dist/lib/emission/index.js.map +0 -1
  105. package/dist/lib/emitter/Duration.d.ts +0 -27
  106. package/dist/lib/emitter/Duration.js +0 -41
  107. package/dist/lib/emitter/Duration.js.map +0 -1
  108. package/dist/lib/emitter/Emitter.d.ts +0 -116
  109. package/dist/lib/emitter/Emitter.js +0 -240
  110. package/dist/lib/emitter/Emitter.js.map +0 -1
  111. package/dist/lib/emitter/index.d.ts +0 -3
  112. package/dist/lib/emitter/index.js +0 -4
  113. package/dist/lib/emitter/index.js.map +0 -1
  114. package/dist/lib/index.d.ts +0 -20
  115. package/dist/lib/index.js +0 -21
  116. package/dist/lib/index.js.map +0 -1
  117. package/dist/lib/parser/BehaviourParser.d.ts +0 -21
  118. package/dist/lib/parser/BehaviourParser.js +0 -72
  119. package/dist/lib/parser/BehaviourParser.js.map +0 -1
  120. package/dist/lib/parser/CompatibilityHelper.d.ts +0 -12
  121. package/dist/lib/parser/CompatibilityHelper.js +0 -19
  122. package/dist/lib/parser/CompatibilityHelper.js.map +0 -1
  123. package/dist/lib/parser/EmitControllerParser.d.ts +0 -27
  124. package/dist/lib/parser/EmitControllerParser.js +0 -39
  125. package/dist/lib/parser/EmitControllerParser.js.map +0 -1
  126. package/dist/lib/parser/EmitterParser.d.ts +0 -67
  127. package/dist/lib/parser/EmitterParser.js +0 -168
  128. package/dist/lib/parser/EmitterParser.js.map +0 -1
  129. package/dist/lib/parser/index.d.ts +0 -5
  130. package/dist/lib/parser/index.js +0 -6
  131. package/dist/lib/parser/index.js.map +0 -1
  132. package/dist/lib/pixi/Renderer.d.ts +0 -125
  133. package/dist/lib/pixi/Renderer.js +0 -560
  134. package/dist/lib/pixi/Renderer.js.map +0 -1
  135. package/dist/lib/pixi/TestRenderer.d.ts +0 -125
  136. package/dist/lib/pixi/TestRenderer.js +0 -560
  137. package/dist/lib/pixi/TestRenderer.js.map +0 -1
  138. package/dist/lib/util/Color.d.ts +0 -133
  139. package/dist/lib/util/Color.js +0 -173
  140. package/dist/lib/util/Color.js.map +0 -1
  141. package/dist/lib/util/List.d.ts +0 -49
  142. package/dist/lib/util/List.js +0 -87
  143. package/dist/lib/util/List.js.map +0 -1
  144. package/dist/lib/util/MinMax.d.ts +0 -34
  145. package/dist/lib/util/MinMax.js +0 -46
  146. package/dist/lib/util/MinMax.js.map +0 -1
  147. package/dist/lib/util/Point.d.ts +0 -34
  148. package/dist/lib/util/Point.js +0 -46
  149. package/dist/lib/util/Point.js.map +0 -1
  150. package/dist/lib/util/Random.d.ts +0 -24
  151. package/dist/lib/util/Random.js +0 -30
  152. package/dist/lib/util/Random.js.map +0 -1
  153. package/dist/lib/util/ThereBack.d.ts +0 -14
  154. package/dist/lib/util/ThereBack.js +0 -23
  155. package/dist/lib/util/ThereBack.js.map +0 -1
  156. package/dist/lib/util/index.d.ts +0 -5
  157. package/dist/lib/util/index.js +0 -6
  158. package/dist/lib/util/index.js.map +0 -1
  159. package/dist/lib/util/maths.d.ts +0 -10
  160. package/dist/lib/util/maths.js +0 -13
  161. package/dist/lib/util/maths.js.map +0 -1
  162. package/dist/lib/util/turbulencePool.d.ts +0 -4
  163. package/dist/lib/util/turbulencePool.js +0 -7
  164. 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
- }