@tsparticles/engine 3.4.0 → 3.6.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/browser/Core/Canvas.js +4 -6
- package/browser/Core/Container.js +15 -15
- package/browser/Core/Engine.js +1 -1
- package/browser/Core/Particle.js +4 -4
- package/browser/Core/Particles.js +9 -8
- package/browser/Core/Utils/EventListeners.js +1 -1
- package/browser/Utils/CanvasUtils.js +2 -2
- package/browser/Utils/ColorUtils.js +3 -3
- package/browser/Utils/NumberUtils.js +17 -4
- package/cjs/Core/Canvas.js +4 -6
- package/cjs/Core/Container.js +15 -15
- package/cjs/Core/Engine.js +1 -1
- package/cjs/Core/Particle.js +4 -4
- package/cjs/Core/Particles.js +9 -8
- package/cjs/Core/Utils/EventListeners.js +1 -1
- package/cjs/Utils/CanvasUtils.js +13 -14
- package/cjs/Utils/ColorUtils.js +23 -24
- package/cjs/Utils/NumberUtils.js +43 -28
- package/cjs/Utils/OptionsUtils.js +2 -3
- package/cjs/Utils/TypeUtils.js +6 -7
- package/cjs/Utils/Utils.js +29 -30
- package/cjs/init.js +1 -2
- package/esm/Core/Canvas.js +4 -6
- package/esm/Core/Container.js +15 -15
- package/esm/Core/Engine.js +1 -1
- package/esm/Core/Particle.js +4 -4
- package/esm/Core/Particles.js +9 -8
- package/esm/Core/Utils/EventListeners.js +1 -1
- package/esm/Utils/CanvasUtils.js +2 -2
- package/esm/Utils/ColorUtils.js +3 -3
- package/esm/Utils/NumberUtils.js +17 -4
- package/package.json +1 -1
- package/report.html +1 -1
- package/tsparticles.engine.js +12 -12
- package/tsparticles.engine.min.js +1 -1
- package/tsparticles.engine.min.js.LICENSE.txt +1 -1
- package/types/Utils/NumberUtils.d.ts +3 -0
- package/umd/Core/Canvas.js +4 -6
- package/umd/Core/Container.js +16 -16
- package/umd/Core/Engine.js +1 -1
- package/umd/Core/Particle.js +4 -4
- package/umd/Core/Particles.js +9 -8
- package/umd/Core/Utils/EventListeners.js +1 -1
- package/umd/Utils/CanvasUtils.js +13 -14
- package/umd/Utils/ColorUtils.js +23 -24
- package/umd/Utils/NumberUtils.js +43 -28
- package/umd/Utils/OptionsUtils.js +2 -3
- package/umd/Utils/TypeUtils.js +6 -7
- package/umd/Utils/Utils.js +29 -30
- package/umd/init.js +1 -2
package/cjs/Utils/CanvasUtils.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.drawLine = drawLine;
|
|
4
|
+
exports.paintBase = paintBase;
|
|
5
|
+
exports.paintImage = paintImage;
|
|
6
|
+
exports.clear = clear;
|
|
7
|
+
exports.drawParticle = drawParticle;
|
|
8
|
+
exports.drawEffect = drawEffect;
|
|
9
|
+
exports.drawShape = drawShape;
|
|
10
|
+
exports.drawShapeAfterDraw = drawShapeAfterDraw;
|
|
11
|
+
exports.drawPlugin = drawPlugin;
|
|
12
|
+
exports.drawParticlePlugin = drawParticlePlugin;
|
|
13
|
+
exports.alterHsl = alterHsl;
|
|
4
14
|
const AlterType_js_1 = require("../Enums/Types/AlterType.js");
|
|
5
15
|
const ColorUtils_js_1 = require("./ColorUtils.js");
|
|
6
16
|
const origin = { x: 0, y: 0 }, defaultTransform = {
|
|
@@ -15,12 +25,10 @@ function drawLine(context, begin, end) {
|
|
|
15
25
|
context.lineTo(end.x, end.y);
|
|
16
26
|
context.closePath();
|
|
17
27
|
}
|
|
18
|
-
exports.drawLine = drawLine;
|
|
19
28
|
function paintBase(context, dimension, baseColor) {
|
|
20
29
|
context.fillStyle = baseColor ?? "rgba(0,0,0,0)";
|
|
21
30
|
context.fillRect(origin.x, origin.y, dimension.width, dimension.height);
|
|
22
31
|
}
|
|
23
|
-
exports.paintBase = paintBase;
|
|
24
32
|
function paintImage(context, dimension, image, opacity) {
|
|
25
33
|
if (!image) {
|
|
26
34
|
return;
|
|
@@ -29,19 +37,17 @@ function paintImage(context, dimension, image, opacity) {
|
|
|
29
37
|
context.drawImage(image, origin.x, origin.y, dimension.width, dimension.height);
|
|
30
38
|
context.globalAlpha = 1;
|
|
31
39
|
}
|
|
32
|
-
exports.paintImage = paintImage;
|
|
33
40
|
function clear(context, dimension) {
|
|
34
41
|
context.clearRect(origin.x, origin.y, dimension.width, dimension.height);
|
|
35
42
|
}
|
|
36
|
-
exports.clear = clear;
|
|
37
43
|
function drawParticle(data) {
|
|
38
44
|
const { container, context, particle, delta, colorStyles, backgroundMask, composite, radius, opacity, shadow, transform, } = data, pos = particle.getPosition(), defaultAngle = 0, angle = particle.rotation + (particle.pathRotation ? particle.velocity.angle : defaultAngle), rotateData = {
|
|
39
45
|
sin: Math.sin(angle),
|
|
40
46
|
cos: Math.cos(angle),
|
|
41
47
|
}, rotating = !!angle, identity = 1, transformData = {
|
|
42
48
|
a: rotateData.cos * (transform.a ?? defaultTransform.a),
|
|
43
|
-
b: rotating ? rotateData.sin * (transform.b ?? identity) : transform.b ?? defaultTransform.b,
|
|
44
|
-
c: rotating ? -rotateData.sin * (transform.c ?? identity) : transform.c ?? defaultTransform.c,
|
|
49
|
+
b: rotating ? rotateData.sin * (transform.b ?? identity) : (transform.b ?? defaultTransform.b),
|
|
50
|
+
c: rotating ? -rotateData.sin * (transform.c ?? identity) : (transform.c ?? defaultTransform.c),
|
|
45
51
|
d: rotateData.cos * (transform.d ?? defaultTransform.d),
|
|
46
52
|
};
|
|
47
53
|
context.setTransform(transformData.a, transformData.b, transformData.c, transformData.d, pos.x, pos.y);
|
|
@@ -79,7 +85,6 @@ function drawParticle(data) {
|
|
|
79
85
|
context.globalCompositeOperation = "source-over";
|
|
80
86
|
context.resetTransform();
|
|
81
87
|
}
|
|
82
|
-
exports.drawParticle = drawParticle;
|
|
83
88
|
function drawEffect(data) {
|
|
84
89
|
const { container, context, particle, radius, opacity, delta, transformData } = data;
|
|
85
90
|
if (!particle.effect) {
|
|
@@ -99,7 +104,6 @@ function drawEffect(data) {
|
|
|
99
104
|
transformData: { ...transformData },
|
|
100
105
|
});
|
|
101
106
|
}
|
|
102
|
-
exports.drawEffect = drawEffect;
|
|
103
107
|
function drawShape(data) {
|
|
104
108
|
const { container, context, particle, radius, opacity, delta, strokeWidth, transformData } = data, minStrokeWidth = 0;
|
|
105
109
|
if (!particle.shape) {
|
|
@@ -129,7 +133,6 @@ function drawShape(data) {
|
|
|
129
133
|
context.fill();
|
|
130
134
|
}
|
|
131
135
|
}
|
|
132
|
-
exports.drawShape = drawShape;
|
|
133
136
|
function drawShapeAfterDraw(data) {
|
|
134
137
|
const { container, context, particle, radius, opacity, delta, transformData } = data;
|
|
135
138
|
if (!particle.shape) {
|
|
@@ -149,21 +152,18 @@ function drawShapeAfterDraw(data) {
|
|
|
149
152
|
transformData: { ...transformData },
|
|
150
153
|
});
|
|
151
154
|
}
|
|
152
|
-
exports.drawShapeAfterDraw = drawShapeAfterDraw;
|
|
153
155
|
function drawPlugin(context, plugin, delta) {
|
|
154
156
|
if (!plugin.draw) {
|
|
155
157
|
return;
|
|
156
158
|
}
|
|
157
159
|
plugin.draw(context, delta);
|
|
158
160
|
}
|
|
159
|
-
exports.drawPlugin = drawPlugin;
|
|
160
161
|
function drawParticlePlugin(context, plugin, particle, delta) {
|
|
161
162
|
if (!plugin.drawParticle) {
|
|
162
163
|
return;
|
|
163
164
|
}
|
|
164
165
|
plugin.drawParticle(context, particle, delta);
|
|
165
166
|
}
|
|
166
|
-
exports.drawParticlePlugin = drawParticlePlugin;
|
|
167
167
|
function alterHsl(color, type, value) {
|
|
168
168
|
const lFactor = 1;
|
|
169
169
|
return {
|
|
@@ -172,4 +172,3 @@ function alterHsl(color, type, value) {
|
|
|
172
172
|
l: color.l + (type === AlterType_js_1.AlterType.darken ? -lFactor : lFactor) * value,
|
|
173
173
|
};
|
|
174
174
|
}
|
|
175
|
-
exports.alterHsl = alterHsl;
|
package/cjs/Utils/ColorUtils.js
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.addColorManager = addColorManager;
|
|
4
|
+
exports.rangeColorToRgb = rangeColorToRgb;
|
|
5
|
+
exports.colorToRgb = colorToRgb;
|
|
6
|
+
exports.colorToHsl = colorToHsl;
|
|
7
|
+
exports.rangeColorToHsl = rangeColorToHsl;
|
|
8
|
+
exports.rgbToHsl = rgbToHsl;
|
|
9
|
+
exports.stringToAlpha = stringToAlpha;
|
|
10
|
+
exports.stringToRgb = stringToRgb;
|
|
11
|
+
exports.hslToRgb = hslToRgb;
|
|
12
|
+
exports.hslaToRgba = hslaToRgba;
|
|
13
|
+
exports.getRandomRgbColor = getRandomRgbColor;
|
|
14
|
+
exports.getStyleFromRgb = getStyleFromRgb;
|
|
15
|
+
exports.getStyleFromHsl = getStyleFromHsl;
|
|
16
|
+
exports.colorMix = colorMix;
|
|
17
|
+
exports.getLinkColor = getLinkColor;
|
|
18
|
+
exports.getLinkRandomColor = getLinkRandomColor;
|
|
19
|
+
exports.getHslFromAnimation = getHslFromAnimation;
|
|
20
|
+
exports.getHslAnimationFromHsl = getHslAnimationFromHsl;
|
|
21
|
+
exports.updateColorValue = updateColorValue;
|
|
22
|
+
exports.updateColor = updateColor;
|
|
4
23
|
const NumberUtils_js_1 = require("./NumberUtils.js");
|
|
5
24
|
const TypeUtils_js_1 = require("./TypeUtils.js");
|
|
6
25
|
const Constants_js_1 = require("../Core/Utils/Constants.js");
|
|
@@ -17,9 +36,8 @@ const randomColorValue = "random", midColorValue = "mid", colorManagers = new Ma
|
|
|
17
36
|
function addColorManager(manager) {
|
|
18
37
|
colorManagers.set(manager.key, manager);
|
|
19
38
|
}
|
|
20
|
-
exports.addColorManager = addColorManager;
|
|
21
39
|
function stringToRgba(input) {
|
|
22
|
-
for (const
|
|
40
|
+
for (const manager of colorManagers.values()) {
|
|
23
41
|
if (input.startsWith(manager.stringPrefix)) {
|
|
24
42
|
return manager.parseString(input);
|
|
25
43
|
}
|
|
@@ -51,14 +69,13 @@ function rangeColorToRgb(input, index, useIndex = true) {
|
|
|
51
69
|
value: (0, Utils_js_1.itemFromArray)(color.value, index, useIndex),
|
|
52
70
|
});
|
|
53
71
|
}
|
|
54
|
-
for (const
|
|
72
|
+
for (const manager of colorManagers.values()) {
|
|
55
73
|
const res = manager.handleRangeColor(color);
|
|
56
74
|
if (res) {
|
|
57
75
|
return res;
|
|
58
76
|
}
|
|
59
77
|
}
|
|
60
78
|
}
|
|
61
|
-
exports.rangeColorToRgb = rangeColorToRgb;
|
|
62
79
|
function colorToRgb(input, index, useIndex = true) {
|
|
63
80
|
if (!input) {
|
|
64
81
|
return;
|
|
@@ -72,24 +89,21 @@ function colorToRgb(input, index, useIndex = true) {
|
|
|
72
89
|
value: (0, Utils_js_1.itemFromArray)(color.value, index, useIndex),
|
|
73
90
|
});
|
|
74
91
|
}
|
|
75
|
-
for (const
|
|
92
|
+
for (const manager of colorManagers.values()) {
|
|
76
93
|
const res = manager.handleColor(color);
|
|
77
94
|
if (res) {
|
|
78
95
|
return res;
|
|
79
96
|
}
|
|
80
97
|
}
|
|
81
98
|
}
|
|
82
|
-
exports.colorToRgb = colorToRgb;
|
|
83
99
|
function colorToHsl(color, index, useIndex = true) {
|
|
84
100
|
const rgb = colorToRgb(color, index, useIndex);
|
|
85
101
|
return rgb ? rgbToHsl(rgb) : undefined;
|
|
86
102
|
}
|
|
87
|
-
exports.colorToHsl = colorToHsl;
|
|
88
103
|
function rangeColorToHsl(color, index, useIndex = true) {
|
|
89
104
|
const rgb = rangeColorToRgb(color, index, useIndex);
|
|
90
105
|
return rgb ? rgbToHsl(rgb) : undefined;
|
|
91
106
|
}
|
|
92
|
-
exports.rangeColorToHsl = rangeColorToHsl;
|
|
93
107
|
function rgbToHsl(color) {
|
|
94
108
|
const rgbMax = 255, hMax = 360, sMax = 100, lMax = 100, hMin = 0, sMin = 0, hPhase = 60, half = 0.5, double = 2, r1 = color.r / rgbMax, g1 = color.g / rgbMax, b1 = color.b / rgbMax, max = Math.max(r1, g1, b1), min = Math.min(r1, g1, b1), res = {
|
|
95
109
|
h: hMin,
|
|
@@ -114,15 +128,12 @@ function rgbToHsl(color) {
|
|
|
114
128
|
}
|
|
115
129
|
return res;
|
|
116
130
|
}
|
|
117
|
-
exports.rgbToHsl = rgbToHsl;
|
|
118
131
|
function stringToAlpha(input) {
|
|
119
132
|
return stringToRgba(input)?.a;
|
|
120
133
|
}
|
|
121
|
-
exports.stringToAlpha = stringToAlpha;
|
|
122
134
|
function stringToRgb(input) {
|
|
123
135
|
return stringToRgba(input);
|
|
124
136
|
}
|
|
125
|
-
exports.stringToRgb = stringToRgb;
|
|
126
137
|
function hslToRgb(hsl) {
|
|
127
138
|
const hMax = 360, sMax = 100, lMax = 100, sMin = 0, lMin = 0, h = ((hsl.h % hMax) + hMax) % hMax, s = Math.max(sMin, Math.min(sMax, hsl.s)), l = Math.max(lMin, Math.min(lMax, hsl.l)), hNormalized = h / hMax, sNormalized = s / sMax, lNormalized = l / lMax, rgbFactor = 255, triple = 3;
|
|
128
139
|
if (s === sMin) {
|
|
@@ -153,7 +164,6 @@ function hslToRgb(hsl) {
|
|
|
153
164
|
: lNormalized + sNormalized - lNormalized * sNormalized, temp2 = double * lNormalized - temp1, phaseNumerator = 1, phaseThird = phaseNumerator / triple, red = Math.min(rgbFactor, rgbFactor * channel(temp2, temp1, hNormalized + phaseThird)), green = Math.min(rgbFactor, rgbFactor * channel(temp2, temp1, hNormalized)), blue = Math.min(rgbFactor, rgbFactor * channel(temp2, temp1, hNormalized - phaseThird));
|
|
154
165
|
return { r: Math.round(red), g: Math.round(green), b: Math.round(blue) };
|
|
155
166
|
}
|
|
156
|
-
exports.hslToRgb = hslToRgb;
|
|
157
167
|
function hslaToRgba(hsla) {
|
|
158
168
|
const rgbResult = hslToRgb(hsla);
|
|
159
169
|
return {
|
|
@@ -163,7 +173,6 @@ function hslaToRgba(hsla) {
|
|
|
163
173
|
r: rgbResult.r,
|
|
164
174
|
};
|
|
165
175
|
}
|
|
166
|
-
exports.hslaToRgba = hslaToRgba;
|
|
167
176
|
function getRandomRgbColor(min) {
|
|
168
177
|
const defaultMin = 0, fixedMin = min ?? defaultMin, rgbMax = 256;
|
|
169
178
|
return {
|
|
@@ -172,17 +181,14 @@ function getRandomRgbColor(min) {
|
|
|
172
181
|
r: Math.floor((0, NumberUtils_js_1.randomInRange)((0, NumberUtils_js_1.setRangeValue)(fixedMin, rgbMax))),
|
|
173
182
|
};
|
|
174
183
|
}
|
|
175
|
-
exports.getRandomRgbColor = getRandomRgbColor;
|
|
176
184
|
function getStyleFromRgb(color, opacity) {
|
|
177
185
|
const defaultOpacity = 1;
|
|
178
186
|
return `rgba(${color.r}, ${color.g}, ${color.b}, ${opacity ?? defaultOpacity})`;
|
|
179
187
|
}
|
|
180
|
-
exports.getStyleFromRgb = getStyleFromRgb;
|
|
181
188
|
function getStyleFromHsl(color, opacity) {
|
|
182
189
|
const defaultOpacity = 1;
|
|
183
190
|
return `hsla(${color.h}, ${color.s}%, ${color.l}%, ${opacity ?? defaultOpacity})`;
|
|
184
191
|
}
|
|
185
|
-
exports.getStyleFromHsl = getStyleFromHsl;
|
|
186
192
|
function colorMix(color1, color2, size1, size2) {
|
|
187
193
|
let rgb1 = color1, rgb2 = color2;
|
|
188
194
|
if (rgb1.r === undefined) {
|
|
@@ -197,7 +203,6 @@ function colorMix(color1, color2, size1, size2) {
|
|
|
197
203
|
r: (0, NumberUtils_js_1.mix)(rgb1.r, rgb2.r, size1, size2),
|
|
198
204
|
};
|
|
199
205
|
}
|
|
200
|
-
exports.colorMix = colorMix;
|
|
201
206
|
function getLinkColor(p1, p2, linkColor) {
|
|
202
207
|
if (linkColor === randomColorValue) {
|
|
203
208
|
return getRandomRgbColor();
|
|
@@ -218,7 +223,6 @@ function getLinkColor(p1, p2, linkColor) {
|
|
|
218
223
|
return linkColor;
|
|
219
224
|
}
|
|
220
225
|
}
|
|
221
|
-
exports.getLinkColor = getLinkColor;
|
|
222
226
|
function getLinkRandomColor(optColor, blink, consent) {
|
|
223
227
|
const color = (0, TypeUtils_js_1.isString)(optColor) ? optColor : optColor.value;
|
|
224
228
|
if (color === randomColorValue) {
|
|
@@ -241,7 +245,6 @@ function getLinkRandomColor(optColor, blink, consent) {
|
|
|
241
245
|
});
|
|
242
246
|
}
|
|
243
247
|
}
|
|
244
|
-
exports.getLinkRandomColor = getLinkRandomColor;
|
|
245
248
|
function getHslFromAnimation(animation) {
|
|
246
249
|
return animation !== undefined
|
|
247
250
|
? {
|
|
@@ -251,7 +254,6 @@ function getHslFromAnimation(animation) {
|
|
|
251
254
|
}
|
|
252
255
|
: undefined;
|
|
253
256
|
}
|
|
254
|
-
exports.getHslFromAnimation = getHslFromAnimation;
|
|
255
257
|
function getHslAnimationFromHsl(hsl, animationOptions, reduceFactor) {
|
|
256
258
|
const resColor = {
|
|
257
259
|
h: {
|
|
@@ -274,7 +276,6 @@ function getHslAnimationFromHsl(hsl, animationOptions, reduceFactor) {
|
|
|
274
276
|
}
|
|
275
277
|
return resColor;
|
|
276
278
|
}
|
|
277
|
-
exports.getHslAnimationFromHsl = getHslAnimationFromHsl;
|
|
278
279
|
function setColorAnimation(colorValue, colorAnimation, reduceFactor) {
|
|
279
280
|
colorValue.enable = colorAnimation.enable;
|
|
280
281
|
const defaultVelocity = 0, decayOffset = 1, defaultLoops = 0, defaultTime = 0;
|
|
@@ -345,7 +346,6 @@ function updateColorValue(data, range, decrease, delta) {
|
|
|
345
346
|
}
|
|
346
347
|
data.value = (0, NumberUtils_js_1.clamp)(data.value, min, max);
|
|
347
348
|
}
|
|
348
|
-
exports.updateColorValue = updateColorValue;
|
|
349
349
|
function updateColor(color, delta) {
|
|
350
350
|
if (!color) {
|
|
351
351
|
return;
|
|
@@ -366,4 +366,3 @@ function updateColor(color, delta) {
|
|
|
366
366
|
updateColorValue(l, ranges.l, true, delta);
|
|
367
367
|
}
|
|
368
368
|
}
|
|
369
|
-
exports.updateColor = updateColor;
|
package/cjs/Utils/NumberUtils.js
CHANGED
|
@@ -1,40 +1,72 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.addEasing = addEasing;
|
|
4
|
+
exports.getEasing = getEasing;
|
|
5
|
+
exports.setRandom = setRandom;
|
|
6
|
+
exports.getRandom = getRandom;
|
|
7
|
+
exports.setAnimationFunctions = setAnimationFunctions;
|
|
8
|
+
exports.animate = animate;
|
|
9
|
+
exports.cancelAnimation = cancelAnimation;
|
|
10
|
+
exports.clamp = clamp;
|
|
11
|
+
exports.mix = mix;
|
|
12
|
+
exports.randomInRange = randomInRange;
|
|
13
|
+
exports.getRangeValue = getRangeValue;
|
|
14
|
+
exports.getRangeMin = getRangeMin;
|
|
15
|
+
exports.getRangeMax = getRangeMax;
|
|
16
|
+
exports.setRangeValue = setRangeValue;
|
|
17
|
+
exports.getDistances = getDistances;
|
|
18
|
+
exports.getDistance = getDistance;
|
|
19
|
+
exports.degToRad = degToRad;
|
|
20
|
+
exports.getParticleDirectionAngle = getParticleDirectionAngle;
|
|
21
|
+
exports.getParticleBaseVelocity = getParticleBaseVelocity;
|
|
22
|
+
exports.collisionVelocity = collisionVelocity;
|
|
23
|
+
exports.calcPositionFromSize = calcPositionFromSize;
|
|
24
|
+
exports.calcPositionOrRandomFromSize = calcPositionOrRandomFromSize;
|
|
25
|
+
exports.calcPositionOrRandomFromSizeRanged = calcPositionOrRandomFromSizeRanged;
|
|
26
|
+
exports.calcExactPositionOrRandomFromSize = calcExactPositionOrRandomFromSize;
|
|
27
|
+
exports.calcExactPositionOrRandomFromSizeRanged = calcExactPositionOrRandomFromSizeRanged;
|
|
28
|
+
exports.parseAlpha = parseAlpha;
|
|
4
29
|
const MoveDirection_js_1 = require("../Enums/Directions/MoveDirection.js");
|
|
5
30
|
const Vectors_js_1 = require("../Core/Utils/Vectors.js");
|
|
6
31
|
const TypeUtils_js_1 = require("./TypeUtils.js");
|
|
7
32
|
const Constants_js_1 = require("../Core/Utils/Constants.js");
|
|
8
33
|
let _random = Math.random;
|
|
9
|
-
const
|
|
34
|
+
const _animationLoop = {
|
|
35
|
+
nextFrame: (cb) => requestAnimationFrame(cb),
|
|
36
|
+
cancel: (idx) => cancelAnimationFrame(idx),
|
|
37
|
+
}, easingFunctions = new Map(), double = 2, doublePI = Math.PI * double;
|
|
10
38
|
function addEasing(name, easing) {
|
|
11
|
-
if (
|
|
39
|
+
if (easingFunctions.get(name)) {
|
|
12
40
|
return;
|
|
13
41
|
}
|
|
14
|
-
|
|
42
|
+
easingFunctions.set(name, easing);
|
|
15
43
|
}
|
|
16
|
-
exports.addEasing = addEasing;
|
|
17
44
|
function getEasing(name) {
|
|
18
|
-
return
|
|
45
|
+
return easingFunctions.get(name) ?? ((value) => value);
|
|
19
46
|
}
|
|
20
|
-
exports.getEasing = getEasing;
|
|
21
47
|
function setRandom(rnd = Math.random) {
|
|
22
48
|
_random = rnd;
|
|
23
49
|
}
|
|
24
|
-
exports.setRandom = setRandom;
|
|
25
50
|
function getRandom() {
|
|
26
51
|
const min = 0, max = 1;
|
|
27
52
|
return clamp(_random(), min, max - Number.EPSILON);
|
|
28
53
|
}
|
|
29
|
-
|
|
54
|
+
function setAnimationFunctions(nextFrame, cancel) {
|
|
55
|
+
_animationLoop.nextFrame = (callback) => nextFrame(callback);
|
|
56
|
+
_animationLoop.cancel = (handle) => cancel(handle);
|
|
57
|
+
}
|
|
58
|
+
function animate(fn) {
|
|
59
|
+
return _animationLoop.nextFrame(fn);
|
|
60
|
+
}
|
|
61
|
+
function cancelAnimation(handle) {
|
|
62
|
+
_animationLoop.cancel(handle);
|
|
63
|
+
}
|
|
30
64
|
function clamp(num, min, max) {
|
|
31
65
|
return Math.min(Math.max(num, min), max);
|
|
32
66
|
}
|
|
33
|
-
exports.clamp = clamp;
|
|
34
67
|
function mix(comp1, comp2, weight1, weight2) {
|
|
35
68
|
return Math.floor((comp1 * weight1 + comp2 * weight2) / (weight1 + weight2));
|
|
36
69
|
}
|
|
37
|
-
exports.mix = mix;
|
|
38
70
|
function randomInRange(r) {
|
|
39
71
|
const max = getRangeMax(r), minOffset = 0;
|
|
40
72
|
let min = getRangeMin(r);
|
|
@@ -43,19 +75,15 @@ function randomInRange(r) {
|
|
|
43
75
|
}
|
|
44
76
|
return getRandom() * (max - min) + min;
|
|
45
77
|
}
|
|
46
|
-
exports.randomInRange = randomInRange;
|
|
47
78
|
function getRangeValue(value) {
|
|
48
79
|
return (0, TypeUtils_js_1.isNumber)(value) ? value : randomInRange(value);
|
|
49
80
|
}
|
|
50
|
-
exports.getRangeValue = getRangeValue;
|
|
51
81
|
function getRangeMin(value) {
|
|
52
82
|
return (0, TypeUtils_js_1.isNumber)(value) ? value : value.min;
|
|
53
83
|
}
|
|
54
|
-
exports.getRangeMin = getRangeMin;
|
|
55
84
|
function getRangeMax(value) {
|
|
56
85
|
return (0, TypeUtils_js_1.isNumber)(value) ? value : value.max;
|
|
57
86
|
}
|
|
58
|
-
exports.getRangeMax = getRangeMax;
|
|
59
87
|
function setRangeValue(source, value) {
|
|
60
88
|
if (source === value || (value === undefined && (0, TypeUtils_js_1.isNumber)(source))) {
|
|
61
89
|
return source;
|
|
@@ -68,21 +96,17 @@ function setRangeValue(source, value) {
|
|
|
68
96
|
}
|
|
69
97
|
: setRangeValue(min, max);
|
|
70
98
|
}
|
|
71
|
-
exports.setRangeValue = setRangeValue;
|
|
72
99
|
function getDistances(pointA, pointB) {
|
|
73
100
|
const dx = pointA.x - pointB.x, dy = pointA.y - pointB.y, squareExp = 2;
|
|
74
101
|
return { dx: dx, dy: dy, distance: Math.sqrt(dx ** squareExp + dy ** squareExp) };
|
|
75
102
|
}
|
|
76
|
-
exports.getDistances = getDistances;
|
|
77
103
|
function getDistance(pointA, pointB) {
|
|
78
104
|
return getDistances(pointA, pointB).distance;
|
|
79
105
|
}
|
|
80
|
-
exports.getDistance = getDistance;
|
|
81
106
|
function degToRad(degrees) {
|
|
82
107
|
const PIDeg = 180;
|
|
83
108
|
return (degrees * Math.PI) / PIDeg;
|
|
84
109
|
}
|
|
85
|
-
exports.degToRad = degToRad;
|
|
86
110
|
function getParticleDirectionAngle(direction, position, center) {
|
|
87
111
|
if ((0, TypeUtils_js_1.isNumber)(direction)) {
|
|
88
112
|
return degToRad(direction);
|
|
@@ -113,19 +137,16 @@ function getParticleDirectionAngle(direction, position, center) {
|
|
|
113
137
|
return getRandom() * doublePI;
|
|
114
138
|
}
|
|
115
139
|
}
|
|
116
|
-
exports.getParticleDirectionAngle = getParticleDirectionAngle;
|
|
117
140
|
function getParticleBaseVelocity(direction) {
|
|
118
141
|
const baseVelocity = Vectors_js_1.Vector.origin;
|
|
119
142
|
baseVelocity.length = 1;
|
|
120
143
|
baseVelocity.angle = direction;
|
|
121
144
|
return baseVelocity;
|
|
122
145
|
}
|
|
123
|
-
exports.getParticleBaseVelocity = getParticleBaseVelocity;
|
|
124
146
|
function collisionVelocity(v1, v2, m1, m2) {
|
|
125
147
|
const double = 2;
|
|
126
148
|
return Vectors_js_1.Vector.create((v1.x * (m1 - m2)) / (m1 + m2) + (v2.x * double * m2) / (m1 + m2), v1.y);
|
|
127
149
|
}
|
|
128
|
-
exports.collisionVelocity = collisionVelocity;
|
|
129
150
|
function calcPositionFromSize(data) {
|
|
130
151
|
return data.position?.x !== undefined && data.position.y !== undefined
|
|
131
152
|
? {
|
|
@@ -134,14 +155,12 @@ function calcPositionFromSize(data) {
|
|
|
134
155
|
}
|
|
135
156
|
: undefined;
|
|
136
157
|
}
|
|
137
|
-
exports.calcPositionFromSize = calcPositionFromSize;
|
|
138
158
|
function calcPositionOrRandomFromSize(data) {
|
|
139
159
|
return {
|
|
140
160
|
x: ((data.position?.x ?? getRandom() * Constants_js_1.percentDenominator) * data.size.width) / Constants_js_1.percentDenominator,
|
|
141
161
|
y: ((data.position?.y ?? getRandom() * Constants_js_1.percentDenominator) * data.size.height) / Constants_js_1.percentDenominator,
|
|
142
162
|
};
|
|
143
163
|
}
|
|
144
|
-
exports.calcPositionOrRandomFromSize = calcPositionOrRandomFromSize;
|
|
145
164
|
function calcPositionOrRandomFromSizeRanged(data) {
|
|
146
165
|
const position = {
|
|
147
166
|
x: data.position?.x !== undefined ? getRangeValue(data.position.x) : undefined,
|
|
@@ -149,14 +168,12 @@ function calcPositionOrRandomFromSizeRanged(data) {
|
|
|
149
168
|
};
|
|
150
169
|
return calcPositionOrRandomFromSize({ size: data.size, position });
|
|
151
170
|
}
|
|
152
|
-
exports.calcPositionOrRandomFromSizeRanged = calcPositionOrRandomFromSizeRanged;
|
|
153
171
|
function calcExactPositionOrRandomFromSize(data) {
|
|
154
172
|
return {
|
|
155
173
|
x: data.position?.x ?? getRandom() * data.size.width,
|
|
156
174
|
y: data.position?.y ?? getRandom() * data.size.height,
|
|
157
175
|
};
|
|
158
176
|
}
|
|
159
|
-
exports.calcExactPositionOrRandomFromSize = calcExactPositionOrRandomFromSize;
|
|
160
177
|
function calcExactPositionOrRandomFromSizeRanged(data) {
|
|
161
178
|
const position = {
|
|
162
179
|
x: data.position?.x !== undefined ? getRangeValue(data.position.x) : undefined,
|
|
@@ -164,7 +181,6 @@ function calcExactPositionOrRandomFromSizeRanged(data) {
|
|
|
164
181
|
};
|
|
165
182
|
return calcExactPositionOrRandomFromSize({ size: data.size, position });
|
|
166
183
|
}
|
|
167
|
-
exports.calcExactPositionOrRandomFromSizeRanged = calcExactPositionOrRandomFromSizeRanged;
|
|
168
184
|
function parseAlpha(input) {
|
|
169
185
|
const defaultAlpha = 1;
|
|
170
186
|
if (!input) {
|
|
@@ -172,4 +188,3 @@ function parseAlpha(input) {
|
|
|
172
188
|
}
|
|
173
189
|
return input.endsWith("%") ? parseFloat(input) / Constants_js_1.percentDenominator : parseFloat(input);
|
|
174
190
|
}
|
|
175
|
-
exports.parseAlpha = parseAlpha;
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.loadOptions = loadOptions;
|
|
4
|
+
exports.loadParticlesOptions = loadParticlesOptions;
|
|
4
5
|
const ParticlesOptions_js_1 = require("../Options/Classes/Particles/ParticlesOptions.js");
|
|
5
6
|
function loadOptions(options, ...sourceOptionsArr) {
|
|
6
7
|
for (const sourceOptions of sourceOptionsArr) {
|
|
7
8
|
options.load(sourceOptions);
|
|
8
9
|
}
|
|
9
10
|
}
|
|
10
|
-
exports.loadOptions = loadOptions;
|
|
11
11
|
function loadParticlesOptions(engine, container, ...sourceOptionsArr) {
|
|
12
12
|
const options = new ParticlesOptions_js_1.ParticlesOptions(engine, container);
|
|
13
13
|
loadOptions(options, ...sourceOptionsArr);
|
|
14
14
|
return options;
|
|
15
15
|
}
|
|
16
|
-
exports.loadParticlesOptions = loadParticlesOptions;
|
package/cjs/Utils/TypeUtils.js
CHANGED
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.isBoolean = isBoolean;
|
|
4
|
+
exports.isString = isString;
|
|
5
|
+
exports.isNumber = isNumber;
|
|
6
|
+
exports.isFunction = isFunction;
|
|
7
|
+
exports.isObject = isObject;
|
|
8
|
+
exports.isArray = isArray;
|
|
4
9
|
function isBoolean(arg) {
|
|
5
10
|
return typeof arg === "boolean";
|
|
6
11
|
}
|
|
7
|
-
exports.isBoolean = isBoolean;
|
|
8
12
|
function isString(arg) {
|
|
9
13
|
return typeof arg === "string";
|
|
10
14
|
}
|
|
11
|
-
exports.isString = isString;
|
|
12
15
|
function isNumber(arg) {
|
|
13
16
|
return typeof arg === "number";
|
|
14
17
|
}
|
|
15
|
-
exports.isNumber = isNumber;
|
|
16
18
|
function isFunction(arg) {
|
|
17
19
|
return typeof arg === "function";
|
|
18
20
|
}
|
|
19
|
-
exports.isFunction = isFunction;
|
|
20
21
|
function isObject(arg) {
|
|
21
22
|
return typeof arg === "object" && arg !== null;
|
|
22
23
|
}
|
|
23
|
-
exports.isObject = isObject;
|
|
24
24
|
function isArray(arg) {
|
|
25
25
|
return Array.isArray(arg);
|
|
26
26
|
}
|
|
27
|
-
exports.isArray = isArray;
|