custom-pixi-particles 5.2.0 → 7.1.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.
Files changed (86) hide show
  1. package/README.md +120 -82
  2. package/dist/index.d.ts +5 -1
  3. package/dist/index.js +19 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/Particle.d.ts +15 -1
  6. package/dist/lib/Particle.js +29 -0
  7. package/dist/lib/Particle.js.map +1 -1
  8. package/dist/lib/behaviour/AngularVelocityBehaviour.d.ts +10 -6
  9. package/dist/lib/behaviour/AngularVelocityBehaviour.js +45 -14
  10. package/dist/lib/behaviour/AngularVelocityBehaviour.js.map +1 -1
  11. package/dist/lib/behaviour/AttractionRepulsionBehaviour.d.ts +42 -0
  12. package/dist/lib/behaviour/AttractionRepulsionBehaviour.js +78 -0
  13. package/dist/lib/behaviour/AttractionRepulsionBehaviour.js.map +1 -0
  14. package/dist/lib/behaviour/BehaviourNames.d.ts +13 -2
  15. package/dist/lib/behaviour/BehaviourNames.js +13 -1
  16. package/dist/lib/behaviour/BehaviourNames.js.map +1 -1
  17. package/dist/lib/behaviour/CollisionBehaviour.d.ts +86 -0
  18. package/dist/lib/behaviour/CollisionBehaviour.js +140 -0
  19. package/dist/lib/behaviour/CollisionBehaviour.js.map +1 -0
  20. package/dist/lib/behaviour/ColorBehaviour.d.ts +22 -0
  21. package/dist/lib/behaviour/ColorBehaviour.js +122 -6
  22. package/dist/lib/behaviour/ColorBehaviour.js.map +1 -1
  23. package/dist/lib/behaviour/EmitDirectionBehaviour.d.ts +14 -8
  24. package/dist/lib/behaviour/EmitDirectionBehaviour.js +53 -12
  25. package/dist/lib/behaviour/EmitDirectionBehaviour.js.map +1 -1
  26. package/dist/lib/behaviour/EmitterBehaviours.d.ts +6 -0
  27. package/dist/lib/behaviour/EmitterBehaviours.js +11 -0
  28. package/dist/lib/behaviour/EmitterBehaviours.js.map +1 -1
  29. package/dist/lib/behaviour/ForceFieldsBehaviour.d.ts +53 -0
  30. package/dist/lib/behaviour/ForceFieldsBehaviour.js +80 -0
  31. package/dist/lib/behaviour/ForceFieldsBehaviour.js.map +1 -0
  32. package/dist/lib/behaviour/GroupingBehaviour.d.ts +57 -0
  33. package/dist/lib/behaviour/GroupingBehaviour.js +143 -0
  34. package/dist/lib/behaviour/GroupingBehaviour.js.map +1 -0
  35. package/dist/lib/behaviour/LifeBehaviour.d.ts +0 -20
  36. package/dist/lib/behaviour/LifeBehaviour.js +0 -20
  37. package/dist/lib/behaviour/LifeBehaviour.js.map +1 -1
  38. package/dist/lib/behaviour/LightEffectBehaviour.d.ts +59 -0
  39. package/dist/lib/behaviour/LightEffectBehaviour.js +94 -0
  40. package/dist/lib/behaviour/LightEffectBehaviour.js.map +1 -0
  41. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.d.ts +28 -0
  42. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.js +50 -0
  43. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.js.map +1 -0
  44. package/dist/lib/behaviour/PositionBehaviour.d.ts +0 -13
  45. package/dist/lib/behaviour/PositionBehaviour.js +3 -53
  46. package/dist/lib/behaviour/PositionBehaviour.js.map +1 -1
  47. package/dist/lib/behaviour/RotationBehaviour.d.ts +20 -12
  48. package/dist/lib/behaviour/RotationBehaviour.js +50 -16
  49. package/dist/lib/behaviour/RotationBehaviour.js.map +1 -1
  50. package/dist/lib/behaviour/SizeBehaviour.d.ts +33 -3
  51. package/dist/lib/behaviour/SizeBehaviour.js +105 -20
  52. package/dist/lib/behaviour/SizeBehaviour.js.map +1 -1
  53. package/dist/lib/behaviour/SoundReactiveBehaviour.d.ts +58 -0
  54. package/dist/lib/behaviour/SoundReactiveBehaviour.js +132 -0
  55. package/dist/lib/behaviour/SoundReactiveBehaviour.js.map +1 -0
  56. package/dist/lib/behaviour/SpawnBehaviour.d.ts +89 -0
  57. package/dist/lib/behaviour/SpawnBehaviour.js +705 -0
  58. package/dist/lib/behaviour/SpawnBehaviour.js.map +1 -0
  59. package/dist/lib/behaviour/StretchBehaviour.d.ts +30 -0
  60. package/dist/lib/behaviour/StretchBehaviour.js +59 -0
  61. package/dist/lib/behaviour/StretchBehaviour.js.map +1 -0
  62. package/dist/lib/behaviour/TemperatureBehaviour.d.ts +47 -0
  63. package/dist/lib/behaviour/TemperatureBehaviour.js +64 -0
  64. package/dist/lib/behaviour/TemperatureBehaviour.js.map +1 -0
  65. package/dist/lib/behaviour/TimelineBehaviour.d.ts +73 -0
  66. package/dist/lib/behaviour/TimelineBehaviour.js +100 -0
  67. package/dist/lib/behaviour/TimelineBehaviour.js.map +1 -0
  68. package/dist/lib/behaviour/TurbulenceBehaviour.d.ts +2 -1
  69. package/dist/lib/behaviour/TurbulenceBehaviour.js +6 -1
  70. package/dist/lib/behaviour/TurbulenceBehaviour.js.map +1 -1
  71. package/dist/lib/behaviour/index.d.ts +12 -1
  72. package/dist/lib/behaviour/index.js +12 -1
  73. package/dist/lib/behaviour/index.js.map +1 -1
  74. package/dist/lib/customPixiParticlesSettingsInterface.d.ts +1 -0
  75. package/dist/lib/emitter/Emitter.d.ts +4 -1
  76. package/dist/lib/emitter/Emitter.js +40 -1
  77. package/dist/lib/emitter/Emitter.js.map +1 -1
  78. package/dist/lib/parser/BehaviourParser.js +1 -1
  79. package/dist/lib/parser/BehaviourParser.js.map +1 -1
  80. package/dist/lib/pixi/Renderer.d.ts +14 -5
  81. package/dist/lib/pixi/Renderer.js +128 -70
  82. package/dist/lib/pixi/Renderer.js.map +1 -1
  83. package/dist/lib/pixi/TestRenderer.d.ts +125 -0
  84. package/dist/lib/pixi/TestRenderer.js +560 -0
  85. package/dist/lib/pixi/TestRenderer.js.map +1 -0
  86. package/package.json +7 -5
