@tsparticles/interaction-particles-collisions 3.0.0-alpha.0 → 3.0.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.
@@ -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.0-alpha.0
7
+ * v3.0.0-beta.0
8
8
  */
9
9
  (function webpackUniversalModuleDefinition(root, factory) {
10
10
  if(typeof exports === 'object' && typeof module === 'object')
@@ -91,7 +91,7 @@ __webpack_require__.r(__webpack_exports__);
91
91
 
92
92
  // EXPORTS
93
93
  __webpack_require__.d(__webpack_exports__, {
94
- "loadParticlesCollisionsInteraction": () => (/* binding */ loadParticlesCollisionsInteraction)
94
+ loadParticlesCollisionsInteraction: () => (/* binding */ loadParticlesCollisionsInteraction)
95
95
  });
96
96
 
97
97
  // EXTERNAL MODULE: external {"commonjs":"@tsparticles/engine","commonjs2":"@tsparticles/engine","amd":"@tsparticles/engine","root":"window"}
@@ -124,8 +124,18 @@ function absorb(p1, p2, delta, pixelRatio) {
124
124
  }
125
125
  ;// CONCATENATED MODULE: ./dist/browser/Bounce.js
126
126
 
127
+ const fixBounceSpeed = p => {
128
+ if (p.collisionMaxSpeed === undefined) {
129
+ p.collisionMaxSpeed = (0,engine_root_window_.getRangeValue)(p.options.collisions.maxSpeed);
130
+ }
131
+ if (p.velocity.length > p.collisionMaxSpeed) {
132
+ p.velocity.length = p.collisionMaxSpeed;
133
+ }
134
+ };
127
135
  function bounce(p1, p2) {
128
136
  (0,engine_root_window_.circleBounce)((0,engine_root_window_.circleBounceDataFromParticle)(p1), (0,engine_root_window_.circleBounceDataFromParticle)(p2));
137
+ fixBounceSpeed(p1);
138
+ fixBounceSpeed(p2);
129
139
  }
130
140
  ;// CONCATENATED MODULE: ./dist/browser/Destroy.js
131
141
 
@@ -138,7 +148,7 @@ function destroy(p1, p2) {
138
148
  } else if (p1.getRadius() !== undefined && p2.getRadius() === undefined) {
139
149
  p2.destroy();
140
150
  } else if (p1.getRadius() !== undefined && p2.getRadius() !== undefined) {
141
- const deleteP = p1.getRadius() >= p2.getRadius() ? p1 : p2;
151
+ const deleteP = p1.getRadius() >= p2.getRadius() ? p2 : p1;
142
152
  deleteP.destroy();
143
153
  }
144
154
  }
@@ -175,6 +185,9 @@ class Collider extends engine_root_window_.ParticlesInteractorBase {
175
185
  clear() {}
176
186
  init() {}
177
187
  async interact(p1, delta) {
188
+ if (p1.destroyed || p1.spawning) {
189
+ return;
190
+ }
178
191
  const container = this.container,
179
192
  pos1 = p1.getPosition(),
180
193
  radius1 = p1.getRadius(),
@@ -203,8 +216,8 @@ class Collider extends engine_root_window_.ParticlesInteractorBase {
203
216
  }
204
217
  ;// CONCATENATED MODULE: ./dist/browser/index.js
205
218
 
206
- async function loadParticlesCollisionsInteraction(engine) {
207
- await engine.addInteractor("particlesCollisions", container => new Collider(container));
219
+ async function loadParticlesCollisionsInteraction(engine, refresh = true) {
220
+ await engine.addInteractor("particlesCollisions", container => new Collider(container), refresh);
208
221
  }
209
222
  })();
210
223
 
@@ -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:()=>a});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())}function t(o,t){(0,e.circleBounce)((0,e.circleBounceDataFromParticle)(o),(0,e.circleBounceDataFromParticle)(t))}function n(e,i,s,n){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,i,s,n);break;case"bounce":t(e,i);break;case"destroy":!function(e,o){e.unbreakable||o.unbreakable||t(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()?e:o).destroy()}(e,i)}}class r extends e.ParticlesInteractorBase{constructor(e){super(e)}clear(){}init(){}async interact(o,t){const i=this.container,s=o.getPosition(),r=o.getRadius(),a=i.particles.quadTree.queryCircle(s,2*r);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(),d=c.getRadius();if(Math.abs(Math.round(s.z)-Math.round(a.z))>r+d)continue;(0,e.getDistance)(s,a)>r+d||n(o,c,t,i.retina.pixelRatio)}}isEnabled(e){return e.options.collisions.enable}reset(){}}async function a(e){await e.addInteractor("particlesCollisions",(e=>new r(e)))}})(),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:()=>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})()));
@@ -1,8 +1 @@
1
- /*!
2
- * Author : Matteo Bruni
3
- * MIT license: https://opensource.org/licenses/MIT
4
- * Demo / Generator : https://particles.js.org/
5
- * GitHub : https://www.github.com/matteobruni/tsparticles
6
- * How to use? : Check the GitHub README
7
- * v3.0.0-alpha.0
8
- */
1
+ /*! tsParticles Collisions Particles Interaction v3.0.0-beta.0 by Matteo Bruni */
package/types/Absorb.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import type { IDelta, Particle } from "@tsparticles/engine";
1
+ import { type IDelta, type Particle } from "@tsparticles/engine";
2
2
  export declare function absorb(p1: Particle, p2: Particle, delta: IDelta, pixelRatio: number): void;
