@tsparticles/interaction-particles-attract
Version:
tsParticles attract particles interaction
2 lines • 1.85 kB
JavaScript
/*! For license information please see tsparticles.interaction.particles.attract.min.js.LICENSE.txt */
!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=>(()=>{var t={303:t=>{t.exports=e}},o={};function r(e){var i=o[e];if(void 0!==i)return i.exports;var n=o[e]={exports:{}};return t[e](n,n.exports,r),n.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 i={};r.r(i),r.d(i,{loadParticlesAttractInteraction:()=>s});var n=r(303);class a extends n.ParticlesInteractorBase{constructor(e){super(e)}clear(){}init(){}interact(e){const t=this.container;void 0===e.attractDistance&&(e.attractDistance=(0,n.getRangeValue)(e.options.move.attract.distance)*t.retina.pixelRatio);const o=e.attractDistance,r=e.getPosition(),i=t.particles.quadTree.queryCircle(r,o);for(const t of i){if(e===t||!t.options.move.attract.enable||t.destroyed||t.spawning)continue;const o=t.getPosition(),{dx:i,dy:a}=(0,n.getDistances)(r,o),s=e.options.move.attract.rotate,c=i/(1e3*s.x),l=a/(1e3*s.y),p=t.size.value/e.size.value,d=1/p;e.velocity.x-=c*p,e.velocity.y-=l*p,t.velocity.x+=c*d,t.velocity.y+=l*d}}isEnabled(e){return e.options.move.attract.enable}reset(){}}async function s(e,t=!0){e.checkVersion("3.8.1"),await e.addInteractor("particlesAttract",(e=>Promise.resolve(new a(e))),t)}return i})()));