@tsparticles/interaction-particles-collisions 3.9.0 → 4.0.0-alpha.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.
Files changed (89) hide show
  1. package/373.min.js +2 -0
  2. package/373.min.js.LICENSE.txt +1 -0
  3. package/518.min.js +2 -0
  4. package/518.min.js.LICENSE.txt +1 -0
  5. package/browser/Absorb.js +7 -4
  6. package/browser/Bounce.js +3 -2
  7. package/browser/Collider.js +11 -2
  8. package/browser/CollisionMode.js +6 -0
  9. package/browser/Destroy.js +4 -3
  10. package/browser/Options/Classes/Collisions.js +31 -0
  11. package/browser/Options/Classes/CollisionsAbsorb.js +14 -0
  12. package/browser/Options/Classes/CollisionsOverlap.js +18 -0
  13. package/browser/Options/Interfaces/ICollisions.js +1 -0
  14. package/browser/Options/Interfaces/ICollisionsAbsorb.js +1 -0
  15. package/browser/Options/Interfaces/ICollisionsOverlap.js +1 -0
  16. package/browser/OverlapPlugin.js +14 -0
  17. package/browser/OverlapPluginInstance.js +25 -0
  18. package/browser/ResolveCollision.js +4 -1
  19. package/browser/Types.js +1 -0
  20. package/browser/index.js +10 -6
  21. package/cjs/Absorb.js +10 -10
  22. package/cjs/Bounce.js +6 -8
  23. package/cjs/Collider.js +15 -10
  24. package/cjs/CollisionMode.js +6 -0
  25. package/cjs/Destroy.js +7 -9
  26. package/cjs/Options/Classes/Collisions.js +31 -0
  27. package/cjs/Options/Classes/CollisionsAbsorb.js +14 -0
  28. package/cjs/Options/Classes/CollisionsOverlap.js +18 -0
  29. package/cjs/Options/Interfaces/ICollisions.js +1 -0
  30. package/cjs/Options/Interfaces/ICollisionsAbsorb.js +1 -0
  31. package/cjs/Options/Interfaces/ICollisionsOverlap.js +1 -0
  32. package/cjs/OverlapPlugin.js +14 -0
  33. package/cjs/OverlapPluginInstance.js +25 -0
  34. package/cjs/ResolveCollision.js +14 -14
  35. package/cjs/Types.js +1 -0
  36. package/cjs/index.js +10 -9
  37. package/dist_browser_Collider_js.js +110 -0
  38. package/dist_browser_OverlapPlugin_js.js +40 -0
  39. package/esm/Absorb.js +7 -4
  40. package/esm/Bounce.js +3 -2
  41. package/esm/Collider.js +11 -2
  42. package/esm/CollisionMode.js +6 -0
  43. package/esm/Destroy.js +4 -3
  44. package/esm/Options/Classes/Collisions.js +31 -0
  45. package/esm/Options/Classes/CollisionsAbsorb.js +14 -0
  46. package/esm/Options/Classes/CollisionsOverlap.js +18 -0
  47. package/esm/Options/Interfaces/ICollisions.js +1 -0
  48. package/esm/Options/Interfaces/ICollisionsAbsorb.js +1 -0
  49. package/esm/Options/Interfaces/ICollisionsOverlap.js +1 -0
  50. package/esm/OverlapPlugin.js +14 -0
  51. package/esm/OverlapPluginInstance.js +25 -0
  52. package/esm/ResolveCollision.js +4 -1
  53. package/esm/Types.js +1 -0
  54. package/esm/index.js +10 -6
  55. package/package.json +4 -3
  56. package/report.html +5 -4
  57. package/tsparticles.interaction.particles.collisions.js +209 -70
  58. package/tsparticles.interaction.particles.collisions.min.js +1 -1
  59. package/tsparticles.interaction.particles.collisions.min.js.LICENSE.txt +1 -1
  60. package/types/Bounce.d.ts +2 -2
  61. package/types/Collider.d.ts +6 -4
  62. package/types/CollisionMode.d.ts +5 -0
  63. package/types/Options/Classes/Collisions.d.ts +15 -0
  64. package/types/Options/Classes/CollisionsAbsorb.d.ts +7 -0
  65. package/types/Options/Classes/CollisionsOverlap.d.ts +8 -0
  66. package/types/Options/Interfaces/ICollisions.d.ts +12 -0
  67. package/types/Options/Interfaces/ICollisionsAbsorb.d.ts +3 -0
  68. package/types/Options/Interfaces/ICollisionsOverlap.d.ts +4 -0
  69. package/types/OverlapPlugin.d.ts +7 -0
  70. package/types/OverlapPluginInstance.d.ts +8 -0
  71. package/types/ResolveCollision.d.ts +3 -2
  72. package/types/Types.d.ts +12 -0
  73. package/types/index.d.ts +1 -1
  74. package/umd/Absorb.js +7 -4
  75. package/umd/Bounce.js +3 -2
  76. package/umd/Collider.js +11 -2
  77. package/umd/CollisionMode.js +19 -0
  78. package/umd/Destroy.js +4 -3
  79. package/umd/Options/Classes/Collisions.js +45 -0
  80. package/umd/Options/Classes/CollisionsAbsorb.js +28 -0
  81. package/umd/Options/Classes/CollisionsOverlap.js +32 -0
  82. package/umd/Options/Interfaces/ICollisions.js +12 -0
  83. package/umd/Options/Interfaces/ICollisionsAbsorb.js +12 -0
  84. package/umd/Options/Interfaces/ICollisionsOverlap.js +12 -0
  85. package/umd/OverlapPlugin.js +28 -0
  86. package/umd/OverlapPluginInstance.js +39 -0
  87. package/umd/ResolveCollision.js +8 -5
  88. package/umd/Types.js +12 -0
  89. package/umd/index.js +45 -7