@@ -0,0 +1,78 @@
1
+ import { Behaviour, BehaviourNames } from './index';
2
+ /**
3
+ * AttractionRepulsionBehaviour applies attraction or repulsion forces to particles
4
+ * without overriding other position-related behaviors.
5
+ * @extends Behaviour
6
+ */
7
+ export default class AttractionRepulsionBehaviour extends Behaviour {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.enabled = true;
11
+ this.priority = 200; // Ensure this runs after PositionBehaviour if needed
12
+ /**
13
+ * List of influence points affecting particles.
14
+ * Each point: { point: Point, strength: number, range: number }
15
+ */
16
+ this.influencePoints = [];
17
+ /**
18
+ * Initializes the particle, but does not modify position directly.
19
+ * @param {Particle} particle - The particle to initialize.
20
+ */
21
+ this.init = (particle) => {
22
+ // Initialization logic if needed.
23
+ };
24
+ /**
25
+ * Applies attraction or repulsion forces to the particle additively.
26
+ * @param {Particle} particle - The particle to apply the behavior to.
27
+ * @param {number} deltaTime - Time elapsed since the last frame.
28
+ */
29
+ this.apply = (particle, deltaTime) => {
30
+ if (!this.enabled || particle.skipPositionBehaviour || particle.skipAttractionRepulsionBehaviour)
31
+ return;
32
+ // Accumulate influence forces
33
+ let totalForceX = 0;
34
+ let totalForceY = 0;
35
+ this.influencePoints.forEach(({ point, strength, range }) => {
36
+ // @ts-ignore
37
+ const dx = point.x - particle.x;
38
+ // @ts-ignore
39
+ const dy = point.y - particle.y;
40
+ const distanceSquared = dx * dx + dy * dy;
41
+ if (distanceSquared > range * range || distanceSquared === 0)
42
+ return;
43
+ const distance = Math.sqrt(distanceSquared);
44
+ const force = strength * (1 - distance / range) * deltaTime;
45
+ const normalizedDx = dx / distance;
46
+ const normalizedDy = dy / distance;
47
+ totalForceX += normalizedDx * force;
48
+ totalForceY += normalizedDy * force;
49
+ });
50
+ // Add forces to particle velocity (or acceleration for smoother effects)
51
+ particle.velocity.x += totalForceX;
52
+ particle.velocity.y += totalForceY;
53
+ // Apply updated velocity to position additively
54
+ particle.x += particle.velocity.x * deltaTime;
55
+ particle.y += particle.velocity.y * deltaTime;
56
+ };
57
+ }
58
+ /**
59
+ * Gets the name of the behavior.
60
+ * @returns {string} - The name of the behavior.
61
+ */
62
+ getName() {
63
+ return BehaviourNames.ATTRACTION_REPULSION_BEHAVIOUR;
64
+ }
65
+ /**
66
+ * Gets the properties of the behavior.
67
+ * @returns {object} - The properties of the behavior.
68
+ */
69
+ getProps() {
70
+ return {
71
+ enabled: this.enabled,
72
+ priority: this.priority,
73
+ influencePoints: this.influencePoints,
74
+ name: this.getName(),
75
+ };
76
+ }
77
+ }
78
+ //# sourceMappingURL=AttractionRepulsionBehaviour.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttractionRepulsionBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/AttractionRepulsionBehaviour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAGnD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,SAAS;IAAnE;;QACE,YAAO,GAAG,IAAI,CAAA;QACd,aAAQ,GAAG,GAAG,CAAA,CAAC,qDAAqD;QAEpE;;;WAGG;QACH,oBAAe,GAAG,EAAE,CAAA;QAEpB;;;WAGG;QACH,SAAI,GAAG,CAAC,QAAkB,EAAE,EAAE;YAC5B,kCAAkC;QACpC,CAAC,CAAA;QAED;;;;WAIG;QACH,UAAK,GAAG,CAAC,QAAkB,EAAE,SAAiB,EAAE,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,qBAAqB,IAAI,QAAQ,CAAC,gCAAgC;gBAAE,OAAM;YAExG,8BAA8B;YAC9B,IAAI,WAAW,GAAG,CAAC,CAAA;YACnB,IAAI,WAAW,GAAG,CAAC,CAAA;YAEnB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC1D,aAAa;gBACb,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;gBAC/B,aAAa;gBACb,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;gBAC/B,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;gBAEzC,IAAI,eAAe,GAAG,KAAK,GAAG,KAAK,IAAI,eAAe,KAAK,CAAC;oBAAE,OAAM;gBAEpE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gBAC3C,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC,GAAG,SAAS,CAAA;gBAE3D,MAAM,YAAY,GAAG,EAAE,GAAG,QAAQ,CAAA;gBAClC,MAAM,YAAY,GAAG,EAAE,GAAG,QAAQ,CAAA;gBAElC,WAAW,IAAI,YAAY,GAAG,KAAK,CAAA;gBACnC,WAAW,IAAI,YAAY,GAAG,KAAK,CAAA;YACrC,CAAC,CAAC,CAAA;YAEF,yEAAyE;YACzE,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,WAAW,CAAA;YAClC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,WAAW,CAAA;YAElC,gDAAgD;YAChD,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;YAC7C,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;QAC/C,CAAC,CAAA;IAsBH,CAAC;IApBC;;;OAGG;IACH,OAAO;QACL,OAAO,cAAc,CAAC,8BAA8B,CAAA;IACtD,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;SACrB,CAAA;IACH,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- declare const _default: {
1
+ declare const behaviourNames: {
2
2
  ANGULAR_BEHAVIOUR: string;
3
3
  LIFE_BEHAVIOUR: string;
4
4
  COLOR_BEHAVIOUR: string;
@@ -7,5 +7,16 @@ declare const _default: {
7
7
  EMIT_DIRECTION: string;
8
8
  ROTATION_BEHAVIOUR: string;
9
9
  TURBULENCE_BEHAVIOUR: string;
10
+ COLLISION_BEHAVIOUR: string;
11
+ ATTRACTION_REPULSION_BEHAVIOUR: string;
12
+ NOISE_BASED_MOTION_BEHAVIOUR: string;
13
+ FORCE_FIELDS_BEHAVIOUR: string;
14
+ SPAWN_BEHAVIOUR: string;
15
+ TIMELINE_BEHAVIOUR: string;
16
+ GROUPING_BEHAVIOUR: string;
17
+ SOUND_REACTIVE_BEHAVIOUR: string;
18
+ LIGHT_EFFECT_BEHAVIOUR: string;
19
+ STRETCH_BEHAVIOUR: string;
20
+ TEMPERATURE_BEHAVIOUR: string;
10
21
  };
11
- export default _default;
22
+ export default behaviourNames;
@@ -1,4 +1,4 @@
1
- export default {
1
+ const behaviourNames = {
2
2
  ANGULAR_BEHAVIOUR: 'AngularVelocityBehaviour',
3
3
  LIFE_BEHAVIOUR: 'LifeBehaviour',
4
4
  COLOR_BEHAVIOUR: 'ColorBehaviour',
@@ -7,5 +7,17 @@ export default {
7
7
  EMIT_DIRECTION: 'EmitDirectionBehaviour',
8
8
  ROTATION_BEHAVIOUR: 'RotationBehaviour',
9
9
  TURBULENCE_BEHAVIOUR: 'TurbulenceBehaviour',
10
+ COLLISION_BEHAVIOUR: 'CollisionBehaviour',
11
+ ATTRACTION_REPULSION_BEHAVIOUR: 'AttractionRepulsionBehaviour',
12
+ NOISE_BASED_MOTION_BEHAVIOUR: 'NoiseBasedMotionBehaviour',
13
+ FORCE_FIELDS_BEHAVIOUR: 'ForceFieldsBehaviour',
14
+ SPAWN_BEHAVIOUR: 'SpawnBehaviour',
15
+ TIMELINE_BEHAVIOUR: 'TimelineBehaviour',
16
+ GROUPING_BEHAVIOUR: 'GroupingBehaviour',
17
+ SOUND_REACTIVE_BEHAVIOUR: 'SoundReactiveBehaviour',
18
+ LIGHT_EFFECT_BEHAVIOUR: 'LightEffectBehaviour',
19
+ STRETCH_BEHAVIOUR: 'StretchBehaviour',
20
+ TEMPERATURE_BEHAVIOUR: 'TemperatureBehaviour',
10
21
  };
22
+ export default behaviourNames;
11
23
  //# sourceMappingURL=BehaviourNames.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BehaviourNames.js","sourceRoot":"","sources":["../../../src/lib/behaviour/BehaviourNames.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,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;CAC5C,CAAA"}
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;CAC9C,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -0,0 +1,86 @@
1
+ import { Behaviour } from './index';
2
+ import Particle from '../Particle';
3
+ import Model from '../Model';
4
+ export default class CollisionBehaviour extends Behaviour {
5
+ enabled: boolean;
6
+ skipPositionBehaviourOnCollision: boolean;
7
+ skipAngularVelocityBehaviourOnCollision: boolean;
8
+ skipColorBehaviourOnCollision: boolean;
9
+ skipAttractionRepulsionBehaviourOnCollision: boolean;
10
+ skipEmitDirectionBehaviourOnCollision: boolean;
11
+ skipRotationBehaviourOnCollision: boolean;
12
+ skipSizeBehaviourOnCollision: boolean;
13
+ priority: number;
14
+ distance: number;
15
+ lines: {
16
+ point1: {
17
+ x: number;
18
+ y: number;
19
+ };
20
+ point2: {
21
+ x: number;
22
+ y: number;
23
+ };
24
+ }[];
25
+ /**
26
+ * Function that initializes a particle
27
+ * @param {Particle} particle - The particle to be initialized
28
+ * @param {Model} model - The model of the particle
29
+ */
30
+ init: (particle: Particle, model: Model) => void;
31
+ /**
32
+ * Applies the particle's velocity and acceleration to move it and calculate its size, rotation, and position.
33
+ * @param {Particle} particle - The particle to be moved
34
+ * @param {number} deltaTime - The time delta for the movement calculation
35
+ * @param {Model} model - The model containing information about the particle's movement
36
+ */
37
+ apply: (particle: Particle, deltaTime: number, model: Model) => void;
38
+ reflectVelocity: (particle: Particle, normal: {
39
+ x: number;
40
+ y: number;
41
+ }) => void;
42
+ checkCollisionAndReflect: (particle: Particle) => boolean;
43
+ calculateNormal: (point1: {
44
+ x: number;
45
+ y: number;
46
+ }, point2: {
47
+ x: number;
48
+ y: number;
49
+ }) => {
50
+ x: number;
51
+ y: number;
52
+ };
53
+ pointToLineDistance: (x: number, y: number, x1: number, y1: number, x2: number, y2: number) => number;
54
+ /**
55
+ * Gets the name of the behaviour
56
+ * @return {BehaviourNames} The name of the behaviour
57
+ */
58
+ getName(): string;
59
+ /**
60
+ * @description Retrieves the properties of the object.
61
+ * @returns {Object} The properties of the object.
62
+ */
63
+ getProps(): {
64
+ enabled: boolean;
65
+ skipPositionBehaviourOnCollision: boolean;
66
+ skipAngularVelocityBehaviourOnCollision: boolean;
67
+ skipColorBehaviourOnCollision: boolean;
68
+ skipAttractionRepulsionBehaviourOnCollision: boolean;
69
+ skipEmitDirectionBehaviourOnCollision: boolean;
70
+ skipRotationBehaviourOnCollision: boolean;
71
+ skipSizeBehaviourOnCollision: boolean;
72
+ priority: number;
73
+ lines: {
74
+ point1: {
75
+ x: number;
76
+ y: number;
77
+ };
78
+ point2: {
79
+ x: number;
80
+ y: number;
81
+ };
82
+ }[];
83
+ distance: number;
84
+ name: string;
85
+ };
86
+ }
@@ -0,0 +1,140 @@
1
+ import { Behaviour, BehaviourNames } from './index';
2
+ export default class CollisionBehaviour extends Behaviour {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.enabled = false;
6
+ this.skipPositionBehaviourOnCollision = false;
7
+ this.skipAngularVelocityBehaviourOnCollision = false;
8
+ this.skipColorBehaviourOnCollision = false;
9
+ this.skipAttractionRepulsionBehaviourOnCollision = false;
10
+ this.skipEmitDirectionBehaviourOnCollision = false;
11
+ this.skipRotationBehaviourOnCollision = false;
12
+ this.skipSizeBehaviourOnCollision = false;
13
+ this.priority = 10000;
14
+ this.distance = 10;
15
+ this.lines = [
16
+ { point1: { x: 0, y: 0 }, point2: { x: 0, y: 0 } },
17
+ ];
18
+ /**
19
+ * Function that initializes a particle
20
+ * @param {Particle} particle - The particle to be initialized
21
+ * @param {Model} model - The model of the particle
22
+ */
23
+ this.init = (particle, model) => {
24
+ // do nothing
25
+ };
26
+ /**
27
+ * Applies the particle's velocity and acceleration to move it and calculate its size, rotation, and position.
28
+ * @param {Particle} particle - The particle to be moved
29
+ * @param {number} deltaTime - The time delta for the movement calculation
30
+ * @param {Model} model - The model containing information about the particle's movement
31
+ */
32
+ this.apply = (particle, deltaTime, model) => {
33
+ if (!this.enabled)
34
+ return;
35
+ this.checkCollisionAndReflect(particle);
36
+ };
37
+ this.reflectVelocity = (particle, normal) => {
38
+ const dotProduct = particle.velocity.x * normal.x + particle.velocity.y * normal.y;
39
+ particle.velocity.x = particle.velocity.x - 2 * dotProduct * normal.x;
40
+ particle.velocity.y = particle.velocity.y - 2 * dotProduct * normal.y;
41
+ if (this.skipPositionBehaviourOnCollision) {
42
+ particle.skipPositionBehaviour = true;
43
+ }
44
+ if (this.skipAngularVelocityBehaviourOnCollision) {
45
+ particle.skipAngularVelocityBehaviour = true;
46
+ }
47
+ if (this.skipColorBehaviourOnCollision) {
48
+ particle.skipColorBehaviour = true;
49
+ }
50
+ if (this.skipAttractionRepulsionBehaviourOnCollision) {
51
+ particle.skipAttractionRepulsionBehaviour = true;
52
+ }
53
+ if (this.skipEmitDirectionBehaviourOnCollision) {
54
+ particle.skipEmitDirectionBehaviour = true;
55
+ }
56
+ if (this.skipRotationBehaviourOnCollision) {
57
+ particle.skipRotationBehaviour = true;
58
+ }
59
+ if (this.skipSizeBehaviourOnCollision) {
60
+ particle.skipSizeBehaviour = true;
61
+ }
62
+ };
63
+ this.checkCollisionAndReflect = (particle) => {
64
+ if (this.lines.length === 0)
65
+ return false; // No lines to check collision
66
+ for (const line of this.lines) {
67
+ const { point1, point2 } = line;
68
+ // Check if the particle is near the line segment (using point-line distance)
69
+ const dist = this.pointToLineDistance(particle.x, particle.y, point1.x, point1.y, point2.x, point2.y);
70
+ if (dist <= this.distance) {
71
+ // Reflect velocity based on the line's normal
72
+ const normal = this.calculateNormal(point1, point2);
73
+ this.reflectVelocity(particle, normal);
74
+ return true; // Stop further checks after first collision
75
+ }
76
+ }
77
+ return false;
78
+ };
79
+ this.calculateNormal = (point1, point2) => {
80
+ const dx = point2.x - point1.x;
81
+ const dy = point2.y - point1.y;
82
+ const length = Math.sqrt(dx * dx + dy * dy);
83
+ return { x: -dy / length, y: dx / length }; // Perpendicular vector (normalized)
84
+ };
85
+ this.pointToLineDistance = (x, y, x1, y1, x2, y2) => {
86
+ const A = x - x1;
87
+ const B = y - y1;
88
+ const C = x2 - x1;
89
+ const D = y2 - y1;
90
+ const dot = A * C + B * D;
91
+ const lenSq = C * C + D * D;
92
+ const param = lenSq !== 0 ? dot / lenSq : -1;
93
+ let xx;
94
+ let yy;
95
+ if (param < 0) {
96
+ xx = x1;
97
+ yy = y1;
98
+ }
99
+ else if (param > 1) {
100
+ xx = x2;
101
+ yy = y2;
102
+ }
103
+ else {
104
+ xx = x1 + param * C;
105
+ yy = y1 + param * D;
106
+ }
107
+ const dx = x - xx;
108
+ const dy = y - yy;
109
+ return Math.sqrt(dx * dx + dy * dy);
110
+ };
111
+ }
112
+ /**
113
+ * Gets the name of the behaviour
114
+ * @return {BehaviourNames} The name of the behaviour
115
+ */
116
+ getName() {
117
+ return BehaviourNames.COLLISION_BEHAVIOUR;
118
+ }
119
+ /**
120
+ * @description Retrieves the properties of the object.
121
+ * @returns {Object} The properties of the object.
122
+ */
123
+ getProps() {
124
+ return {
125
+ enabled: this.enabled,
126
+ skipPositionBehaviourOnCollision: this.skipPositionBehaviourOnCollision,
127
+ skipAngularVelocityBehaviourOnCollision: this.skipAngularVelocityBehaviourOnCollision,
128
+ skipColorBehaviourOnCollision: this.skipColorBehaviourOnCollision,
129
+ skipAttractionRepulsionBehaviourOnCollision: this.skipAttractionRepulsionBehaviourOnCollision,
130
+ skipEmitDirectionBehaviourOnCollision: this.skipEmitDirectionBehaviourOnCollision,
131
+ skipRotationBehaviourOnCollision: this.skipRotationBehaviourOnCollision,
132
+ skipSizeBehaviourOnCollision: this.skipSizeBehaviourOnCollision,
133
+ priority: this.priority,
134
+ lines: this.lines,
135
+ distance: this.distance,
136
+ name: this.getName(),
137
+ };
138
+ }
139
+ }
140
+ //# sourceMappingURL=CollisionBehaviour.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollisionBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/CollisionBehaviour.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,22 @@ export default class ColorBehaviour extends Behaviour {
9
9
  startVariance: Color;
10
10
  endVariance: Color;
11
11
  sinus: boolean;
12
+ colorStops: Color[];
13
+ usePerlin: boolean;
14
+ pulseSpeed: number;
15
+ pulseIntensity: number;
16
+ mirrorTransition: boolean;
17
+ fadeToGray: boolean;
18
+ fadeToTransparent: boolean;
19
+ flickerIntensity: number;
12
20
  init: (particle: Particle) => void;
13
21
  apply: (particle: Particle) => void;
22
+ applyColorStops: (particle: Particle, lifeProgress: number) => void;
23
+ pseudoRandomNoise(seed: number): number;
24
+ applyPerlinColor: (particle: Particle, lifeProgress: number) => void;
25
+ applyPulseEffect: (particle: Particle, lifeProgress: number) => void;
26
+ applyFadeToGray: (particle: Particle) => void;
27
+ applyFlickering: (particle: Particle) => void;
14
28
  getName(): string;
15
29
  getProps(): {
16
30
  enabled: boolean;
@@ -40,6 +54,14 @@ export default class ColorBehaviour extends Behaviour {
40
54
  _alpha: number;
41
55
  };
42
56
  sinus: boolean;
57
+ colorStops: Color[];
58
+ usePerlin: boolean;
59
+ pulseSpeed: number;
60
+ pulseIntensity: number;
61
+ mirrorTransition: boolean;
62
+ fadeToGray: boolean;
63
+ fadeToTransparent: boolean;
64
+ flickerIntensity: number;
43
65
  name: string;
44
66
  };
45
67
  }
@@ -11,7 +11,18 @@ export default class ColorBehaviour extends Behaviour {
11
11
  this.startVariance = new Color(0, 0, 0, 0);
12
12
  this.endVariance = new Color(0, 0, 0, 0);
13
13
  this.sinus = false;
14
+ // New properties
15
+ this.colorStops = []; // Multi-gradient stops
16
+ this.usePerlin = false; // Enable Perlin noise-based color changes
17
+ this.pulseSpeed = 0; // Speed of the pulse effect
18
+ this.pulseIntensity = 0; // Intensity of the pulse effect
19
+ this.mirrorTransition = false; // Mirror the color transition midway
20
+ this.fadeToGray = false; // Desaturate color over time
21
+ this.fadeToTransparent = false; // Fade alpha over time
22
+ this.flickerIntensity = 0; // Intensity of random flickering
14
23
  this.init = (particle) => {
24
+ if (!this.enabled)
25
+ return;
15
26
  particle.colorStart.copyFrom(this.start);
16
27
  particle.colorStart.r += this.varianceFrom(this.startVariance.r);
17
28
  particle.colorStart.g += this.varianceFrom(this.startVariance.g);
@@ -25,18 +36,115 @@ export default class ColorBehaviour extends Behaviour {
25
36
  particle.color.copyFrom(particle.colorStart);
26
37
  };
27
38
  this.apply = (particle) => {
28
- const { colorStart, lifeProgress, colorEnd } = particle;
39
+ if (!this.enabled)
40
+ return;
41
+ if (particle.skipColorBehaviour)
42
+ return;
43
+ const { lifeProgress } = particle;
44
+ // Multi-gradient color transitions
45
+ if (this.colorStops.length > 0) {
46
+ this.applyColorStops(particle, lifeProgress);
47
+ if (this.sinus) {
48
+ particle.color.alpha = Math.sin(lifeProgress * 3.1);
49
+ }
50
+ else if (this.fadeToTransparent) {
51
+ particle.color.alpha = (1 - lifeProgress) * this.start.alpha;
52
+ }
53
+ return;
54
+ }
55
+ // Perlin noise color changes
56
+ if (this.usePerlin) {
57
+ this.applyPerlinColor(particle, lifeProgress);
58
+ return;
59
+ }
60
+ // Default linear gradient behavior
61
+ const { colorStart, colorEnd } = particle;
62
+ let effectiveProgress = lifeProgress;
63
+ // Mirror transition if enabled
64
+ if (this.mirrorTransition) {
65
+ effectiveProgress = lifeProgress < 0.5 ? lifeProgress * 2 : (1 - lifeProgress) * 2;
66
+ }
29
67
  particle.color.copyFrom(colorStart);
30
- particle.color.r += (colorEnd.r - colorStart.r) * lifeProgress;
31
- particle.color.g += (colorEnd.g - colorStart.g) * lifeProgress;
32
- particle.color.b += (colorEnd.b - colorStart.b) * lifeProgress;
68
+ particle.color.r += (colorEnd.r - colorStart.r) * effectiveProgress;
69
+ particle.color.g += (colorEnd.g - colorStart.g) * effectiveProgress;
70
+ particle.color.b += (colorEnd.b - colorStart.b) * effectiveProgress;
33
71
  if (!this.sinus) {
34
- particle.color.alpha += (colorEnd.alpha - colorStart.alpha) * lifeProgress;
72
+ particle.color.alpha += (colorEnd.alpha - colorStart.alpha) * effectiveProgress;
35
73
  }
36
74
  else {
37
- particle.color.alpha = Math.sin(lifeProgress * 3.1);
75
+ if (!this.fadeToTransparent) {
76
+ particle.color.alpha = Math.sin(effectiveProgress * 3.1);
77
+ if (particle.color.alpha > particle.superColorAlphaEnd) {
78
+ particle.color.alpha = particle.superColorAlphaEnd;
79
+ }
80
+ }
81
+ }
82
+ // Apply pulse effect if enabled
83
+ if (this.pulseIntensity > 0) {
84
+ this.applyPulseEffect(particle, lifeProgress);
85
+ }
86
+ // Desaturation (fade to gray)
87
+ if (this.fadeToGray) {
88
+ this.applyFadeToGray(particle);
89
+ }
90
+ // Alpha fading (fade to transparent)
91
+ if (this.fadeToTransparent && !this.sinus) {
92
+ particle.color.alpha = (1 - lifeProgress) * this.start.alpha;
93
+ }
94
+ // Flickering effect
95
+ if (this.flickerIntensity) {
96
+ this.applyFlickering(particle);
38
97
  }
39
98
  };
99
+ this.applyColorStops = (particle, lifeProgress) => {
100
+ const { colorStops } = this;
101
+ // Ensure at least two color stops exist
102
+ if (colorStops.length < 2) {
103
+ return;
104
+ }
105
+ // Clamp segment to valid range
106
+ const segment = Math.floor(lifeProgress * (colorStops.length - 1));
107
+ const nextSegment = Math.min(segment + 1, colorStops.length - 1); // Prevent out-of-bounds access
108
+ const t = lifeProgress * (colorStops.length - 1) - segment;
109
+ const startColor = colorStops[segment];
110
+ const endColor = colorStops[nextSegment]; // Safely access the next color stop
111
+ particle.color.r = startColor.r + (endColor.r - startColor.r) * t;
112
+ particle.color.g = startColor.g + (endColor.g - startColor.g) * t;
113
+ particle.color.b = startColor.b + (endColor.b - startColor.b) * t;
114
+ particle.color.alpha = startColor.alpha + (endColor.alpha - startColor.alpha) * t;
115
+ };
116
+ this.applyPerlinColor = (particle, lifeProgress) => {
117
+ const time = lifeProgress * 10; // Scale time
118
+ particle.color.r = this.pseudoRandomNoise(time) * 255;
119
+ particle.color.g = this.pseudoRandomNoise(time + 1) * 255;
120
+ particle.color.b = this.pseudoRandomNoise(time + 2) * 255;
121
+ particle.color.alpha = this.pseudoRandomNoise(time + 3);
122
+ };
123
+ this.applyPulseEffect = (particle, lifeProgress) => {
124
+ // Compute pulse value based on life progress, speed, and intensity
125
+ const pulse = 1 + Math.sin(lifeProgress * this.pulseSpeed * Math.PI * 2) * this.pulseIntensity;
126
+ // Apply pulse effect to the color
127
+ particle.color.r = Math.max(0, Math.min(255, particle.color.r * pulse));
128
+ particle.color.g = Math.max(0, Math.min(255, particle.color.g * pulse));
129
+ particle.color.b = Math.max(0, Math.min(255, particle.color.b * pulse));
130
+ };
131
+ this.applyFadeToGray = (particle) => {
132
+ const { color } = particle;
133
+ const gray = (color.r + color.g + color.b) / 3;
134
+ particle.color.r = gray;
135
+ particle.color.g = gray;
136
+ particle.color.b = gray;
137
+ };
138
+ this.applyFlickering = (particle) => {
139
+ const flickerAmount = (Math.random() - 0.5) * this.flickerIntensity * 255;
140
+ particle.color.r = Math.max(0, Math.min(255, particle.color.r + flickerAmount));
141
+ particle.color.g = Math.max(0, Math.min(255, particle.color.g + flickerAmount));
142
+ particle.color.b = Math.max(0, Math.min(255, particle.color.b + flickerAmount));
143
+ };
144
+ }
145
+ pseudoRandomNoise(seed) {
146
+ const x = Math.sin(seed) * 10000;
147
+ return x - Math.floor(x); // Returns a value between 0 and 1
40
148
  }
41
149
  getName() {
42
150
  return BehaviourNames.COLOR_BEHAVIOUR;
@@ -70,6 +178,14 @@ export default class ColorBehaviour extends Behaviour {
70
178
  _alpha: this.endVariance.alpha,
71
179
  },
72
180
  sinus: this.sinus,
181
+ colorStops: this.colorStops,
182
+ usePerlin: this.usePerlin,
183
+ pulseSpeed: this.pulseSpeed,
184
+ pulseIntensity: this.pulseIntensity,
185
+ mirrorTransition: this.mirrorTransition,
186
+ fadeToGray: this.fadeToGray,
187
+ fadeToTransparent: this.fadeToTransparent,
188
+ flickerIntensity: this.flickerIntensity,
73
189
  name: this.getName(),
74
190
  };
75
191
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ColorBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/ColorBehaviour.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ColorBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/ColorBehaviour.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,16 @@
1
1
  import Behaviour from './Behaviour';
2
2
  import Particle from '../Particle';
3
- /**
4
- * The EmitDirectionBehaviour class that inherits from the Behaviour class.
5
- * This class is used to set the direction of a particle when it is emitted.
6
- * @export
7
- * @class EmitDirectionBehaviour
8
- * @extends {Behaviour}
9
- */
10
3
  export default class EmitDirectionBehaviour extends Behaviour {
11
4
  enabled: boolean;
12
5
  priority: number;
13
6
  angle: number;
14
7
  variance: number;
8
+ oscillate: boolean;
9
+ oscillationSpeed: number;
10
+ oscillationAmplitude: number;
11
+ useNoise: boolean;
12
+ noiseScale: number;
13
+ velocityScaling: boolean;
15
14
  /**
16
15
  * Initializes the particle's direction.
17
16
  * @param {Particle} particle - The particle that is being initialized.
@@ -24,7 +23,8 @@ export default class EmitDirectionBehaviour extends Behaviour {
24
23
  * @param {number} deltaTime - The amount of time since the behavior was last applied.
25
24
  * @memberof EmitDirectionBehaviour
26
25
  */
27
- apply: (particle: Particle) => void;
26
+ apply: (particle: Particle, deltaTime: number) => void;
27
+ pseudoRandomNoise(seed: number): number;
28
28
  /**
29
29
  * Gets the name of the behavior.
30
30
  * @returns {BehaviourNames.EMIT_DIRECTION}
@@ -41,6 +41,12 @@ export default class EmitDirectionBehaviour extends Behaviour {
41
41
  priority: number;
42
42
  angle: number;
43
43
  variance: number;
44
+ oscillate: boolean;
45
+ oscillationSpeed: number;
46
+ oscillationAmplitude: number;
47
+ useNoise: boolean;
48
+ noiseScale: number;
49
+ velocityScaling: boolean;
44
50
  name: string;
45
51
  };
46
52
  }