matter-attractors-f
Version:
Unofficial updated version of matter-attractors (https://www.npmjs.com/package/matter-attractors)
1 lines • 1.8 kB
JavaScript
!function(t,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("matter-js")):"function"==typeof define&&define.amd?define(["matter-js"],r):"object"==typeof exports?exports.MatterAttractors=r(require("matter-js")):t.MatterAttractors=r(t.Matter)}(this,function(e){return function(e){var o={};function n(t){if(o[t])return o[t].exports;var r=o[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=o,n.i=function(t){return t},n.d=function(t,r,e){n.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:e})},n.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(r,"a",r),r},n.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},n.p="/libs",n(n.s=1)}([function(t,r){t.exports=e},function(t,r,e){"use strict";var p=e(0),s={name:"matter-attractors",version:"0.1.4",for:"matter-js@^0.12.0",install:function(t){t.after("Body.create",function(){s.Body.init(this)}),t.before("Engine.update",function(t){s.Engine.update(t)})},Body:{init:function(t){t.plugin.attractors=t.plugin.attractors||[]}},Engine:{update:function(t){for(var r=t.world,e=p.Composite.allBodies(r),o=0;o<e.length;o+=1){var n=e[o],i=n.plugin.attractors;if(i&&0<i.length)for(var a=0;a<e.length;a+=1){var s=e[a];if(s.id!==n.id)for(var u=0;u<i.length;u+=1){var c=i[u],f=c;p.Common.isFunction(c)&&(f=c(n,s)),f&&p.Body.applyForce(s,s.position,f)}}}}},Attractors:{gravityConstant:.001,gravity:function(t,r){var e=p.Vector.sub(r.position,t.position),o=p.Vector.magnitudeSquared(e)||1e-4,n=p.Vector.normalise(e),i=-s.Attractors.gravityConstant*(t.mass*r.mass/o),a=p.Vector.mult(n,i);p.Body.applyForce(t,t.position,p.Vector.neg(a)),p.Body.applyForce(r,r.position,a)}}};p.Plugin.register(s),t.exports=s}])});