package/umd/Destroy.js CHANGED
@@ -15,13 +15,14 @@
15
15
  if (!p1.unbreakable && !p2.unbreakable) {
16
16
  (0, Bounce_js_1.bounce)(p1, p2);
17
17
  }
18
- if (p1.getRadius() === undefined && p2.getRadius() !== undefined) {
18
+ const p1Radius = p1.getRadius(), p2Radius = p2.getRadius();
19
+ if (!p1Radius && p2Radius) {
19
20
  p1.destroy();
20
21
  }
21
- else if (p1.getRadius() !== undefined && p2.getRadius() === undefined) {
22
+ else if (p1Radius && !p2Radius) {
22
23
  p2.destroy();
23
24
  }
24
- else if (p1.getRadius() !== undefined && p2.getRadius() !== undefined) {
25
+ else if (p1Radius && p2Radius) {
25
26
  const deleteP = p1.getRadius() >= p2.getRadius() ? p2 : p1;
26
27
  deleteP.destroy();
27
28
  }
@@ -0,0 +1,45 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@tsparticles/engine", "../../CollisionMode.js", "./CollisionsAbsorb.js", "./CollisionsOverlap.js"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Collisions = void 0;
13
+ const engine_1 = require("@tsparticles/engine");
14
+ const CollisionMode_js_1 = require("../../CollisionMode.js");
15
+ const CollisionsAbsorb_js_1 = require("./CollisionsAbsorb.js");
16
+ const CollisionsOverlap_js_1 = require("./CollisionsOverlap.js");
17
+ class Collisions {
18
+ constructor() {
19
+ this.absorb = new CollisionsAbsorb_js_1.CollisionsAbsorb();
20
+ this.bounce = new engine_1.ParticlesBounce();
21
+ this.enable = false;
22
+ this.maxSpeed = 50;
23
+ this.mode = CollisionMode_js_1.CollisionMode.bounce;
24
+ this.overlap = new CollisionsOverlap_js_1.CollisionsOverlap();
25
+ }
26
+ load(data) {
27
+ if ((0, engine_1.isNull)(data)) {
28
+ return;
29
+ }
30
+ this.absorb.load(data.absorb);
31
+ this.bounce.load(data.bounce);
32
+ if (data.enable !== undefined) {
33
+ this.enable = data.enable;
34
+ }
35
+ if (data.maxSpeed !== undefined) {
36
+ this.maxSpeed = (0, engine_1.setRangeValue)(data.maxSpeed);
37
+ }
38
+ if (data.mode !== undefined) {
39
+ this.mode = data.mode;
40
+ }
41
+ this.overlap.load(data.overlap);
42
+ }
43
+ }
44
+ exports.Collisions = Collisions;
45
+ });
@@ -0,0 +1,28 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@tsparticles/engine"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CollisionsAbsorb = void 0;
13
+ const engine_1 = require("@tsparticles/engine");
14
+ class CollisionsAbsorb {
15
+ constructor() {
16
+ this.speed = 2;
17
+ }
18
+ load(data) {
19
+ if ((0, engine_1.isNull)(data)) {
20
+ return;
21
+ }
22
+ if (data.speed !== undefined) {
23
+ this.speed = data.speed;
24
+ }
25
+ }
26
+ }
27
+ exports.CollisionsAbsorb = CollisionsAbsorb;
28
+ });
@@ -0,0 +1,32 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@tsparticles/engine"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CollisionsOverlap = void 0;
13
+ const engine_1 = require("@tsparticles/engine");
14
+ class CollisionsOverlap {
15
+ constructor() {
16
+ this.enable = true;
17
+ this.retries = 0;
18
+ }
19
+ load(data) {
20
+ if ((0, engine_1.isNull)(data)) {
21
+ return;
22
+ }
23
+ if (data.enable !== undefined) {
24
+ this.enable = data.enable;
25
+ }
26
+ if (data.retries !== undefined) {
27
+ this.retries = data.retries;
28
+ }
29
+ }
30
+ }
31
+ exports.CollisionsOverlap = CollisionsOverlap;
32
+ });
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
@@ -0,0 +1,28 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./OverlapPluginInstance.js"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.OverlapPlugin = void 0;
13
+ const OverlapPluginInstance_js_1 = require("./OverlapPluginInstance.js");
14
+ class OverlapPlugin {
15
+ constructor() {
16
+ this.id = "overlap";
17
+ }
18
+ getPlugin(container) {
19
+ return Promise.resolve(new OverlapPluginInstance_js_1.OverlapPluginInstance(container));
20
+ }
21
+ loadOptions() {
22
+ }
23
+ needsPlugin() {
24
+ return true;
25
+ }
26
+ }
27
+ exports.OverlapPlugin = OverlapPlugin;
28
+ });
@@ -0,0 +1,39 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@tsparticles/engine"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.OverlapPluginInstance = void 0;
13
+ const engine_1 = require("@tsparticles/engine");
14
+ const minRetries = 0;
15
+ class OverlapPluginInstance {
16
+ constructor(container) {
17
+ this._checkOverlap = (particle, pos, tryCount) => {
18
+ const collisionsOptions = particle.options.collisions, radius = particle.getRadius();
19
+ if (!collisionsOptions?.enable) {
20
+ return false;
21
+ }
22
+ const overlapOptions = collisionsOptions.overlap;
23
+ if (overlapOptions.enable) {
24
+ return false;
25
+ }
26
+ const retries = overlapOptions.retries;
27
+ if (retries >= minRetries && tryCount > retries) {
28
+ throw new Error(`Particle is overlapping and can't be placed`);
29
+ }
30
+ return !!this._container.particles.find(p => (0, engine_1.getDistance)(pos, p.position) < radius + p.getRadius());
31
+ };
32
+ this._container = container;
33
+ }
34
+ checkParticlePosition(particle, position, tryCount) {
35
+ return this._checkOverlap(particle, position, tryCount);
36
+ }
37
+ }
38
+ exports.OverlapPluginInstance = OverlapPluginInstance;
39
+ });
@@ -4,27 +4,30 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "@tsparticles/engine", "./Absorb.js", "./Bounce.js", "./Destroy.js"], factory);
7
+ define(["require", "exports", "./CollisionMode.js", "./Absorb.js", "./Bounce.js", "./Destroy.js"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.resolveCollision = resolveCollision;
13
- const engine_1 = require("@tsparticles/engine");
13
+ const CollisionMode_js_1 = require("./CollisionMode.js");
14
14
  const Absorb_js_1 = require("./Absorb.js");
15
15
  const Bounce_js_1 = require("./Bounce.js");
16
16
  const Destroy_js_1 = require("./Destroy.js");
17
17
  function resolveCollision(p1, p2, delta, pixelRatio) {
18
+ if (!p1.options.collisions || !p2.options.collisions) {
19
+ return;
20
+ }
18
21
  switch (p1.options.collisions.mode) {
19
- case engine_1.CollisionMode.absorb: {
22
+ case CollisionMode_js_1.CollisionMode.absorb: {
20
23
  (0, Absorb_js_1.absorb)(p1, p2, delta, pixelRatio);
21
24
  break;
22
25
  }
23
- case engine_1.CollisionMode.bounce: {
26
+ case CollisionMode_js_1.CollisionMode.bounce: {
24
27
  (0, Bounce_js_1.bounce)(p1, p2);
25
28
  break;
26
29
  }
27
- case engine_1.CollisionMode.destroy: {
30
+ case CollisionMode_js_1.CollisionMode.destroy: {
28
31
  (0, Destroy_js_1.destroy)(p1, p2);
29
32
  break;
30
33
  }
package/umd/Types.js ADDED
@@ -0,0 +1,12 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ });
package/umd/index.js CHANGED
@@ -1,20 +1,58 @@
1
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
+ if (k2 === undefined) k2 = k;
3
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5
+ desc = { enumerable: true, get: function() { return m[k]; } };
6
+ }
7
+ Object.defineProperty(o, k2, desc);
8
+ }) : (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ o[k2] = m[k];
11
+ }));
12
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
13
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
14
+ }) : function(o, v) {
15
+ o["default"] = v;
16
+ });
17
+ var __importStar = (this && this.__importStar) || (function () {
18
+ var ownKeys = function(o) {
19
+ ownKeys = Object.getOwnPropertyNames || function (o) {
20
+ var ar = [];
21
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
22
+ return ar;
23
+ };
24
+ return ownKeys(o);
25
+ };
26
+ return function (mod) {
27
+ if (mod && mod.__esModule) return mod;
28
+ var result = {};
29
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
30
+ __setModuleDefault(result, mod);
31
+ return result;
32
+ };
33
+ })();
1
34
  (function (factory) {
2
35
  if (typeof module === "object" && typeof module.exports === "object") {
3
36
  var v = factory(require, exports);
4
37
  if (v !== undefined) module.exports = v;
5
38
  }
6
39
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "./Collider.js"], factory);
40
+ define(["require", "exports"], factory);
8
41
  }
