@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.
- package/README.md +26 -21
- package/browser/Bounce.js +11 -1
- package/browser/Collider.js +3 -0
- package/browser/Destroy.js +1 -1
- package/browser/index.js +2 -2
- package/cjs/Bounce.js +10 -0
- package/cjs/Collider.js +22 -30
- package/cjs/Destroy.js +1 -1
- package/cjs/index.js +2 -13
- package/esm/Bounce.js +11 -1
- package/esm/Collider.js +3 -0
- package/esm/Destroy.js +1 -1
- package/esm/index.js +2 -2
- package/package.json +6 -5
- package/report.html +4 -4
- package/tsparticles.interaction.particles.collisions.js +18 -5
- package/tsparticles.interaction.particles.collisions.min.js +1 -1
- package/tsparticles.interaction.particles.collisions.min.js.LICENSE.txt +1 -8
- package/types/Absorb.d.ts +1 -1
- package/types/Bounce.d.ts +6 -2
- package/types/Collider.d.ts +1 -2
- package/types/ResolveCollision.d.ts +1 -1
- package/types/index.d.ts +1 -1
- package/umd/Bounce.js +10 -0
- package/umd/Collider.js +3 -0
- package/umd/Destroy.js +1 -1
- package/umd/index.js +2 -2
|
@@ -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-
|
|
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
|
-
|
|
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() ?
|
|
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:()=>
|
|
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
|
|
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
|
|
2
|
-
|
|
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 {};
|
package/types/Collider.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type
|
|
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
|
|
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
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
|
});
|