1 |
- !function e(t,i,r){function n(o,c){if(!i[o]){if(!t[o]){var l="function"==typeof require&&require;if(!c&&l)return l(o,!0);if(s)return s(o,!0);var a=new Error("Cannot find module '"+o+"'");throw a.code="MODULE_NOT_FOUND",a}var h=i[o]={exports:{}};t[o][0].call(h.exports,function(e){var i=t[o][1][e];return n(i||e)},h,h.exports,e,t,i,r)}return i[o].exports}for(var s="function"==typeof require&&require,o=0;o<r.length;o++)n(r[o]);return n}({1:[function(e,t,i){AFRAME.registerComponent("sphere-collider",e("./src/misc/sphere-collider"))},{"./src/misc/sphere-collider":2}],2:[function(e,t,i){t.exports={schema:{objects:{default:""},state:{default:"collided"},radius:{default:.05},watch:{default:!0}},init:function(){this.observer=null,this.els=[],this.collisions=[],this.handleHit=this.handleHit.bind(this)},remove:function(){this.pause()},play:function(){var e=this.el.sceneEl;this.data.watch&&(this.observer=new MutationObserver(this.update.bind(this,null)),this.observer.observe(e,{childList:!0,subtree:!0}))},pause:function(){this.observer&&(this.observer.disconnect(),this.observer=null)},update:function(){var e,t=this.data;e=t.objects?this.el.sceneEl.querySelectorAll(t.objects):this.el.sceneEl.children,this.els=Array.prototype.slice.call(e)},tick:function(){var e=new THREE.Vector3,t=new THREE.Vector3,i=(new THREE.Vector3,new THREE.Vector3),r=new Map;return function(){var n,s=this.el,o=this.data,c=[];s.getObject3D("mesh")&&(r.clear(),e.copy(s.object3D.getWorldPosition()),s.object3D.getWorldScale(i),n=o.radius*function(e){return Math.max.apply(null,e.toArray())}(i),this.els.forEach(function(i){var s,o,l,a,h,u;i.isEntity&&(o=i.getObject3D("mesh"))&&(u=(a=(new THREE.Box3).setFromObject(o)).getSize(),h=Math.max(u.x,u.y,u.z)/2,s=Math.sqrt(2*h*h),a.getCenter(t),s&&(l=e.distanceTo(t))<s+n&&(c.push(i),r.set(i,l)))}),c.sort(function(e,t){return r.get(e)>r.get(t)?1:-1}).forEach(this.handleHit),0===c.length&&s.emit("hit",{el:null}),this.collisions.filter(function(e){return!r.has(e)}).forEach(function(e){e.removeState(o.state)}),this.collisions=c)}}(),handleHit:function(e){e.emit("hit"),e.addState(this.data.state),this.el.emit("hit",{el:e})}}},{}]},{},[1]);
|