9
42
  })(function (require, exports) {
10
43
  "use strict";
44
+ var __syncRequire = typeof module === "object" && typeof module.exports === "object";
11
45
  Object.defineProperty(exports, "__esModule", { value: true });
12
46
  exports.loadParticlesCollisionsInteraction = loadParticlesCollisionsInteraction;
13
- const Collider_js_1 = require("./Collider.js");
14
- async function loadParticlesCollisionsInteraction(engine, refresh = true) {
15
- engine.checkVersion("3.9.0");
16
- await engine.addInteractor("particlesCollisions", container => {
17
- return Promise.resolve(new Collider_js_1.Collider(container));
18
- }, refresh);
47
+ function loadParticlesCollisionsInteraction(engine) {
48
+ engine.checkVersion("4.0.0-alpha.0");
49
+ engine.register(async (e) => {
50
+ const { OverlapPlugin } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./OverlapPlugin.js"))) : new Promise((resolve_1, reject_1) => { require(["./OverlapPlugin.js"], resolve_1, reject_1); }).then(__importStar));
51
+ e.addPlugin(new OverlapPlugin());
52
+ e.addInteractor("particlesCollisions", async (container) => {
53
+ const { Collider } = await (__syncRequire ? Promise.resolve().then(() => __importStar(require("./Collider.js"))) : new Promise((resolve_2, reject_2) => { require(["./Collider.js"], resolve_2, reject_2); }).then(__importStar));
54
+ return new Collider(container);
55
+ });
56
+ });
19
57
  }
20
58
  });