custom-pixi-particles 7.1.1 → 7.1.2

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 (163) hide show
  1. package/dist/index.d.ts +15 -0
  2. package/dist/index.js +45 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/lib/Model.d.ts +32 -0
  5. package/dist/lib/Model.js +44 -0
  6. package/dist/lib/Model.js.map +1 -0
  7. package/dist/lib/Particle.d.ts +234 -0
  8. package/dist/lib/Particle.js +201 -0
  9. package/dist/lib/Particle.js.map +1 -0
  10. package/dist/lib/ParticlePool.d.ts +37 -0
  11. package/dist/lib/ParticlePool.js +56 -0
  12. package/dist/lib/ParticlePool.js.map +1 -0
  13. package/dist/lib/behaviour/AngularVelocityBehaviour.d.ts +61 -0
  14. package/dist/lib/behaviour/AngularVelocityBehaviour.js +118 -0
  15. package/dist/lib/behaviour/AngularVelocityBehaviour.js.map +1 -0
  16. package/dist/lib/behaviour/AttractionRepulsionBehaviour.d.ts +42 -0
  17. package/dist/lib/behaviour/AttractionRepulsionBehaviour.js +78 -0
  18. package/dist/lib/behaviour/AttractionRepulsionBehaviour.js.map +1 -0
  19. package/dist/lib/behaviour/Behaviour.d.ts +33 -0
  20. package/dist/lib/behaviour/Behaviour.js +45 -0
  21. package/dist/lib/behaviour/Behaviour.js.map +1 -0
  22. package/dist/lib/behaviour/BehaviourNames.d.ts +22 -0
  23. package/dist/lib/behaviour/BehaviourNames.js +23 -0
  24. package/dist/lib/behaviour/BehaviourNames.js.map +1 -0
  25. package/dist/lib/behaviour/CollisionBehaviour.d.ts +86 -0
  26. package/dist/lib/behaviour/CollisionBehaviour.js +140 -0
  27. package/dist/lib/behaviour/CollisionBehaviour.js.map +1 -0
  28. package/dist/lib/behaviour/ColorBehaviour.d.ts +67 -0
  29. package/dist/lib/behaviour/ColorBehaviour.js +193 -0
  30. package/dist/lib/behaviour/ColorBehaviour.js.map +1 -0
  31. package/dist/lib/behaviour/EmitDirectionBehaviour.d.ts +52 -0
  32. package/dist/lib/behaviour/EmitDirectionBehaviour.js +105 -0
  33. package/dist/lib/behaviour/EmitDirectionBehaviour.js.map +1 -0
  34. package/dist/lib/behaviour/EmitterBehaviours.d.ts +69 -0
  35. package/dist/lib/behaviour/EmitterBehaviours.js +116 -0
  36. package/dist/lib/behaviour/EmitterBehaviours.js.map +1 -0
  37. package/dist/lib/behaviour/ForceFieldsBehaviour.d.ts +53 -0
  38. package/dist/lib/behaviour/ForceFieldsBehaviour.js +80 -0
  39. package/dist/lib/behaviour/ForceFieldsBehaviour.js.map +1 -0
  40. package/dist/lib/behaviour/GroupingBehaviour.d.ts +57 -0
  41. package/dist/lib/behaviour/GroupingBehaviour.js +143 -0
  42. package/dist/lib/behaviour/GroupingBehaviour.js.map +1 -0
  43. package/dist/lib/behaviour/LifeBehaviour.d.ts +47 -0
  44. package/dist/lib/behaviour/LifeBehaviour.js +65 -0
  45. package/dist/lib/behaviour/LifeBehaviour.js.map +1 -0
  46. package/dist/lib/behaviour/LightEffectBehaviour.d.ts +59 -0
  47. package/dist/lib/behaviour/LightEffectBehaviour.js +94 -0
  48. package/dist/lib/behaviour/LightEffectBehaviour.js.map +1 -0
  49. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.d.ts +28 -0
  50. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.js +50 -0
  51. package/dist/lib/behaviour/NoiseBasedMotionBehaviour.js.map +1 -0
  52. package/dist/lib/behaviour/PositionBehaviour.d.ts +164 -0
  53. package/dist/lib/behaviour/PositionBehaviour.js +484 -0
  54. package/dist/lib/behaviour/PositionBehaviour.js.map +1 -0
  55. package/dist/lib/behaviour/RotationBehaviour.d.ts +59 -0
  56. package/dist/lib/behaviour/RotationBehaviour.js +100 -0
  57. package/dist/lib/behaviour/RotationBehaviour.js.map +1 -0
  58. package/dist/lib/behaviour/SizeBehaviour.d.ts +61 -0
  59. package/dist/lib/behaviour/SizeBehaviour.js +156 -0
  60. package/dist/lib/behaviour/SizeBehaviour.js.map +1 -0
  61. package/dist/lib/behaviour/SoundReactiveBehaviour.d.ts +58 -0
  62. package/dist/lib/behaviour/SoundReactiveBehaviour.js +132 -0
  63. package/dist/lib/behaviour/SoundReactiveBehaviour.js.map +1 -0
  64. package/dist/lib/behaviour/SpawnBehaviour.d.ts +89 -0
  65. package/dist/lib/behaviour/SpawnBehaviour.js +705 -0
  66. package/dist/lib/behaviour/SpawnBehaviour.js.map +1 -0
  67. package/dist/lib/behaviour/StretchBehaviour.d.ts +30 -0
  68. package/dist/lib/behaviour/StretchBehaviour.js +59 -0
  69. package/dist/lib/behaviour/StretchBehaviour.js.map +1 -0
  70. package/dist/lib/behaviour/TemperatureBehaviour.d.ts +47 -0
  71. package/dist/lib/behaviour/TemperatureBehaviour.js +64 -0
  72. package/dist/lib/behaviour/TemperatureBehaviour.js.map +1 -0
  73. package/dist/lib/behaviour/TimelineBehaviour.d.ts +73 -0
  74. package/dist/lib/behaviour/TimelineBehaviour.js +100 -0
  75. package/dist/lib/behaviour/TimelineBehaviour.js.map +1 -0
  76. package/dist/lib/behaviour/TurbulenceBehaviour.d.ts +73 -0
  77. package/dist/lib/behaviour/TurbulenceBehaviour.js +133 -0
  78. package/dist/lib/behaviour/TurbulenceBehaviour.js.map +1 -0
  79. package/dist/lib/behaviour/index.d.ts +23 -0
  80. package/dist/lib/behaviour/index.js +24 -0
  81. package/dist/lib/behaviour/index.js.map +1 -0
  82. package/dist/lib/customPixiParticlesSettingsInterface.d.ts +19 -0
  83. package/dist/lib/customPixiParticlesSettingsInterface.js +2 -0
  84. package/dist/lib/customPixiParticlesSettingsInterface.js.map +1 -0
  85. package/dist/lib/emission/AbstractEmission.d.ts +30 -0
  86. package/dist/lib/emission/AbstractEmission.js +39 -0
  87. package/dist/lib/emission/AbstractEmission.js.map +1 -0
  88. package/dist/lib/emission/EmissionTypes.d.ts +6 -0
  89. package/dist/lib/emission/EmissionTypes.js +6 -0
  90. package/dist/lib/emission/EmissionTypes.js.map +1 -0
  91. package/dist/lib/emission/RandomEmission.d.ts +44 -0
  92. package/dist/lib/emission/RandomEmission.js +66 -0
  93. package/dist/lib/emission/RandomEmission.js.map +1 -0
  94. package/dist/lib/emission/StandardEmission.d.ts +62 -0
  95. package/dist/lib/emission/StandardEmission.js +87 -0
  96. package/dist/lib/emission/StandardEmission.js.map +1 -0
  97. package/dist/lib/emission/UniformEmission.d.ts +56 -0
  98. package/dist/lib/emission/UniformEmission.js +83 -0
  99. package/dist/lib/emission/UniformEmission.js.map +1 -0
  100. package/dist/lib/emission/index.d.ts +6 -0
  101. package/dist/lib/emission/index.js +7 -0
  102. package/dist/lib/emission/index.js.map +1 -0
  103. package/dist/lib/emitter/Duration.d.ts +27 -0
  104. package/dist/lib/emitter/Duration.js +41 -0
  105. package/dist/lib/emitter/Duration.js.map +1 -0
  106. package/dist/lib/emitter/Emitter.d.ts +116 -0
  107. package/dist/lib/emitter/Emitter.js +240 -0
  108. package/dist/lib/emitter/Emitter.js.map +1 -0
  109. package/dist/lib/emitter/index.d.ts +3 -0
  110. package/dist/lib/emitter/index.js +4 -0
  111. package/dist/lib/emitter/index.js.map +1 -0
  112. package/dist/lib/index.d.ts +20 -0
  113. package/dist/lib/index.js +21 -0
  114. package/dist/lib/index.js.map +1 -0
  115. package/dist/lib/parser/BehaviourParser.d.ts +21 -0
  116. package/dist/lib/parser/BehaviourParser.js +72 -0
  117. package/dist/lib/parser/BehaviourParser.js.map +1 -0
  118. package/dist/lib/parser/CompatibilityHelper.d.ts +12 -0
  119. package/dist/lib/parser/CompatibilityHelper.js +19 -0
  120. package/dist/lib/parser/CompatibilityHelper.js.map +1 -0
  121. package/dist/lib/parser/EmitControllerParser.d.ts +27 -0
  122. package/dist/lib/parser/EmitControllerParser.js +39 -0
  123. package/dist/lib/parser/EmitControllerParser.js.map +1 -0
  124. package/dist/lib/parser/EmitterParser.d.ts +67 -0
  125. package/dist/lib/parser/EmitterParser.js +168 -0
  126. package/dist/lib/parser/EmitterParser.js.map +1 -0
  127. package/dist/lib/parser/index.d.ts +5 -0
  128. package/dist/lib/parser/index.js +6 -0
  129. package/dist/lib/parser/index.js.map +1 -0
  130. package/dist/lib/pixi/Renderer.d.ts +125 -0
  131. package/dist/lib/pixi/Renderer.js +566 -0
  132. package/dist/lib/pixi/Renderer.js.map +1 -0
  133. package/dist/lib/pixi/TestRenderer.d.ts +125 -0
  134. package/dist/lib/pixi/TestRenderer.js +560 -0
  135. package/dist/lib/pixi/TestRenderer.js.map +1 -0
  136. package/dist/lib/util/Color.d.ts +133 -0
  137. package/dist/lib/util/Color.js +173 -0
  138. package/dist/lib/util/Color.js.map +1 -0
  139. package/dist/lib/util/List.d.ts +49 -0
  140. package/dist/lib/util/List.js +87 -0
  141. package/dist/lib/util/List.js.map +1 -0
  142. package/dist/lib/util/MinMax.d.ts +34 -0
  143. package/dist/lib/util/MinMax.js +46 -0
  144. package/dist/lib/util/MinMax.js.map +1 -0
  145. package/dist/lib/util/Point.d.ts +34 -0
  146. package/dist/lib/util/Point.js +46 -0
  147. package/dist/lib/util/Point.js.map +1 -0
  148. package/dist/lib/util/Random.d.ts +24 -0
  149. package/dist/lib/util/Random.js +30 -0
  150. package/dist/lib/util/Random.js.map +1 -0
  151. package/dist/lib/util/ThereBack.d.ts +14 -0
  152. package/dist/lib/util/ThereBack.js +23 -0
  153. package/dist/lib/util/ThereBack.js.map +1 -0
  154. package/dist/lib/util/index.d.ts +5 -0
  155. package/dist/lib/util/index.js +6 -0
  156. package/dist/lib/util/index.js.map +1 -0
  157. package/dist/lib/util/maths.d.ts +10 -0
  158. package/dist/lib/util/maths.js +13 -0
  159. package/dist/lib/util/maths.js.map +1 -0
  160. package/dist/lib/util/turbulencePool.d.ts +4 -0
  161. package/dist/lib/util/turbulencePool.js +7 -0
  162. package/dist/lib/util/turbulencePool.js.map +1 -0
  163. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollisionBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/CollisionBehaviour.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { Color } from '../util';
