@tsparticles/interaction-particles-collisions 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/Absorb.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { clamp } from "@tsparticles/engine";
2
+ const half = 0.5, absorbFactor = 10, minAbsorbFactor = 0;
2
3
  function updateAbsorb(p1, r1, p2, r2, delta, pixelRatio) {
3
- const factor = clamp((p1.options.collisions.absorb.speed * delta.factor) / 10, 0, r2);
4
- p1.size.value += factor / 2;
4
+ const factor = clamp((p1.options.collisions.absorb.speed * delta.factor) / absorbFactor, minAbsorbFactor, r2);
5
+ p1.size.value += factor * half;
5
6
  p2.size.value -= factor;
6
7
  if (r2 <= pixelRatio) {
7
8
  p2.size.value = 0;
@@ -1,5 +1,6 @@
1
1
  import { ParticlesInteractorBase, getDistance } from "@tsparticles/engine";
2
2
  import { resolveCollision } from "./ResolveCollision.js";
3
+ const double = 2;
3
4
  export class Collider extends ParticlesInteractorBase {
4
5
  constructor(container) {
5
6
  super(container);
@@ -12,7 +13,7 @@ export class Collider extends ParticlesInteractorBase {
12
13
  if (p1.destroyed || p1.spawning) {
13
14
  return;
14
15
  }
15
- const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * 2);
16
+ const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * double);
16
17
  for (const p2 of query) {
17
18
  if (p1 === p2 ||
18
19
  !p2.options.collisions.enable ||
@@ -31,6 +32,7 @@ export class Collider extends ParticlesInteractorBase {
31
32
  }
32
33
  resolveCollision(p1, p2, delta, container.retina.pixelRatio);
33
34
  }
35
+ await Promise.resolve();
34
36
  }
35
37
  isEnabled(particle) {
36
38
  return particle.options.collisions.enable;
package/cjs/Absorb.js CHANGED
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.absorb = void 0;
4
4
  const engine_1 = require("@tsparticles/engine");
5
+ const half = 0.5, absorbFactor = 10, minAbsorbFactor = 0;
5
6
  function updateAbsorb(p1, r1, p2, r2, delta, pixelRatio) {
6
- const factor = (0, engine_1.clamp)((p1.options.collisions.absorb.speed * delta.factor) / 10, 0, r2);
7
- p1.size.value += factor / 2;
7
+ const factor = (0, engine_1.clamp)((p1.options.collisions.absorb.speed * delta.factor) / absorbFactor, minAbsorbFactor, r2);
8
+ p1.size.value += factor * half;
8
9
  p2.size.value -= factor;
9
10
  if (r2 <= pixelRatio) {
10
11
  p2.size.value = 0;
package/cjs/Collider.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Collider = void 0;
4
4
  const engine_1 = require("@tsparticles/engine");
5
5
  const ResolveCollision_js_1 = require("./ResolveCollision.js");
6
+ const double = 2;
6
7
  class Collider extends engine_1.ParticlesInteractorBase {
7
8
  constructor(container) {
8
9
  super(container);
@@ -15,7 +16,7 @@ class Collider extends engine_1.ParticlesInteractorBase {
15
16
  if (p1.destroyed || p1.spawning) {
16
17
  return;
17
18
  }
18
- const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * 2);
19
+ const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * double);
19
20
  for (const p2 of query) {
20
21
  if (p1 === p2 ||
21
22
  !p2.options.collisions.enable ||
@@ -34,6 +35,7 @@ class Collider extends engine_1.ParticlesInteractorBase {
34
35
  }
35
36
  (0, ResolveCollision_js_1.resolveCollision)(p1, p2, delta, container.retina.pixelRatio);
36
37
  }
38
+ await Promise.resolve();
37
39
  }
38
40
  isEnabled(particle) {
39
41
  return particle.options.collisions.enable;
package/esm/Absorb.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { clamp } from "@tsparticles/engine";
2
+ const half = 0.5, absorbFactor = 10, minAbsorbFactor = 0;
2
3
  function updateAbsorb(p1, r1, p2, r2, delta, pixelRatio) {
3
- const factor = clamp((p1.options.collisions.absorb.speed * delta.factor) / 10, 0, r2);
4
- p1.size.value += factor / 2;
4
+ const factor = clamp((p1.options.collisions.absorb.speed * delta.factor) / absorbFactor, minAbsorbFactor, r2);
5
+ p1.size.value += factor * half;
5
6
  p2.size.value -= factor;
6
7
  if (r2 <= pixelRatio) {
7
8
  p2.size.value = 0;
package/esm/Collider.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { ParticlesInteractorBase, getDistance } from "@tsparticles/engine";
2
2
  import { resolveCollision } from "./ResolveCollision.js";
3
+ const double = 2;
3
4
  export class Collider extends ParticlesInteractorBase {
4
5
  constructor(container) {
5
6
  super(container);
@@ -12,7 +13,7 @@ export class Collider extends ParticlesInteractorBase {
12
13
  if (p1.destroyed || p1.spawning) {
13
14
  return;
14
15
  }
15
- const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * 2);
16
+ const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * double);
16
17
  for (const p2 of query) {
17
18
  if (p1 === p2 ||
18
19
  !p2.options.collisions.enable ||
@@ -31,6 +32,7 @@ export class Collider extends ParticlesInteractorBase {
31
32
  }
32
33
  resolveCollision(p1, p2, delta, container.retina.pixelRatio);
33
34
  }
35
+ await Promise.resolve();
34
36
  }
35
37
  isEnabled(particle) {
36
38
  return particle.options.collisions.enable;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsparticles/interaction-particles-collisions",
3
- "version": "3.0.3",
3
+ "version": "3.1.0",
4
4
  "description": "tsParticles collisions 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.3"
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-collisions [26 Dec 2023 at 19:26]</title>
6
+ <title>@tsparticles/interaction-particles-collisions [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.collisions.js","isAsset":true,"statSize":3720,"parsedSize":7516,"gzipSize":2257,"groups":[{"label":"dist/browser","path":"./dist/browser","statSize":3678,"groups":[{"id":572,"label":"index.js + 5 modules (concatenated)","path":"./dist/browser/index.js + 5 modules (concatenated)","statSize":3678,"parsedSize":7516,"gzipSize":2257,"concatenated":true,"groups":[{"label":"dist/browser","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser","statSize":3678,"groups":[{"id":null,"label":"index.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/index.js","statSize":226,"parsedSize":461,"gzipSize":138,"inaccurateSizes":true},{"id":null,"label":"Collider.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/Collider.js","statSize":1215,"parsedSize":2482,"gzipSize":745,"inaccurateSizes":true},{"id":null,"label":"ResolveCollision.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/ResolveCollision.js","statSize":466,"parsedSize":952,"gzipSize":285,"inaccurateSizes":true},{"id":null,"label":"Absorb.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/Absorb.js","statSize":770,"parsedSize":1573,"gzipSize":472,"inaccurateSizes":true},{"id":null,"label":"Bounce.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/Bounce.js","statSize":509,"parsedSize":1040,"gzipSize":312,"inaccurateSizes":true},{"id":null,"label":"Destroy.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/Destroy.js","statSize":492,"parsedSize":1005,"gzipSize":301,"inaccurateSizes":true}],"parsedSize":7516,"gzipSize":2257,"inaccurateSizes":true}]}],"parsedSize":7516,"gzipSize":2257},{"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.collisions":true}}];
34
+ window.chartData = [{"label":"tsparticles.interaction.particles.collisions.js","isAsset":true,"statSize":3861,"parsedSize":7675,"gzipSize":2314,"groups":[{"label":"dist/browser","path":"./dist/browser","statSize":3819,"groups":[{"id":303,"label":"index.js + 5 modules (concatenated)","path":"./dist/browser/index.js + 5 modules (concatenated)","statSize":3819,"parsedSize":7675,"gzipSize":2314,"concatenated":true,"groups":[{"label":"dist/browser","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser","statSize":3819,"groups":[{"id":null,"label":"index.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/index.js","statSize":226,"parsedSize":454,"gzipSize":136,"inaccurateSizes":true},{"id":null,"label":"Collider.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/Collider.js","statSize":1267,"parsedSize":2546,"gzipSize":767,"inaccurateSizes":true},{"id":null,"label":"ResolveCollision.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/ResolveCollision.js","statSize":466,"parsedSize":936,"gzipSize":282,"inaccurateSizes":true},{"id":null,"label":"Absorb.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/Absorb.js","statSize":859,"parsedSize":1726,"gzipSize":520,"inaccurateSizes":true},{"id":null,"label":"Bounce.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/Bounce.js","statSize":509,"parsedSize":1022,"gzipSize":308,"inaccurateSizes":true},{"id":null,"label":"Destroy.js","path":"./dist/browser/index.js + 5 modules (concatenated)/dist/browser/Destroy.js","statSize":492,"parsedSize":988,"gzipSize":298,"inaccurateSizes":true}],"parsedSize":7675,"gzipSize":2314,"inaccurateSizes":true}]}],"parsedSize":7675,"gzipSize":2314},{"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.collisions":true}}];
35
35
  window.entrypoints = ["tsparticles.interaction.particles.collisions","tsparticles.interaction.particles.collisions.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.3
7
+ * v3.1.0
8
8
  */
9
9
  (function webpackUniversalModuleDefinition(root, factory) {
10
10
  if(typeof exports === 'object' && typeof module === 'object')
@@ -98,9 +98,12 @@ __webpack_require__.d(__webpack_exports__, {
98
98
  var engine_root_window_ = __webpack_require__(533);
99
99
  ;// CONCATENATED MODULE: ./dist/browser/Absorb.js
100
100
 
101
+ const half = 0.5,
102
+ absorbFactor = 10,
103
+ minAbsorbFactor = 0;
101
104
  function updateAbsorb(p1, r1, p2, r2, delta, pixelRatio) {
102
- const factor = (0,engine_root_window_.clamp)(p1.options.collisions.absorb.speed * delta.factor / 10, 0, r2);
103
- p1.size.value += factor / 2;
105
+ const factor = (0,engine_root_window_.clamp)(p1.options.collisions.absorb.speed * delta.factor / absorbFactor, minAbsorbFactor, r2);
106
+ p1.size.value += factor * half;
104
107
  p2.size.value -= factor;
105
108
  if (r2 <= pixelRatio) {
106
109
  p2.size.value = 0;
@@ -178,6 +181,7 @@ function resolveCollision(p1, p2, delta, pixelRatio) {
178
181
  ;// CONCATENATED MODULE: ./dist/browser/Collider.js
179
182
 
180
183
 
184
+ const Collider_double = 2;
181
185
  class Collider extends engine_root_window_.ParticlesInteractorBase {
182
186
  constructor(container) {
183
187
  super(container);
@@ -191,7 +195,7 @@ class Collider extends engine_root_window_.ParticlesInteractorBase {
191
195
  const container = this.container,
192
196
  pos1 = p1.getPosition(),
193
197
  radius1 = p1.getRadius(),
194
- query = container.particles.quadTree.queryCircle(pos1, radius1 * 2);
198
+ query = container.particles.quadTree.queryCircle(pos1, radius1 * Collider_double);
195
199
  for (const p2 of query) {
196
200
  if (p1 === p2 || !p2.options.collisions.enable || p1.options.collisions.mode !== p2.options.collisions.mode || p2.destroyed || p2.spawning) {
197
201
  continue;
@@ -208,6 +212,7 @@ class Collider extends engine_root_window_.ParticlesInteractorBase {
208
212
  }
209
213
  resolveCollision(p1, p2, delta, container.retina.pixelRatio);
210
214
  }
215
+ await Promise.resolve();
211
216
  }
212
217
  isEnabled(particle) {
213
218
  return particle.options.collisions.enable;
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see tsparticles.interaction.particles.collisions.min.js.LICENSE.txt */
2
- !function(e,o){if("object"==typeof exports&&"object"==typeof module)module.exports=o(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],o);else{var t="object"==typeof exports?o(require("@tsparticles/engine")):o(e.window);for(var i in t)("object"==typeof exports?exports:e)[i]=t[i]}}(this,(e=>(()=>{"use strict";var o={533:o=>{o.exports=e}},t={};function i(e){var s=t[e];if(void 0!==s)return s.exports;var n=t[e]={exports:{}};return o[e](n,n.exports,i),n.exports}i.d=(e,o)=>{for(var t in o)i.o(o,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},i.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{i.r(s),i.d(s,{loadParticlesCollisionsInteraction:()=>c});var e=i(533);function o(o,t,i,s,n,r){const a=(0,e.clamp)(o.options.collisions.absorb.speed*n.factor/10,0,s);o.size.value+=a/2,i.size.value-=a,s<=r&&(i.size.value=0,i.destroy())}const t=o=>{void 0===o.collisionMaxSpeed&&(o.collisionMaxSpeed=(0,e.getRangeValue)(o.options.collisions.maxSpeed)),o.velocity.length>o.collisionMaxSpeed&&(o.velocity.length=o.collisionMaxSpeed)};function n(o,i){(0,e.circleBounce)((0,e.circleBounceDataFromParticle)(o),(0,e.circleBounceDataFromParticle)(i)),t(o),t(i)}function r(e,t,i,s){switch(e.options.collisions.mode){case"absorb":!function(e,t,i,s){const n=e.getRadius(),r=t.getRadius();void 0===n&&void 0!==r?e.destroy():void 0!==n&&void 0===r?t.destroy():void 0!==n&&void 0!==r&&(n>=r?o(e,0,t,r,i,s):o(t,0,e,n,i,s))}(e,t,i,s);break;case"bounce":n(e,t);break;case"destroy":!function(e,o){e.unbreakable||o.unbreakable||n(e,o),void 0===e.getRadius()&&void 0!==o.getRadius()?e.destroy():void 0!==e.getRadius()&&void 0===o.getRadius()?o.destroy():void 0!==e.getRadius()&&void 0!==o.getRadius()&&(e.getRadius()>=o.getRadius()?o:e).destroy()}(e,t)}}class a extends e.ParticlesInteractorBase{constructor(e){super(e)}clear(){}init(){}async interact(o,t){if(o.destroyed||o.spawning)return;const i=this.container,s=o.getPosition(),n=o.getRadius(),a=i.particles.quadTree.queryCircle(s,2*n);for(const c of a){if(o===c||!c.options.collisions.enable||o.options.collisions.mode!==c.options.collisions.mode||c.destroyed||c.spawning)continue;const a=c.getPosition(),l=c.getRadius();if(Math.abs(Math.round(s.z)-Math.round(a.z))>n+l)continue;(0,e.getDistance)(s,a)>n+l||r(o,c,t,i.retina.pixelRatio)}}isEnabled(e){return e.options.collisions.enable}reset(){}}async function c(e,o=!0){await e.addInteractor("particlesCollisions",(e=>new a(e)),o)}})(),s})()));
2
+ !function(e,o){if("object"==typeof exports&&"object"==typeof module)module.exports=o(require("@tsparticles/engine"));else if("function"==typeof define&&define.amd)define(["@tsparticles/engine"],o);else{var t="object"==typeof exports?o(require("@tsparticles/engine")):o(e.window);for(var i in t)("object"==typeof exports?exports:e)[i]=t[i]}}(this,(e=>(()=>{"use strict";var o={533:o=>{o.exports=e}},t={};function i(e){var s=t[e];if(void 0!==s)return s.exports;var n=t[e]={exports:{}};return o[e](n,n.exports,i),n.exports}i.d=(e,o)=>{for(var t in o)i.o(o,t)&&!i.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},i.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{i.r(s),i.d(s,{loadParticlesCollisionsInteraction:()=>u});var e=i(533);const o=.5,t=10,n=0;function r(i,s,r,a,c,l){const d=(0,e.clamp)(i.options.collisions.absorb.speed*c.factor/t,n,a);i.size.value+=d*o,r.size.value-=d,a<=l&&(r.size.value=0,r.destroy())}const a=o=>{void 0===o.collisionMaxSpeed&&(o.collisionMaxSpeed=(0,e.getRangeValue)(o.options.collisions.maxSpeed)),o.velocity.length>o.collisionMaxSpeed&&(o.velocity.length=o.collisionMaxSpeed)};function c(o,t){(0,e.circleBounce)((0,e.circleBounceDataFromParticle)(o),(0,e.circleBounceDataFromParticle)(t)),a(o),a(t)}function l(e,o,t,i){switch(e.options.collisions.mode){case"absorb":!function(e,o,t,i){const s=e.getRadius(),n=o.getRadius();void 0===s&&void 0!==n?e.destroy():void 0!==s&&void 0===n?o.destroy():void 0!==s&&void 0!==n&&(s>=n?r(e,0,o,n,t,i):r(o,0,e,s,t,i))}(e,o,t,i);break;case"bounce":c(e,o);break;case"destroy":!function(e,o){e.unbreakable||o.unbreakable||c(e,o),void 0===e.getRadius()&&void 0!==o.getRadius()?e.destroy():void 0!==e.getRadius()&&void 0===o.getRadius()?o.destroy():void 0!==e.getRadius()&&void 0!==o.getRadius()&&(e.getRadius()>=o.getRadius()?o:e).destroy()}(e,o)}}class d extends e.ParticlesInteractorBase{constructor(e){super(e)}clear(){}init(){}async interact(o,t){if(o.destroyed||o.spawning)return;const i=this.container,s=o.getPosition(),n=o.getRadius(),r=i.particles.quadTree.queryCircle(s,2*n);for(const a of r){if(o===a||!a.options.collisions.enable||o.options.collisions.mode!==a.options.collisions.mode||a.destroyed||a.spawning)continue;const r=a.getPosition(),c=a.getRadius();if(Math.abs(Math.round(s.z)-Math.round(r.z))>n+c)continue;(0,e.getDistance)(s,r)>n+c||l(o,a,t,i.retina.pixelRatio)}await Promise.resolve()}isEnabled(e){return e.options.collisions.enable}reset(){}}async function u(e,o=!0){await e.addInteractor("particlesCollisions",(e=>new d(e)),o)}})(),s})()));
@@ -1 +1 @@
1
- /*! tsParticles Collisions Particles Interaction v3.0.3 by Matteo Bruni */
1
+ /*! tsParticles Collisions Particles Interaction v3.1.0 by Matteo Bruni */
package/umd/Absorb.js CHANGED
@@ -11,9 +11,10 @@
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.absorb = void 0;
13
13
  const engine_1 = require("@tsparticles/engine");
14
+ const half = 0.5, absorbFactor = 10, minAbsorbFactor = 0;
14
15
  function updateAbsorb(p1, r1, p2, r2, delta, pixelRatio) {
15
- const factor = (0, engine_1.clamp)((p1.options.collisions.absorb.speed * delta.factor) / 10, 0, r2);
16
- p1.size.value += factor / 2;
16
+ const factor = (0, engine_1.clamp)((p1.options.collisions.absorb.speed * delta.factor) / absorbFactor, minAbsorbFactor, r2);
17
+ p1.size.value += factor * half;
17
18
  p2.size.value -= factor;
18
19
  if (r2 <= pixelRatio) {
19
20
  p2.size.value = 0;
package/umd/Collider.js CHANGED
@@ -12,6 +12,7 @@
12
12
  exports.Collider = void 0;
13
13
  const engine_1 = require("@tsparticles/engine");
14
14
  const ResolveCollision_js_1 = require("./ResolveCollision.js");
15
+ const double = 2;
15
16
  class Collider extends engine_1.ParticlesInteractorBase {
16
17
  constructor(container) {
17
18
  super(container);
@@ -24,7 +25,7 @@
24
25
  if (p1.destroyed || p1.spawning) {
25
26
  return;
26
27
  }
27
- const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * 2);
28
+ const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * double);
28
29
  for (const p2 of query) {
29
30
  if (p1 === p2 ||
30
31
  !p2.options.collisions.enable ||
@@ -43,6 +44,7 @@
43
44
  }
44
45
  (0, ResolveCollision_js_1.resolveCollision)(p1, p2, delta, container.retina.pixelRatio);
45
46
  }
47
+ await Promise.resolve();
46
48
  }
47
49
  isEnabled(particle) {
48
50
  return particle.options.collisions.enable;