package/types/Bounce.d.ts CHANGED
@@ -1,2 +1,6 @@
1
- import type { Particle } from "@tsparticles/engine";
2
- export declare function bounce(p1: Particle, p2: Particle): void;
1
+ import { type Particle } from "@tsparticles/engine";
2
+ type BounceParticle = Particle & {
3
+ collisionMaxSpeed?: number;
4
+ };
5
+ export declare function bounce(p1: BounceParticle, p2: BounceParticle): void;
6
+ export {};
@@ -1,5 +1,4 @@
1
- import type { Container, IDelta, Particle } from "@tsparticles/engine";
2
- import { ParticlesInteractorBase } from "@tsparticles/engine";
1
+ import { type Container, type IDelta, type Particle, ParticlesInteractorBase } from "@tsparticles/engine";
3
2
  export declare class Collider extends ParticlesInteractorBase {
4
3
  constructor(container: Container);
5
4
  clear(): void;
@@ -1,2 +1,2 @@
1
- import type { IDelta, Particle } from "@tsparticles/engine";
1
+ import { type IDelta, type Particle } from "@tsparticles/engine";
2
2
  export declare function resolveCollision(p1: Particle, p2: Particle, delta: IDelta, pixelRatio: number): void;
package/types/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  import type { Engine } from "@tsparticles/engine";
2
- export declare function loadParticlesCollisionsInteraction(engine: Engine): Promise<void>;
2
+ export declare function loadParticlesCollisionsInteraction(engine: Engine, refresh?: boolean): Promise<void>;
package/umd/Bounce.js CHANGED
@@ -11,8 +11,18 @@
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.bounce = void 0;
13
13
  const engine_1 = require("@tsparticles/engine");
14
+ const fixBounceSpeed = (p) => {
15
+ if (p.collisionMaxSpeed === undefined) {
16
+ p.collisionMaxSpeed = (0, engine_1.getRangeValue)(p.options.collisions.maxSpeed);
17
+ }
18
+ if (p.velocity.length > p.collisionMaxSpeed) {
19
+ p.velocity.length = p.collisionMaxSpeed;
20
+ }
21
+ };
14
22
  function bounce(p1, p2) {
15
23
  (0, engine_1.circleBounce)((0, engine_1.circleBounceDataFromParticle)(p1), (0, engine_1.circleBounceDataFromParticle)(p2));
24
+ fixBounceSpeed(p1);
25
+ fixBounceSpeed(p2);
16
26
  }
17
27
  exports.bounce = bounce;
18
28
  });
package/umd/Collider.js CHANGED
@@ -21,6 +21,9 @@
21
21
  init() {
22
22
  }
23
23
  async interact(p1, delta) {
24
+ if (p1.destroyed || p1.spawning) {
25
+ return;
26
+ }
24
27
  const container = this.container, pos1 = p1.getPosition(), radius1 = p1.getRadius(), query = container.particles.quadTree.queryCircle(pos1, radius1 * 2);
25
28
  for (const p2 of query) {
26
29
  if (p1 === p2 ||
package/umd/Destroy.js CHANGED
@@ -22,7 +22,7 @@
22
22
  p2.destroy();
23
23
  }
24
24
  else if (p1.getRadius() !== undefined && p2.getRadius() !== undefined) {
25
- const deleteP = p1.getRadius() >= p2.getRadius() ? p1 : p2;
25
+ const deleteP = p1.getRadius() >= p2.getRadius() ? p2 : p1;
26
26
  deleteP.destroy();
27
27
  }
28
28
  }
package/umd/index.js CHANGED
@@ -11,8 +11,8 @@
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.loadParticlesCollisionsInteraction = void 0;
13
13
  const Collider_1 = require("./Collider");
14
- async function loadParticlesCollisionsInteraction(engine) {
15
- await engine.addInteractor("particlesCollisions", (container) => new Collider_1.Collider(container));
14
+ async function loadParticlesCollisionsInteraction(engine, refresh = true) {
15
+ await engine.addInteractor("particlesCollisions", (container) => new Collider_1.Collider(container), refresh);
16
16
  }
17
17
  exports.loadParticlesCollisionsInteraction = loadParticlesCollisionsInteraction;
18
18
  });