@tsparticles/plugin-absorbers 4.0.0-beta.0 → 4.0.0-beta.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.
- package/122.min.js +1 -0
- package/{497.min.js → 285.min.js} +1 -1
- package/677.min.js +1 -0
- package/698.min.js +1 -0
- package/920.min.js +1 -0
- package/998.min.js +1 -0
- package/README.md +2 -2
- package/browser/AbsorberInstance.js +18 -24
- package/browser/AbsorbersInstancesManager.js +4 -4
- package/browser/getAbsorbersInstancesManager.js +11 -0
- package/browser/index.js +5 -14
- package/browser/interaction.js +15 -0
- package/browser/plugin.js +11 -0
- package/cjs/AbsorberInstance.js +18 -24
- package/cjs/AbsorbersInstancesManager.js +4 -4
- package/cjs/getAbsorbersInstancesManager.js +11 -0
- package/cjs/index.js +5 -14
- package/cjs/interaction.js +15 -0
- package/cjs/plugin.js +11 -0
- package/dist_browser_AbsorberInstance_js.js +2 -2
- package/dist_browser_AbsorbersInstancesManager_js.js +2 -2
- package/dist_browser_AbsorbersInteractor_js.js +1 -1
- package/dist_browser_AbsorbersPluginInstance_js.js +1 -1
- package/dist_browser_AbsorbersPlugin_js.js +1 -1
- package/dist_browser_getAbsorbersInstancesManager_js.js +30 -0
- package/esm/AbsorberInstance.js +18 -24
- package/esm/AbsorbersInstancesManager.js +4 -4
- package/esm/getAbsorbersInstancesManager.js +11 -0
- package/esm/index.js +5 -14
- package/esm/interaction.js +15 -0
- package/esm/plugin.js +11 -0
- package/package.json +24 -6
- package/report.html +84 -29
- package/tsparticles.plugin.absorbers.js +26 -6
- package/tsparticles.plugin.absorbers.min.js +2 -2
- package/types/AbsorberInstance.d.ts +4 -4
- package/types/AbsorbersInstancesManager.d.ts +3 -3
- package/types/AbsorbersPluginInstance.d.ts +2 -2
- package/types/getAbsorbersInstancesManager.d.ts +3 -0
- package/types/interaction.d.ts +3 -0
- package/types/plugin.d.ts +3 -0
- package/162.min.js +0 -1
- package/166.min.js +0 -1
- package/49.min.js +0 -1
- package/598.min.js +0 -1
- package/umd/AbsorberContainer.js +0 -12
- package/umd/AbsorberInstance.js +0 -217
- package/umd/AbsorbersInstancesManager.js +0 -97
- package/umd/AbsorbersInteractor.js +0 -109
- package/umd/AbsorbersPlugin.js +0 -86
- package/umd/AbsorbersPluginInstance.js +0 -56
- package/umd/Options/Classes/Absorber.js +0 -74
- package/umd/Options/Classes/AbsorberLife.js +0 -41
- package/umd/Options/Classes/AbsorberSize.js +0 -41
- package/umd/Options/Classes/AbsorberSizeLimit.js +0 -34
- package/umd/Options/Interfaces/IAbsorber.js +0 -12
- package/umd/Options/Interfaces/IAbsorberLife.js +0 -12
- package/umd/Options/Interfaces/IAbsorberSize.js +0 -12
- package/umd/Options/Interfaces/IAbsorberSizeLimit.js +0 -12
- package/umd/index.js +0 -63
- package/umd/types.js +0 -12
package/esm/AbsorberInstance.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { RotateDirection, Vector, calcPositionOrRandomFromSize, calcPositionOrRandomFromSizeRanged, doublePI, getDistance, getDistances, getRandom, getRangeValue, getStyleFromRgb, isPointInside, millisecondsToSeconds, originPoint,
|
|
1
|
+
import { RotateDirection, Vector, calcPositionOrRandomFromSize, calcPositionOrRandomFromSizeRanged, doublePI, getDistance, getDistances, getRandom, getRangeMax, getRangeValue, getStyleFromRgb, half, identity, isPointInside, millisecondsToSeconds, originPoint, rangeColorToRgb, } from "@tsparticles/engine";
|
|
2
2
|
import { Absorber } from "./Options/Classes/Absorber.js";
|
|
3
|
-
const squareExp = 2, absorbFactor = 0.033, minOrbitLength = 0, minRadius = 0, minMass = 0, minAngle = 0, maxAngle = doublePI, minVelocity = 0, defaultLifeDelay = 0, minLifeCount = 0, defaultSpawnDelay = 0, defaultLifeCount = -1;
|
|
3
|
+
const squareExp = 2, absorbFactor = 0.033, minOrbitLength = 0, minRadius = 0, minMass = 0, minAngle = 0, maxAngle = doublePI, maxDegreeAngle = 360, angleIncrementFactor = identity / maxDegreeAngle, minVelocity = 0, defaultLifeDelay = 0, minLifeCount = 0, defaultSpawnDelay = 0, defaultLifeCount = -1;
|
|
4
4
|
export class AbsorberInstance {
|
|
5
5
|
color;
|
|
6
6
|
limit;
|
|
@@ -14,15 +14,15 @@ export class AbsorberInstance {
|
|
|
14
14
|
_currentDuration;
|
|
15
15
|
_currentSpawnDelay;
|
|
16
16
|
_duration;
|
|
17
|
-
_engine;
|
|
18
17
|
_firstSpawn;
|
|
19
18
|
_immortal;
|
|
20
19
|
_lifeCount;
|
|
20
|
+
_pluginManager;
|
|
21
21
|
_spawnDelay;
|
|
22
22
|
initialPosition;
|
|
23
|
-
constructor(
|
|
23
|
+
constructor(pluginManager, container, options, position) {
|
|
24
24
|
this._container = container;
|
|
25
|
-
this.
|
|
25
|
+
this._pluginManager = pluginManager;
|
|
26
26
|
this._currentDuration = 0;
|
|
27
27
|
this._currentSpawnDelay = 0;
|
|
28
28
|
this.initialPosition = position ? Vector.create(position.x, position.y) : undefined;
|
|
@@ -42,7 +42,7 @@ export class AbsorberInstance {
|
|
|
42
42
|
radius: limit.radius * container.retina.pixelRatio * container.retina.reduceFactor,
|
|
43
43
|
mass: limit.mass,
|
|
44
44
|
};
|
|
45
|
-
this.color = rangeColorToRgb(this.
|
|
45
|
+
this.color = rangeColorToRgb(this._pluginManager, this.options.color) ?? {
|
|
46
46
|
b: 0,
|
|
47
47
|
g: 0,
|
|
48
48
|
r: 0,
|
|
@@ -68,14 +68,14 @@ export class AbsorberInstance {
|
|
|
68
68
|
}
|
|
69
69
|
else {
|
|
70
70
|
particle.needsNewPosition = true;
|
|
71
|
-
this._updateParticlePosition(particle, v);
|
|
71
|
+
this._updateParticlePosition(particle, delta, v);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
else {
|
|
75
75
|
if (options.destroy) {
|
|
76
76
|
particle.size.value -= sizeFactor;
|
|
77
77
|
}
|
|
78
|
-
this._updateParticlePosition(particle, v);
|
|
78
|
+
this._updateParticlePosition(particle, delta, v);
|
|
79
79
|
}
|
|
80
80
|
if (this.limit.radius <= minRadius || this.size < this.limit.radius) {
|
|
81
81
|
this.size += sizeFactor;
|
|
@@ -85,7 +85,7 @@ export class AbsorberInstance {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
else {
|
|
88
|
-
this._updateParticlePosition(particle, v);
|
|
88
|
+
this._updateParticlePosition(particle, delta, v);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
draw(context) {
|
|
@@ -147,7 +147,7 @@ export class AbsorberInstance {
|
|
|
147
147
|
this._duration = duration * millisecondsToSeconds;
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
|
-
_updateParticlePosition = (particle, v) => {
|
|
150
|
+
_updateParticlePosition = (particle, delta, v) => {
|
|
151
151
|
if (particle.destroyed) {
|
|
152
152
|
return;
|
|
153
153
|
}
|
|
@@ -173,22 +173,16 @@ export class AbsorberInstance {
|
|
|
173
173
|
particle.velocity.x >= minVelocity ? RotateDirection.clockwise : RotateDirection.counterClockwise;
|
|
174
174
|
const orbitRadius = particle.absorberOrbit.length, orbitAngle = particle.absorberOrbit.angle, orbitDirection = particle.absorberOrbitDirection;
|
|
175
175
|
particle.velocity.setTo(Vector.origin);
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
particle.
|
|
182
|
-
particle.absorberOrbit.
|
|
183
|
-
particle.absorberOrbit.angle +=
|
|
184
|
-
(((particle.retina.moveSpeed ?? minVelocity) * container.retina.pixelRatio) / percentDenominator) *
|
|
185
|
-
container.retina.reduceFactor;
|
|
176
|
+
const maxSize = getRangeMax(particle.options.size.value) * container.retina.pixelRatio, sizeFactor = particle.options.move.size ? particle.getRadius() / maxSize : identity, deltaFactor = delta.factor || identity, baseSpeed = particle.retina.moveSpeed, moveSpeed = baseSpeed * sizeFactor * deltaFactor * half;
|
|
177
|
+
particle.position.x = this.position.x + orbitRadius * Math.cos(orbitAngle);
|
|
178
|
+
particle.position.y =
|
|
179
|
+
this.position.y +
|
|
180
|
+
orbitRadius * (orbitDirection === RotateDirection.clockwise ? identity : -identity) * Math.sin(orbitAngle);
|
|
181
|
+
particle.absorberOrbit.length = Math.max(minOrbitLength, particle.absorberOrbit.length - v.length);
|
|
182
|
+
particle.absorberOrbit.angle += moveSpeed * angleIncrementFactor * container.retina.reduceFactor;
|
|
186
183
|
}
|
|
187
184
|
else {
|
|
188
|
-
|
|
189
|
-
addV.length = v.length;
|
|
190
|
-
addV.angle = v.angle;
|
|
191
|
-
particle.velocity.addTo(addV);
|
|
185
|
+
particle.velocity.addTo(v);
|
|
192
186
|
}
|
|
193
187
|
};
|
|
194
188
|
play = () => {
|
|
@@ -2,13 +2,13 @@ import { isNumber } from "@tsparticles/engine";
|
|
|
2
2
|
const defaultIndex = 0;
|
|
3
3
|
export class AbsorbersInstancesManager {
|
|
4
4
|
_containerArrays;
|
|
5
|
-
|
|
6
|
-
constructor(
|
|
5
|
+
_pluginManager;
|
|
6
|
+
constructor(pluginManager) {
|
|
7
|
+
this._pluginManager = pluginManager;
|
|
7
8
|
this._containerArrays = new Map();
|
|
8
|
-
this._engine = engine;
|
|
9
9
|
}
|
|
10
10
|
async addAbsorber(container, options, position) {
|
|
11
|
-
const { AbsorberInstance } = await import("./AbsorberInstance.js"), absorber = new AbsorberInstance(this.
|
|
11
|
+
const { AbsorberInstance } = await import("./AbsorberInstance.js"), absorber = new AbsorberInstance(this._pluginManager, container, options, position), array = this.getArray(container);
|
|
12
12
|
array.push(absorber);
|
|
13
13
|
return absorber;
|
|
14
14
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const instancesManagers = new WeakMap();
|
|
2
|
+
export async function getAbsorbersInstancesManager(e) {
|
|
3
|
+
const pluginManager = e.pluginManager;
|
|
4
|
+
let manager = instancesManagers.get(pluginManager);
|
|
5
|
+
if (!manager) {
|
|
6
|
+
const { AbsorbersInstancesManager } = await import("./AbsorbersInstancesManager.js");
|
|
7
|
+
manager = new AbsorbersInstancesManager(pluginManager);
|
|
8
|
+
instancesManagers.set(pluginManager, manager);
|
|
9
|
+
}
|
|
10
|
+
return manager;
|
|
11
|
+
}
|
package/esm/index.js
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
|
+
import {} from "@tsparticles/engine";
|
|
2
|
+
import { loadAbsorbersInteraction } from "./interaction.js";
|
|
3
|
+
import { loadAbsorbersPluginSimple } from "./plugin.js";
|
|
1
4
|
export async function loadAbsorbersPlugin(engine) {
|
|
2
|
-
engine
|
|
3
|
-
await engine
|
|
4
|
-
const [{ ensureInteractivityPluginLoaded }, { AbsorbersInstancesManager }, { AbsorbersPlugin },] = await Promise.all([
|
|
5
|
-
import("@tsparticles/plugin-interactivity"),
|
|
6
|
-
import("./AbsorbersInstancesManager.js"),
|
|
7
|
-
import("./AbsorbersPlugin.js"),
|
|
8
|
-
]), instancesManager = new AbsorbersInstancesManager(e);
|
|
9
|
-
ensureInteractivityPluginLoaded(e);
|
|
10
|
-
e.addPlugin(new AbsorbersPlugin(instancesManager));
|
|
11
|
-
e.addInteractor?.("externalAbsorbers", async (container) => {
|
|
12
|
-
const { AbsorbersInteractor } = await import("./AbsorbersInteractor.js");
|
|
13
|
-
return new AbsorbersInteractor(container, instancesManager);
|
|
14
|
-
});
|
|
15
|
-
});
|
|
5
|
+
await loadAbsorbersPluginSimple(engine);
|
|
6
|
+
await loadAbsorbersInteraction(engine);
|
|
16
7
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {} from "@tsparticles/engine";
|
|
2
|
+
export async function loadAbsorbersInteraction(engine) {
|
|
3
|
+
engine.checkVersion("4.0.0-beta.2");
|
|
4
|
+
await engine.pluginManager.register(async (e) => {
|
|
5
|
+
const [{ ensureInteractivityPluginLoaded }, { getAbsorbersInstancesManager },] = await Promise.all([
|
|
6
|
+
import("@tsparticles/plugin-interactivity"),
|
|
7
|
+
import("./getAbsorbersInstancesManager.js"),
|
|
8
|
+
]), pluginManager = e.pluginManager, instancesManager = await getAbsorbersInstancesManager(e);
|
|
9
|
+
ensureInteractivityPluginLoaded(e);
|
|
10
|
+
pluginManager.addInteractor?.("externalAbsorbers", async (container) => {
|
|
11
|
+
const { AbsorbersInteractor } = await import("./AbsorbersInteractor.js");
|
|
12
|
+
return new AbsorbersInteractor(container, instancesManager);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
}
|
package/esm/plugin.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {} from "@tsparticles/engine";
|
|
2
|
+
export async function loadAbsorbersPluginSimple(engine) {
|
|
3
|
+
engine.checkVersion("4.0.0-beta.2");
|
|
4
|
+
await engine.pluginManager.register(async (e) => {
|
|
5
|
+
const [{ getAbsorbersInstancesManager }, { AbsorbersPlugin },] = await Promise.all([
|
|
6
|
+
import("./getAbsorbersInstancesManager.js"),
|
|
7
|
+
import("./AbsorbersPlugin.js"),
|
|
8
|
+
]), pluginManager = e.pluginManager, instancesManager = await getAbsorbersInstancesManager(e);
|
|
9
|
+
pluginManager.addPlugin(new AbsorbersPlugin(instancesManager));
|
|
10
|
+
});
|
|
11
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsparticles/plugin-absorbers",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.2",
|
|
4
4
|
"description": "tsParticles absorbers plugin",
|
|
5
5
|
"homepage": "https://particles.js.org",
|
|
6
6
|
"repository": {
|
|
@@ -80,14 +80,32 @@
|
|
|
80
80
|
"browser": "./browser/index.js",
|
|
81
81
|
"import": "./esm/index.js",
|
|
82
82
|
"require": "./cjs/index.js",
|
|
83
|
-
"
|
|
84
|
-
|
|
83
|
+
"default": "./esm/index.js"
|
|
84
|
+
},
|
|
85
|
+
"./interaction": {
|
|
86
|
+
"types": "./types/interaction.d.ts",
|
|
87
|
+
"browser": "./browser/interaction.js",
|
|
88
|
+
"import": "./esm/interaction.js",
|
|
89
|
+
"require": "./cjs/interaction.js",
|
|
90
|
+
"default": "./esm/interaction.js"
|
|
91
|
+
},
|
|
92
|
+
"./plugin": {
|
|
93
|
+
"types": "./types/plugin.d.ts",
|
|
94
|
+
"browser": "./browser/plugin.js",
|
|
95
|
+
"import": "./esm/plugin.js",
|
|
96
|
+
"require": "./cjs/plugin.js",
|
|
97
|
+
"default": "./esm/plugin.js"
|
|
85
98
|
},
|
|
86
99
|
"./package.json": "./package.json"
|
|
87
100
|
},
|
|
88
|
-
"
|
|
89
|
-
"@tsparticles/engine": "4.0.0-beta.
|
|
90
|
-
"@tsparticles/plugin-interactivity": "4.0.0-beta.
|
|
101
|
+
"peerDependencies": {
|
|
102
|
+
"@tsparticles/engine": "4.0.0-beta.1",
|
|
103
|
+
"@tsparticles/plugin-interactivity": "4.0.0-beta.1"
|
|
104
|
+
},
|
|
105
|
+
"peerDependenciesMeta": {
|
|
106
|
+
"@tsparticles/plugin-interactivity": {
|
|
107
|
+
"optional": true
|
|
108
|
+
}
|
|
91
109
|
},
|
|
92
110
|
"publishConfig": {
|
|
93
111
|
"access": "public"
|