@tsparticles/interaction-particles-attract 3.0.3 → 3.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.
- package/browser/Attractor.js +3 -1
- package/cjs/Attractor.js +3 -1
- package/esm/Attractor.js +3 -1
- package/package.json +2 -2
- package/report.html +2 -2
- package/tsparticles.interaction.particles.attract.js +7 -4
- package/tsparticles.interaction.particles.attract.min.js +1 -1
- package/tsparticles.interaction.particles.attract.min.js.LICENSE.txt +1 -1
- package/umd/Attractor.js +3 -1
package/browser/Attractor.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ParticlesInteractorBase, getDistances, getRangeValue, } from "@tsparticles/engine";
|
|
2
|
+
const attractFactor = 1000, identity = 1;
|
|
2
3
|
export class Attractor extends ParticlesInteractorBase {
|
|
3
4
|
constructor(container) {
|
|
4
5
|
super(container);
|
|
@@ -17,12 +18,13 @@ export class Attractor extends ParticlesInteractorBase {
|
|
|
17
18
|
if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {
|
|
18
19
|
continue;
|
|
19
20
|
}
|
|
20
|
-
const pos2 = p2.getPosition(), { dx, dy } = getDistances(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x *
|
|
21
|
+
const pos2 = p2.getPosition(), { dx, dy } = getDistances(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * attractFactor), ay = dy / (rotate.y * attractFactor), p1Factor = p2.size.value / p1.size.value, p2Factor = identity / p1Factor;
|
|
21
22
|
p1.velocity.x -= ax * p1Factor;
|
|
22
23
|
p1.velocity.y -= ay * p1Factor;
|
|
23
24
|
p2.velocity.x += ax * p2Factor;
|
|
24
25
|
p2.velocity.y += ay * p2Factor;
|
|
25
26
|
}
|
|
27
|
+
await Promise.resolve();
|
|
26
28
|
}
|
|
27
29
|
isEnabled(particle) {
|
|
28
30
|
return particle.options.move.attract.enable;
|
package/cjs/Attractor.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Attractor = void 0;
|
|
4
4
|
const engine_1 = require("@tsparticles/engine");
|
|
5
|
+
const attractFactor = 1000, identity = 1;
|
|
5
6
|
class Attractor extends engine_1.ParticlesInteractorBase {
|
|
6
7
|
constructor(container) {
|
|
7
8
|
super(container);
|
|
@@ -20,12 +21,13 @@ class Attractor extends engine_1.ParticlesInteractorBase {
|
|
|
20
21
|
if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {
|
|
21
22
|
continue;
|
|
22
23
|
}
|
|
23
|
-
const pos2 = p2.getPosition(), { dx, dy } = (0, engine_1.getDistances)(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x *
|
|
24
|
+
const pos2 = p2.getPosition(), { dx, dy } = (0, engine_1.getDistances)(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * attractFactor), ay = dy / (rotate.y * attractFactor), p1Factor = p2.size.value / p1.size.value, p2Factor = identity / p1Factor;
|
|
24
25
|
p1.velocity.x -= ax * p1Factor;
|
|
25
26
|
p1.velocity.y -= ay * p1Factor;
|
|
26
27
|
p2.velocity.x += ax * p2Factor;
|
|
27
28
|
p2.velocity.y += ay * p2Factor;
|
|
28
29
|
}
|
|
30
|
+
await Promise.resolve();
|
|
29
31
|
}
|
|
30
32
|
isEnabled(particle) {
|
|
31
33
|
return particle.options.move.attract.enable;
|
package/esm/Attractor.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ParticlesInteractorBase, getDistances, getRangeValue, } from "@tsparticles/engine";
|
|
2
|
+
const attractFactor = 1000, identity = 1;
|
|
2
3
|
export class Attractor extends ParticlesInteractorBase {
|
|
3
4
|
constructor(container) {
|
|
4
5
|
super(container);
|
|
@@ -17,12 +18,13 @@ export class Attractor extends ParticlesInteractorBase {
|
|
|
17
18
|
if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {
|
|
18
19
|
continue;
|
|
19
20
|
}
|
|
20
|
-
const pos2 = p2.getPosition(), { dx, dy } = getDistances(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x *
|
|
21
|
+
const pos2 = p2.getPosition(), { dx, dy } = getDistances(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * attractFactor), ay = dy / (rotate.y * attractFactor), p1Factor = p2.size.value / p1.size.value, p2Factor = identity / p1Factor;
|
|
21
22
|
p1.velocity.x -= ax * p1Factor;
|
|
22
23
|
p1.velocity.y -= ay * p1Factor;
|
|
23
24
|
p2.velocity.x += ax * p2Factor;
|
|
24
25
|
p2.velocity.y += ay * p2Factor;
|
|
25
26
|
}
|
|
27
|
+
await Promise.resolve();
|
|
26
28
|
}
|
|
27
29
|
isEnabled(particle) {
|
|
28
30
|
return particle.options.move.attract.enable;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsparticles/interaction-particles-attract",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "tsParticles attract particles interaction",
|
|
5
5
|
"homepage": "https://particles.js.org",
|
|
6
6
|
"repository": {
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"./package.json": "./package.json"
|
|
88
88
|
},
|
|
89
89
|
"dependencies": {
|
|
90
|
-
"@tsparticles/engine": "^3.0
|
|
90
|
+
"@tsparticles/engine": "^3.1.0"
|
|
91
91
|
},
|
|
92
92
|
"publishConfig": {
|
|
93
93
|
"access": "public"
|
package/report.html
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8"/>
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
6
|
-
<title>@tsparticles/interaction-particles-attract [
|
|
6
|
+
<title>@tsparticles/interaction-particles-attract [13 Jan 2024 at 23:00]</title>
|
|
7
7
|
<link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
|
|
8
8
|
|
|
9
9
|
<script>
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
<body>
|
|
32
32
|
<div id="app"></div>
|
|
33
33
|
<script>
|
|
34
|
-
window.chartData = [{"label":"tsparticles.interaction.particles.attract.js","isAsset":true,"statSize":
|
|
34
|
+
window.chartData = [{"label":"tsparticles.interaction.particles.attract.js","isAsset":true,"statSize":1667,"parsedSize":5504,"gzipSize":1866,"groups":[{"label":"dist/browser","path":"./dist/browser","statSize":1625,"groups":[{"id":494,"label":"index.js + 1 modules (concatenated)","path":"./dist/browser/index.js + 1 modules (concatenated)","statSize":1625,"parsedSize":5504,"gzipSize":1866,"concatenated":true,"groups":[{"label":"dist/browser","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser","statSize":1625,"groups":[{"id":null,"label":"index.js","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser/index.js","statSize":223,"parsedSize":755,"gzipSize":256,"inaccurateSizes":true},{"id":null,"label":"Attractor.js","path":"./dist/browser/index.js + 1 modules (concatenated)/dist/browser/Attractor.js","statSize":1402,"parsedSize":4748,"gzipSize":1609,"inaccurateSizes":true}],"parsedSize":5504,"gzipSize":1866,"inaccurateSizes":true}]}],"parsedSize":5504,"gzipSize":1866},{"label":"engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles","statSize":42,"groups":[{"id":533,"label":"engine\",\"root\":\"window\"}","path":"./engine\",\"commonjs2\":\"@tsparticles/engine\",\"amd\":\"@tsparticles/engine\",\"root\":\"window\"}","statSize":42}],"parsedSize":0,"gzipSize":0}],"isInitialByEntrypoint":{"tsparticles.interaction.particles.attract":true}}];
|
|
35
35
|
window.entrypoints = ["tsparticles.interaction.particles.attract","tsparticles.interaction.particles.attract.min"];
|
|
36
36
|
window.defaultSizes = "parsed";
|
|
37
37
|
</script>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Demo / Generator : https://particles.js.org/
|
|
5
5
|
* GitHub : https://www.github.com/matteobruni/tsparticles
|
|
6
6
|
* How to use? : Check the GitHub README
|
|
7
|
-
* v3.0
|
|
7
|
+
* v3.1.0
|
|
8
8
|
*/
|
|
9
9
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
10
10
|
if(typeof exports === 'object' && typeof module === 'object')
|
|
@@ -98,6 +98,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
98
98
|
var engine_root_window_ = __webpack_require__(533);
|
|
99
99
|
;// CONCATENATED MODULE: ./dist/browser/Attractor.js
|
|
100
100
|
|
|
101
|
+
const attractFactor = 1000,
|
|
102
|
+
identity = 1;
|
|
101
103
|
class Attractor extends engine_root_window_.ParticlesInteractorBase {
|
|
102
104
|
constructor(container) {
|
|
103
105
|
super(container);
|
|
@@ -122,15 +124,16 @@ class Attractor extends engine_root_window_.ParticlesInteractorBase {
|
|
|
122
124
|
dy
|
|
123
125
|
} = (0,engine_root_window_.getDistances)(pos1, pos2),
|
|
124
126
|
rotate = p1.options.move.attract.rotate,
|
|
125
|
-
ax = dx / (rotate.x *
|
|
126
|
-
ay = dy / (rotate.y *
|
|
127
|
+
ax = dx / (rotate.x * attractFactor),
|
|
128
|
+
ay = dy / (rotate.y * attractFactor),
|
|
127
129
|
p1Factor = p2.size.value / p1.size.value,
|
|
128
|
-
p2Factor =
|
|
130
|
+
p2Factor = identity / p1Factor;
|
|
129
131
|
p1.velocity.x -= ax * p1Factor;
|
|
130
132
|
p1.velocity.y -= ay * p1Factor;
|
|
131
133
|
p2.velocity.x += ax * p2Factor;
|
|
132
134
|
p2.velocity.y += ay * p2Factor;
|
|
133
135
|
}
|
|
136
|
+
await Promise.resolve();
|
|
134
137
|
}
|
|
135
138
|
isEnabled(particle) {
|
|
136
139
|
return particle.options.move.attract.enable;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see tsparticles.interaction.particles.attract.min.js.LICENSE.txt */
|
|
2
|
-
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],t);else{var o="object"==typeof exports?t(require("@tsparticles/engine")):t(e.window);for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(this,(e=>(()=>{"use strict";var t={533:t=>{t.exports=e}},o={};function r(e){var a=o[e];if(void 0!==a)return a.exports;var
|
|
2
|
+
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],t);else{var o="object"==typeof exports?t(require("@tsparticles/engine")):t(e.window);for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(this,(e=>(()=>{"use strict";var t={533:t=>{t.exports=e}},o={};function r(e){var a=o[e];if(void 0!==a)return a.exports;var i=o[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{r.r(a),r.d(a,{loadParticlesAttractInteraction:()=>o});var e=r(533);class t extends e.ParticlesInteractorBase{constructor(e){super(e)}clear(){}init(){}async interact(t){const o=this.container;void 0===t.attractDistance&&(t.attractDistance=(0,e.getRangeValue)(t.options.move.attract.distance)*o.retina.pixelRatio);const r=t.attractDistance,a=t.getPosition(),i=o.particles.quadTree.queryCircle(a,r);for(const o of i){if(t===o||!o.options.move.attract.enable||o.destroyed||o.spawning)continue;const r=o.getPosition(),{dx:i,dy:n}=(0,e.getDistances)(a,r),s=t.options.move.attract.rotate,c=i/(1e3*s.x),l=n/(1e3*s.y),p=o.size.value/t.size.value,d=1/p;t.velocity.x-=c*p,t.velocity.y-=l*p,o.velocity.x+=c*d,o.velocity.y+=l*d}await Promise.resolve()}isEnabled(e){return e.options.move.attract.enable}reset(){}}async function o(e,o=!0){await e.addInteractor("particlesAttract",(e=>new t(e)),o)}})(),a})()));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! tsParticles Attract Particles Interaction v3.0
|
|
1
|
+
/*! tsParticles Attract Particles Interaction v3.1.0 by Matteo Bruni */
|
package/umd/Attractor.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.Attractor = void 0;
|
|
13
13
|
const engine_1 = require("@tsparticles/engine");
|
|
14
|
+
const attractFactor = 1000, identity = 1;
|
|
14
15
|
class Attractor extends engine_1.ParticlesInteractorBase {
|
|
15
16
|
constructor(container) {
|
|
16
17
|
super(container);
|
|
@@ -29,12 +30,13 @@
|
|
|
29
30
|
if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {
|
|
30
31
|
continue;
|
|
31
32
|
}
|
|
32
|
-
const pos2 = p2.getPosition(), { dx, dy } = (0, engine_1.getDistances)(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x *
|
|
33
|
+
const pos2 = p2.getPosition(), { dx, dy } = (0, engine_1.getDistances)(pos1, pos2), rotate = p1.options.move.attract.rotate, ax = dx / (rotate.x * attractFactor), ay = dy / (rotate.y * attractFactor), p1Factor = p2.size.value / p1.size.value, p2Factor = identity / p1Factor;
|
|
33
34
|
p1.velocity.x -= ax * p1Factor;
|
|
34
35
|
p1.velocity.y -= ay * p1Factor;
|
|
35
36
|
p2.velocity.x += ax * p2Factor;
|
|
36
37
|
p2.velocity.y += ay * p2Factor;
|
|
37
38
|
}
|
|
39
|
+
await Promise.resolve();
|
|
38
40
|
}
|
|
39
41
|
isEnabled(particle) {
|
|
40
42
|
return particle.options.move.attract.enable;
|