2
+ import Behaviour from './Behaviour';
3
+ import Particle from '../Particle';
4
+ export default class ColorBehaviour extends Behaviour {
5
+ enabled: boolean;
6
+ priority: number;
7
+ start: Color;
8
+ end: Color;
9
+ startVariance: Color;
10
+ endVariance: Color;
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;
20
+ init: (particle: Particle) => void;
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;
28
+ getName(): string;
29
+ getProps(): {
30
+ enabled: boolean;
31
+ priority: number;
32
+ start: {
33
+ _r: number;
34
+ _g: number;
35
+ _b: number;
36
+ _alpha: number;
37
+ };
38
+ end: {
39
+ _r: number;
40
+ _g: number;
41
+ _b: number;
42
+ _alpha: number;
43
+ };
44
+ startVariance: {
45
+ _r: number;
46
+ _g: number;
47
+ _b: number;
48
+ _alpha: number;
49
+ };
50
+ endVariance: {
51
+ _r: number;
52
+ _g: number;
53
+ _b: number;
54
+ _alpha: number;
55
+ };
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;
65
+ name: string;
66
+ };
67
+ }
@@ -0,0 +1,193 @@
1
+ import { Color } from '../util';
2
+ import Behaviour from './Behaviour';
3
+ import BehaviourNames from './BehaviourNames';
4
+ export default class ColorBehaviour extends Behaviour {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.enabled = false;
8
+ this.priority = 0;
9
+ this.start = new Color();
10
+ this.end = new Color();
11
+ this.startVariance = new Color(0, 0, 0, 0);
12
+ this.endVariance = new Color(0, 0, 0, 0);
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
23
+ this.init = (particle) => {
24
+ if (!this.enabled)
25
+ return;
26
+ particle.colorStart.copyFrom(this.start);
27
+ particle.colorStart.r += this.varianceFrom(this.startVariance.r);
28
+ particle.colorStart.g += this.varianceFrom(this.startVariance.g);
29
+ particle.colorStart.b += this.varianceFrom(this.startVariance.b);
30
+ particle.colorStart.alpha += this.varianceFrom(this.startVariance.alpha);
31
+ particle.colorEnd.copyFrom(this.end);
32
+ particle.colorEnd.r += this.varianceFrom(this.endVariance.r);
33
+ particle.colorEnd.g += this.varianceFrom(this.endVariance.g);
34
+ particle.colorEnd.b += this.varianceFrom(this.endVariance.b);
35
+ particle.colorEnd.alpha += this.varianceFrom(this.endVariance.alpha);
36
+ particle.color.copyFrom(particle.colorStart);
37
+ };
38
+ this.apply = (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
+ }
67
+ particle.color.copyFrom(colorStart);
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;
71
+ if (!this.sinus) {
72
+ particle.color.alpha += (colorEnd.alpha - colorStart.alpha) * effectiveProgress;
73
+ }
74
+ else {
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);
97
+ }
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
148
+ }
149
+ getName() {
150
+ return BehaviourNames.COLOR_BEHAVIOUR;
151
+ }
152
+ getProps() {
153
+ return {
154
+ enabled: this.enabled,
155
+ priority: this.priority,
156
+ start: {
157
+ _r: this.start.r,
158
+ _g: this.start.g,
159
+ _b: this.start.b,
160
+ _alpha: this.start.alpha,
161
+ },
162
+ end: {
163
+ _r: this.end.r,
164
+ _g: this.end.g,
165
+ _b: this.end.b,
166
+ _alpha: this.end.alpha,
167
+ },
168
+ startVariance: {
169
+ _r: this.startVariance.r,
170
+ _g: this.startVariance.g,
171
+ _b: this.startVariance.b,
172
+ _alpha: this.startVariance.alpha,
173
+ },
174
+ endVariance: {
175
+ _r: this.endVariance.r,
176
+ _g: this.endVariance.g,
177
+ _b: this.endVariance.b,
178
+ _alpha: this.endVariance.alpha,
179
+ },
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,
189
+ name: this.getName(),
190
+ };
191
+ }
192
+ }
193
+ //# sourceMappingURL=ColorBehaviour.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/ColorBehaviour.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import Behaviour from './Behaviour';
2
+ import Particle from '../Particle';
3
+ export default class EmitDirectionBehaviour extends Behaviour {
4
+ enabled: boolean;
5
+ priority: number;
6
+ angle: number;
7
+ variance: number;
8
+ oscillate: boolean;
9
+ oscillationSpeed: number;
10
+ oscillationAmplitude: number;
11
+ useNoise: boolean;
12
+ noiseScale: number;
13
+ velocityScaling: boolean;
14
+ /**
15
+ * Initializes the particle's direction.
16
+ * @param {Particle} particle - The particle that is being initialized.
17
+ * @memberof EmitDirectionBehaviour
18
+ */
19
+ init: (particle: Particle) => void;
20
+ /**
21
+ * Applies the behavior to the particle.
22
+ * @param {Particle} particle - The particle to which the behavior is being applied.
23
+ * @param {number} deltaTime - The amount of time since the behavior was last applied.
24
+ * @memberof EmitDirectionBehaviour
25
+ */
26
+ apply: (particle: Particle, deltaTime: number) => void;
27
+ pseudoRandomNoise(seed: number): number;
28
+ /**
29
+ * Gets the name of the behavior.
30
+ * @returns {BehaviourNames.EMIT_DIRECTION}
31
+ * @memberof EmitDirectionBehaviour
32
+ */
33
+ getName(): string;
34
+ /**
35
+ * Gets the properties of the behavior.
36
+ * @returns {object} - The properties of the behavior.
37
+ * @memberof EmitDirectionBehaviour
38
+ */
39
+ getProps(): {
40
+ enabled: boolean;
41
+ priority: number;
42
+ angle: number;
43
+ variance: number;
44
+ oscillate: boolean;
45
+ oscillationSpeed: number;
46
+ oscillationAmplitude: number;
47
+ useNoise: boolean;
48
+ noiseScale: number;
49
+ velocityScaling: boolean;
50
+ name: string;
51
+ };
52
+ }
@@ -0,0 +1,105 @@
1
+ import Behaviour from './Behaviour';
2
+ import BehaviourNames from './BehaviourNames';
3
+ let _tmp = 0;
4
+ export default class EmitDirectionBehaviour extends Behaviour {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.enabled = true;
8
+ this.priority = 0;
9
+ this.angle = 0;
10
+ this.variance = 0;
11
+ // New properties
12
+ this.oscillate = false; // Enable directional oscillation
13
+ this.oscillationSpeed = 1; // Speed of oscillation
14
+ this.oscillationAmplitude = 0; // Amplitude of oscillation
15
+ this.useNoise = false; // Use Perlin noise for direction changes
16
+ this.noiseScale = 0.1; // Scale of the noise effect
17
+ this.velocityScaling = false; // Scale velocity based on life progress
18
+ /**
19
+ * Initializes the particle's direction.
20
+ * @param {Particle} particle - The particle that is being initialized.
21
+ * @memberof EmitDirectionBehaviour
22
+ */
23
+ this.init = (particle) => {
24
+ if (!this.enabled)
25
+ return;
26
+ const baseAngle = this.angle + this.varianceFrom(this.variance);
27
+ particle.initialDirectionCos = Math.cos(baseAngle);
28
+ particle.initialDirectionSin = Math.sin(baseAngle);
29
+ particle.directionCos = particle.initialDirectionCos;
30
+ particle.directionSin = particle.initialDirectionSin;
31
+ particle.velocityScale = 1;
32
+ };
33
+ /**
34
+ * Applies the behavior to the particle.
35
+ * @param {Particle} particle - The particle to which the behavior is being applied.
36
+ * @param {number} deltaTime - The amount of time since the behavior was last applied.
37
+ * @memberof EmitDirectionBehaviour
38
+ */
39
+ this.apply = (particle, deltaTime) => {
40
+ if (!this.enabled)
41
+ return;
42
+ if (particle.skipEmitDirectionBehaviour)
43
+ return;
44
+ const { x, y, directionSin, directionCos, lifeProgress } = particle;
45
+ // Apply directional oscillation
46
+ if (this.oscillate) {
47
+ const oscillation = Math.sin(particle.lifeTime * this.oscillationSpeed) * this.oscillationAmplitude;
48
+ particle.directionCos = Math.cos(oscillation);
49
+ particle.directionSin = Math.sin(oscillation);
50
+ }
51
+ // Apply Perlin noise-based direction changes
52
+ if (this.useNoise) {
53
+ const noiseValue = this.pseudoRandomNoise(particle.lifeTime * this.noiseScale);
54
+ const noiseAngle = noiseValue * 2 * Math.PI; // Map noise to full circle
55
+ particle.directionCos = Math.cos(noiseAngle);
56
+ particle.directionSin = Math.sin(noiseAngle);
57
+ }
58
+ // Scale velocity based on life progress
59
+ if (this.velocityScaling) {
60
+ particle.velocityScale = lifeProgress;
61
+ }
62
+ // Apply directional movement
63
+ _tmp = directionCos * x - directionSin * y;
64
+ particle.y = directionSin * x + directionCos * y;
65
+ particle.x = _tmp;
66
+ // Scale movement
67
+ particle.x *= particle.velocityScale;
68
+ particle.y *= particle.velocityScale;
69
+ };
70
+ }
71
+ pseudoRandomNoise(seed) {
72
+ const prime = 2654435761; // A prime constant
73
+ const x = Math.sin(seed * prime) * 10000; // Scale the randomness
74
+ return x - Math.floor(x); // Ensure result is between 0 and 1
75
+ }
76
+ /**
77
+ * Gets the name of the behavior.
78
+ * @returns {BehaviourNames.EMIT_DIRECTION}
79
+ * @memberof EmitDirectionBehaviour
80
+ */
81
+ getName() {
82
+ return BehaviourNames.EMIT_DIRECTION;
83
+ }
84
+ /**
85
+ * Gets the properties of the behavior.
86
+ * @returns {object} - The properties of the behavior.
87
+ * @memberof EmitDirectionBehaviour
88
+ */
89
+ getProps() {
90
+ return {
91
+ enabled: this.enabled,
92
+ priority: this.priority,
93
+ angle: this.angle,
94
+ variance: this.variance,
95
+ oscillate: this.oscillate,
96
+ oscillationSpeed: this.oscillationSpeed,
97
+ oscillationAmplitude: this.oscillationAmplitude,
98
+ useNoise: this.useNoise,
99
+ noiseScale: this.noiseScale,
100
+ velocityScaling: this.velocityScaling,
101
+ name: this.getName(),
102
+ };
103
+ }
104
+ }
105
+ //# sourceMappingURL=EmitDirectionBehaviour.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmitDirectionBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/EmitDirectionBehaviour.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import Particle from '../Particle';
2
+ import Model from '../Model';
3
+ import TurbulencePool from '../util/turbulencePool';
4
+ /**
5
+ * EmitterBehaviours class manages the behaviour of particles
6
+ */
7
+ export default class EmitterBehaviours {
8
+ behaviours: any;
9
+ /**
10
+ * Gets all the enabled behaviours
11
+ *
12
+ * @return {any[]} The enabled behaviours
13
+ */
14
+ getAll: () => any;
15
+ /**
16
+ * Clears all the stored behaviours
17
+ */
18
+ clear: () => void;
19
+ /**
20
+ * Adds a behaviour
21
+ *
22
+ * @param {any} behaviour The behaviour to add
23
+ *
24
+ * @return {any} The added behaviour
25
+ */
26
+ add: (behaviour: any) => any;
27
+ /**
28
+ * Checks if there are no behaviours stored
29
+ *
30
+ * @return {boolean} True if there are no behaviours stored, false otherwise
31
+ */
32
+ isEmpty: () => boolean;
33
+ /**
34
+ * Gets a behaviour by name
35
+ *
36
+ * @param {string} name The name of the behaviour to get
37
+ *
38
+ * @return {any | null} The behaviour with the given name or null if not found
39
+ */
40
+ getByName: (name: string) => any;
41
+ /**
42
+ * Removes a behaviour by name
43
+ *
44
+ * @param {string} name The name of the behaviour to remove
45
+ */
46
+ removeByName: (name: string) => void;
47
+ /**
48
+ * Initialises the behaviours
49
+ *
50
+ * @param {Particle} particle The particle
51
+ * @param {Model} model The model
52
+ * @param {Model} turbulencePool The turbulencePool
53
+ */
54
+ init: (particle: Particle, model: Model, turbulencePool: TurbulencePool) => void;
55
+ /**
56
+ * Applies the behaviours
57
+ *
58
+ * @param {Particle} particle The particle
59
+ * @param {number} deltaTime The delta time
60
+ * @param {Model} model The model
61
+ */
62
+ apply: (particle: Particle, deltaTime: number, model: Model) => void;
63
+ /**
64
+ * Update once per frame
65
+ *
66
+ * @param {number} deltaTime The delta time
67
+ */
68
+ update: (deltaTime: number) => void;
69
+ }
@@ -0,0 +1,116 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmitterBehaviours.js","sourceRoot":"","sources":["../../../src/lib/behaviour/EmitterBehaviours.ts"],"names":[],"mappings":"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"}