🚨 Active Supply Chain Attack:node-ipc Package Compromised.Learn More
Socket
Book a DemoSign in
Socket

sparse-octree

Package Overview
Dependencies
Maintainers
1
Versions
63
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sparse-octree - npm Package Compare versions

Comparing version
2.4.1
to
2.4.2
+2
-2
build/sparse-octree.min.js
/**
* sparse-octree v2.4.1 build Oct 25 2016
* sparse-octree v2.4.2 build Nov 05 2016
* https://github.com/vanruesc/sparse-octree
* Copyright 2016 Raoul van Rüschen, Zlib
*/
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?b(exports,require("three")):"function"==typeof define&&define.amd?define(["exports","three"],b):b(a.OCTREE=a.OCTREE||{},a.THREE)}(this,function(a,b){"use strict";function c(a,b,c,d,e,f){var g=0;return a>b&&a>c?(e<a&&(g=2|g),f<a&&(g=1|g)):b>c?(d<b&&(g=4|g),f<b&&(g=1|g)):(d<c&&(g=4|g),e<c&&(g=2|g)),g}function d(a,b,c,d){var e=void 0,f=0;return b<c?(e=b,f=0):(e=c,f=1),d<e&&(f=2),r[a][f]}function e(a,b,f,g,h,i,j,k,l){var m=a.children,n=void 0,o=void 0,p=void 0,r=void 0;if(h>=0&&i>=0&&j>=0)if(null===m)l.push(a);else{o=.5*(b+h),p=.5*(f+i),r=.5*(g+j),n=c(b,f,g,o,p,r);do switch(n){case 0:e(m[q[8]],b,f,g,o,p,r,k,l),n=d(n,o,p,r);break;case 1:e(m[q[8]^q[1]],b,f,r,o,p,j,k,l),n=d(n,o,p,j);break;case 2:e(m[q[8]^q[2]],b,p,g,o,i,r,k,l),n=d(n,o,i,r);break;case 3:e(m[q[8]^q[3]],b,p,r,o,i,j,k,l),n=d(n,o,i,j);break;case 4:e(m[q[8]^q[4]],o,f,g,h,p,r,k,l),n=d(n,h,p,r);break;case 5:e(m[q[8]^q[5]],o,f,r,h,p,j,k,l),n=d(n,h,p,j);break;case 6:e(m[q[8]^q[6]],o,p,g,h,i,r,k,l),n=d(n,h,i,r);break;case 7:e(m[q[8]^q[7]],o,p,r,h,i,j,k,l),n=8}while(n<8)}}b="default"in b?b.default:b;var f=function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),h=function a(b,c,d){null===b&&(b=Function.prototype);var e=Object.getOwnPropertyDescriptor(b,c);if(void 0===e){var f=Object.getPrototypeOf(b);return null===f?void 0:a(f,c,d)}if("value"in e)return e.value;var g=e.get;if(void 0!==g)return g.call(d)},i=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)},j=function(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!=typeof b&&"function"!=typeof b?a:b},k=function(a){if(Array.isArray(a)){for(var b=0,c=Array(a.length);b<a.length;b++)c[b]=a[b];return c}return Array.from(a)},l=function(){function a(b,c,d){f(this,a),this.x=b||0,this.y=c||0,this.z=d||0}return g(a,[{key:"set",value:function(a,b,c){return this.x=a,this.y=b,this.z=c,this}},{key:"copy",value:function(a){return this.x=a.x,this.y=a.y,this.z=a.z,this}},{key:"fromArray",value:function(a,b){return void 0===b&&(b=0),this.x=a[b],this.y=a[b+1],this.z=a[b+2],this}},{key:"toArray",value:function(a,b){return void 0===a&&(a=[]),void 0===b&&(b=0),a[b]=this.x,a[b+1]=this.y,a[b+2]=this.z,a}},{key:"equals",value:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z}},{key:"clone",value:function(){return new this.constructor(this.x,this.y,this.z)}},{key:"add",value:function(a){return this.x+=a.x,this.y+=a.y,this.z+=a.z,this}},{key:"addScalar",value:function(a){return this.x+=a,this.y+=a,this.z+=a,this}},{key:"addVectors",value:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this.z=a.z+b.z,this}},{key:"sub",value:function(a){return this.x-=a.x,this.y-=a.y,this.z-=a.z,this}},{key:"subScalar",value:function(a){return this.x-=a,this.y-=a,this.z-=a,this}},{key:"subVectors",value:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this.z=a.z-b.z,this}},{key:"multiply",value:function(a){return this.x*=a.x,this.y*=a.y,this.z*=a.z,this}},{key:"multiplyScalar",value:function(a){return isFinite(a)?(this.x*=a,this.y*=a,this.z*=a):(this.x=0,this.y=0,this.z=0),this}},{key:"multiplyVectors",value:function(a,b){return this.x=a.x*b.x,this.y=a.y*b.y,this.z=a.z*b.z,this}},{key:"divide",value:function(a){return this.x/=a.x,this.y/=a.y,this.z/=a.z,this}},{key:"divideScalar",value:function(a){return this.multiplyScalar(1/a)}},{key:"divideVectors",value:function(a,b){return this.x=a.x/b.x,this.y=a.y/b.y,this.z=a.z/b.z,this}},{key:"dot",value:function(a){return this.x*a.x+this.y*a.y+this.z*a.z}},{key:"lengthSq",value:function(){return this.x*this.x+this.y*this.y+this.z*this.z}},{key:"length",value:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}},{key:"distanceTo",value:function(a){return Math.sqrt(this.distanceToSquared(a))}},{key:"distanceToSquared",value:function(a){var b=this.x-a.x,c=this.y-a.y,d=this.z-a.z;return b*b+c*c+d*d}},{key:"normalize",value:function(){return this.divideScalar(this.length())}},{key:"min",value:function(a){return this.x=Math.min(this.x,a.x),this.y=Math.min(this.y,a.y),this.z=Math.min(this.z,a.z),this}},{key:"max",value:function(a){return this.x=Math.max(this.x,a.x),this.y=Math.max(this.y,a.y),this.z=Math.max(this.z,a.z),this}},{key:"clamp",value:function(a,b){return this.x=Math.max(a.x,Math.min(b.x,this.x)),this.y=Math.max(a.y,Math.min(b.y,this.y)),this.z=Math.max(a.z,Math.min(b.z,this.z)),this}},{key:"applyMatrix3",value:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[3]*c+e[6]*d,this.y=e[1]*b+e[4]*c+e[7]*d,this.z=e[2]*b+e[5]*c+e[8]*d,this}},{key:"applyMatrix4",value:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[4]*c+e[8]*d+e[12],this.y=e[1]*b+e[5]*c+e[9]*d+e[13],this.z=e[2]*b+e[6]*c+e[10]*d+e[14],this}}]),a}(),m=function(){function a(b,c){f(this,a),this.min=void 0!==b?b:new l,this.max=void 0!==c?c:new l,this.children=null}return g(a,[{key:"getCenter",value:function(){return this.min.clone().add(this.max).multiplyScalar(.5)}},{key:"getDimensions",value:function(){return this.max.clone().sub(this.min)}},{key:"split",value:function(a){var b=this.min,c=this.max,d=this.getCenter(),e=void 0,f=void 0,g=0,h=void 0,i=void 0,j=void 0,k=void 0,m=void 0;for(Array.isArray(a)&&(i=this.getDimensions().multiplyScalar(.5),j=[new l,new l,new l],g=a.length),this.children=[],e=0;e<8;++e){if(h=n[e],m=null,g>0)for(j[1].addVectors(b,j[0].fromArray(h).multiply(i)),j[2].addVectors(d,j[0].fromArray(h).multiply(i)),f=0;f<g;++f)if(k=a[f],null!==k&&j[1].equals(k.min)&&j[2].equals(k.max)){m=k,a[f]=null;break}this.children.push(null!==m?m:new this.constructor(new l(0===h[0]?b.x:d.x,0===h[1]?b.y:d.y,0===h[2]?b.z:d.z),new l(0===h[0]?d.x:c.x,0===h[1]?d.y:c.y,0===h[2]?d.z:c.z)))}}}]),a}(),n=[new Uint8Array([0,0,0]),new Uint8Array([0,0,1]),new Uint8Array([0,1,0]),new Uint8Array([0,1,1]),new Uint8Array([1,0,0]),new Uint8Array([1,0,1]),new Uint8Array([1,1,0]),new Uint8Array([1,1,1])],o=function(){function a(){var b=arguments.length<=0||void 0===arguments[0]?new l:arguments[0],c=arguments.length<=1||void 0===arguments[1]?0:arguments[1];f(this,a),this.min=b,this.size=c,this.children=null}return g(a,[{key:"getCenter",value:function(){return this.min.clone().addScalar(.5*this.size)}},{key:"getDimensions",value:function(){return new l(this.size,this.size,this.size)}},{key:"split",value:function(a){var b=this.min,c=this.getCenter(),d=.5*this.size,e=void 0,f=void 0,g=0,h=void 0,i=void 0,j=void 0,k=void 0;for(Array.isArray(a)&&(i=new l,g=a.length),this.children=[],e=0;e<8;++e){if(h=n[e],k=null,g>0)for(i.fromArray(h).multiplyScalar(d).add(b),f=0;f<g;++f)if(j=a[f],null!==j&&j.size===d&&i.equals(j.min)){k=j,a[f]=null;break}this.children.push(null!==k?k:new this.constructor(new l(0===h[0]?b.x:c.x,0===h[1]?b.y:c.y,0===h[2]?b.z:c.z),d))}}},{key:"max",get:function(){return this.min.clone().addScalar(this.size)}}]),a}(),p=function(){function a(b,c){f(this,a),this.min=void 0!==b?b:new l(1/0,1/0,1/0),this.max=void 0!==c?c:new l(-(1/0),-(1/0),-(1/0))}return g(a,[{key:"set",value:function(a,b){return this.min.copy(a),this.max.copy(b),this}},{key:"copy",value:function(a){return this.min.copy(a.min),this.max.copy(a.max),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"expandByPoint",value:function(a){return this.min.min(a),this.max.max(a),this}},{key:"union",value:function(a){return this.min.min(a.min),this.max.max(a.max),this}},{key:"setFromPoints",value:function(a){var b=void 0,c=void 0;for(b=0,c=a.length;b<c;++b)this.expandByPoint(a[b]);return this}},{key:"setFromCenterAndSize",value:function(a,b){var c=b.clone().multiplyScalar(.5);return this.min.copy(a).sub(c),this.max.copy(a).add(c),this}},{key:"intersectsBox",value:function(a){return!(a.max.x<this.min.x||a.min.x>this.max.x||a.max.y<this.min.y||a.min.y>this.max.y||a.max.z<this.min.z||a.min.z>this.max.z)}}]),a}(),q=new Uint8Array([0,1,2,3,4,5,6,7,0]),r=[new Uint8Array([4,2,1]),new Uint8Array([5,3,8]),new Uint8Array([6,8,3]),new Uint8Array([7,8,8]),new Uint8Array([8,6,5]),new Uint8Array([8,7,8]),new Uint8Array([8,8,7]),new Uint8Array([8,8,8])],s=function(){function a(){f(this,a)}return g(a,null,[{key:"raycast",value:function(a,b,c){var d=a.getDimensions(),f=d.clone().multiplyScalar(.5),g=a.min.clone().sub(a.min),h=a.max.clone().sub(a.min),i=b.ray.direction.clone(),j=b.ray.origin.clone();j.sub(a.getCenter()).add(f);var k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0,r=void 0,s=void 0,t=void 0;q[8]=q[0],i.x<0&&(j.x=d.x-j.x,i.x=-i.x,q[8]|=q[4]),i.y<0&&(j.y=d.y-j.y,i.y=-i.y,q[8]|=q[2]),i.z<0&&(j.z=d.z-j.z,i.z=-i.z,q[8]|=q[1]),k=1/i.x,l=1/i.y,m=1/i.z,n=(g.x-j.x)*k,o=(h.x-j.x)*k,p=(g.y-j.y)*l,r=(h.y-j.y)*l,s=(g.z-j.z)*m,t=(h.z-j.z)*m,Math.max(Math.max(n,p),s)<Math.min(Math.min(o,r),t)&&e(a.root,n,p,s,o,r,t,b,c)}}]),a}(),t=function(){function a(b,c){f(this,a),this.root=void 0!==b&&void 0!==c?new m(b,c):null}return g(a,[{key:"getCenter",value:function(){return this.root.getCenter()}},{key:"getDimensions",value:function(){return this.root.getDimensions()}},{key:"getDepth",value:function(){for(var a=[this.root],b=[],c=0,d=void 0,e=void 0;a.length>0;){if(d=a.pop(),e=d.children,null!==e){var f;(f=b).push.apply(f,k(e))}0===a.length&&(a=b,b=[],a.length>0&&++c)}return c}},{key:"cull",value:function(a){for(var b=[],c=[this.root],d=new p,e=void 0,f=void 0;c.length>0;)e=c.pop(),f=e.children,d.min=e.min,d.max=e.max,a.intersectsBox(d)&&(null!==f?c.push.apply(c,k(f)):b.push(e));return b}},{key:"findOctantsByLevel",value:function(a){for(var b=[],c=[this.root],d=[],e=void 0,f=void 0,g=0;c.length>0;){if(e=c.pop(),f=e.children,g===a)b.push(e);else if(null!==f){var h;(h=d).push.apply(h,k(f))}if(0===c.length&&(c=d,d=[],++g>a))break}return b}},{key:"raycast",value:function(a,b){s.raycast(this,a,b)}},{key:"min",get:function(){return this.root.min}},{key:"max",get:function(){return this.root.max}},{key:"children",get:function(){return this.root.children}}]),a}(),u=function(a){function c(){var a=arguments.length<=0||void 0===arguments[0]?null:arguments[0];f(this,c);var b=j(this,(c.__proto__||Object.getPrototypeOf(c)).call(this));return b.name="OctreeHelper",b.tree=a,b}return i(c,a),g(c,[{key:"update",value:function(){var a=new Map,c=null!==this.tree?this.tree.getDepth():-1,d=[[1,4],[2,5],[3,6],[0,7],[5],[6],[7],[4]],e=void 0,f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0,r=void 0,s=void 0,t=void 0,u=null,v=null,w=0;for(e=0,h=this.children.length;e<h;++e)this.children[e].geometry.dispose(),this.children[e].material.dispose();for(;this.children.length>0;)this.remove(this.children[0]);for(;w<=c;){for(j=this.tree.findOctantsByLevel(w),t=0,a.clear(),e=0,f=0,h=j.length;e<h;++e)for(k=j[e],l=[[k.max.x,k.max.y,k.max.z],[k.min.x,k.max.y,k.max.z],[k.min.x,k.min.y,k.max.z],[k.max.x,k.min.y,k.max.z],[k.max.x,k.max.y,k.min.z],[k.min.x,k.max.y,k.min.z],[k.min.x,k.min.y,k.min.z],[k.max.x,k.min.y,k.min.z]],f=0;f<8;++f)if(m=l[f],n=d[f],p=m.toString(),o=a.get(p),void 0!==o)for(g=0,i=n.length;g<i;++g)p=l[n[g]].toString(),o.connectionKeys.indexOf(p)<0&&(o.connectionKeys.push(p),++t);else{for(o={position:m,connectionKeys:[],index:a.size},g=0,i=n.length;g<i;++g)o.connectionKeys.push(l[n[g]].toString()),++t;a.set(p,o)}if(!(a.size<65536))throw new Error("Could not create geometry for octree depth level "+w+" (vertex count of "+a.size+" exceeds limit of 65536)");u=new Uint16Array(2*t),v=new Float32Array(3*a.size),e=0,f=0;var x=!0,y=!1,z=void 0;try{for(var A,B=a.values()[Symbol.iterator]();!(x=(A=B.next()).done);x=!0)for(o=A.value,m=o.position,v[e++]=m[0],v[e++]=m[1],v[e++]=m[2],n=o.connectionKeys,g=0,i=n.length;g<i;++g)u[f++]=o.index,u[f++]=a.get(n[g]).index}catch(a){y=!0,z=a}finally{try{!x&&B.return&&B.return()}finally{if(y)throw z}}q=new b.BufferGeometry,q.setIndex(new b.BufferAttribute(u,1)),q.addAttribute("position",new b.BufferAttribute(v,3)),s=new b.LineBasicMaterial({color:new b.Color(16777215*Math.random())}),r=new b.LineSegments(q,s),this.add(r),++w}}}]),c}(b.Object3D),v=function(a){function b(a,c){f(this,b);var d=j(this,(b.__proto__||Object.getPrototypeOf(b)).call(this,a,c));return d.points=null,d.data=null,d}return i(b,a),g(b,[{key:"countPoints",value:function(){for(var a=[this],b=0,c=void 0,d=void 0;a.length>0;)c=a.pop(),d=c.children,null!==d?a.push.apply(a,k(d)):null!==c.points&&(b+=c.points.length);return b}},{key:"distanceToSquared",value:function(a){var b=a.clone().clamp(this.min,this.max);return b.sub(a).lengthSq()}},{key:"distanceToCenterSquared",value:function(a){var b=this.getCenter(),c=a.x-b.x,d=a.y-b.x,e=a.z-b.z;return c*c+d*d+e*e}},{key:"contains",value:function(a,b){var c=this.min,d=this.max;return a.x>=c.x-b&&a.y>=c.y-b&&a.z>=c.z-b&&a.x<=d.x+b&&a.y<=d.y+b&&a.z<=d.z+b}},{key:"redistribute",value:function(a){var b=this.children,c=this.points,d=void 0,e=void 0,f=void 0,g=void 0,h=void 0;if(null!==b)for(;c.length>0;)for(g=c.pop(),h=this.data.pop(),d=0,e=b.length;d<e;++d)if(f=b[d],f.contains(g,a)){null===f.points&&(f.points=[],f.data=[]),f.points.push(g),f.data.push(h);break}this.points=null,this.data=null}},{key:"merge",value:function(){var a=this.children,b=void 0,c=void 0,d=void 0;if(null!==a){for(this.points=[],this.data=[],b=0,c=a.length;b<c;++b)if(d=a[b],null!==d.points){var e,f;(e=this.points).push.apply(e,k(d.points)),(f=this.data).push.apply(f,k(d.data))}this.children=null}}},{key:"findNearestPoint",value:function(a,b,c){var d=this.points,e=this.children,f=null,g=b,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0;if(null!==e)for(l=e.map(function(b){return{octant:b,distance:b.distanceToCenterSquared(a)}}).sort(function(a,b){return a.distance-b.distance}),h=0,i=l.length;h<i;++h)m=l[h].octant,m.contains(a,g)&&(n=m.findNearestPoint(a,g,c),null!==n&&(k=n.point.distanceToSquared(a),(!c||k>0)&&k<g&&(g=k,f=n)));else if(null!==d)for(h=0,i=d.length;h<i;++h)j=d[h],k=a.distanceToSquared(j),(!c||k>0)&&k<g&&(g=k,f={point:j.clone(),data:this.data[h]});return f}},{key:"findPoints",value:function(a,b,c,d){var e=this.points,f=this.children,g=b*b,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0;if(null!==f)for(h=0,i=f.length;h<i;++h)l=f[h],l.contains(a,b)&&l.findPoints(a,b,c,d);else if(null!==e)for(h=0,i=e.length;h<i;++h)j=e[h],k=a.distanceToSquared(j),(!c||k>0)&&k<=g&&d.push({point:j.clone(),data:this.data[h]})}}]),b}(m),w=function(a){function b(a,c){var d=arguments.length<=2||void 0===arguments[2]?0:arguments[2],e=arguments.length<=3||void 0===arguments[3]?8:arguments[3],g=arguments.length<=4||void 0===arguments[4]?8:arguments[4];f(this,b);var h=j(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));return h.root=new v(a,c),h.bias=Math.max(0,d),h.biasSquared=h.bias*h.bias,h.maxPoints=Math.max(1,Math.round(e)),h.maxDepth=Math.max(0,Math.round(g)),h}return i(b,a),g(b,[{key:"countPoints",value:function(){return this.root.countPoints()}},{key:"add",value:function(a,b){a=a.clone();var c=[this.root],d=0,e=void 0,f=void 0,g=void 0,h=void 0,i=!1;if(void 0!==b&&null!==b)for(;c.length>0;)if(e=c.pop(),f=e.children,e.contains(a,this.bias))if(c=[],null!==f){var j;(j=c).push.apply(j,k(f)),++d}else{if(null===e.points)e.points=[],e.data=[];else for(g=0,h=e.points.length;!i&&g<h;++g)i=e.points[g].equals(a);if(i)e.data[g-1]=b;else if(e.points.length<this.maxPoints||d===this.maxDepth)e.points.push(a),e.data.push(b);else{var l;e.split(),e.redistribute(this.bias),(l=c).push.apply(l,k(e.children)),++d}}}},{key:"remove",value:function(a){for(var b=[this.root],c=this.root,d=void 0,e=void 0,f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,l=void 0;b.length>0;)if(d=b.pop(),e=d.children,d.contains(a,this.bias))if(b=[],null!==e){var m;(m=b).push.apply(m,k(e)),c=d}else if(null!==d.points)for(h=d.points,i=d.data,f=0,g=h.length;f<g;++f)if(j=h[f],j.equals(a)){l=g-1,f<l&&(h[f]=h[l],i[f]=i[l]),h.pop(),i.pop(),c.countPoints()<=this.maxPoints&&c.merge();break}}},{key:"fetch",value:function(a){for(var b=[this.root],c=null,d=void 0,e=void 0,f=void 0,g=void 0,h=void 0;b.length>0;)if(d=b.pop(),e=d.children,d.contains(a,this.bias))if(b=[],null!==e){var i;(i=b).push.apply(i,k(e))}else for(f=0,g=d.points.length;f<g;++f)if(h=d.points[f],a.distanceToSquared(h)<=this.biasSquared){c=d.data[f];break}return c}},{key:"findNearestPoint",value:function(a){var b=arguments.length<=1||void 0===arguments[1]?1/0:arguments[1],c=!(arguments.length<=2||void 0===arguments[2])&&arguments[2];return this.root.findNearestPoint(a,b,c)}},{key:"findPoints",value:function(a,b){var c=!(arguments.length<=2||void 0===arguments[2])&&arguments[2],d=[];return this.root.findPoints(a,b,c,d),d}},{key:"raycast",value:function(a,c){var d=[];h(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"raycast",this).call(this,a,d),d.length>0&&this.testPoints(d,a,c)}},{key:"testPoints",value:function(a,b,c){var d=b.params.Points.threshold,e=d*d,f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0;for(j=0,l=a.length;j<l;++j)if(n=a[j],o=n.points,null!==o)for(k=0,m=o.length;k<m;++k)p=o[k],i=b.ray.distanceSqToPoint(p),i<e&&(f=b.ray.closestPointToPoint(p),g=b.ray.origin.distanceTo(f),g>=b.near&&g<=b.far&&(h=Math.sqrt(i),c.push({distance:g,distanceToRay:h,point:f.clone(),object:n.data[k]})))}}]),b}(t);a.CubicOctant=o,a.Octant=m,a.Octree=t,a.OctreeHelper=u,a.PATTERN=n,a.Raycasting=s,a.PointOctant=v,a.PointOctree=w,Object.defineProperty(a,"__esModule",{value:!0})});
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?b(exports,require("three")):"function"==typeof define&&define.amd?define(["exports","three"],b):b(a.OCTREE=a.OCTREE||{},a.THREE)}(this,function(a,b){"use strict";function c(a,b,c,d,e,f){var g=0;return a>b&&a>c?(e<a&&(g|=2),f<a&&(g|=1)):b>c?(d<b&&(g|=4),f<b&&(g|=1)):(d<c&&(g|=4),e<c&&(g|=2)),g}function d(a,b,c,d){var e=void 0,f=0;return b<c?(e=b,f=0):(e=c,f=1),d<e&&(f=2),r[a][f]}function e(a,b,f,g,h,i,j,k,l){var m=a.children,n=void 0,o=void 0,p=void 0,r=void 0;if(h>=0&&i>=0&&j>=0)if(null===m)l.push(a);else{o=.5*(b+h),p=.5*(f+i),r=.5*(g+j),n=c(b,f,g,o,p,r);do switch(n){case 0:e(m[q[8]],b,f,g,o,p,r,k,l),n=d(n,o,p,r);break;case 1:e(m[q[8]^q[1]],b,f,r,o,p,j,k,l),n=d(n,o,p,j);break;case 2:e(m[q[8]^q[2]],b,p,g,o,i,r,k,l),n=d(n,o,i,r);break;case 3:e(m[q[8]^q[3]],b,p,r,o,i,j,k,l),n=d(n,o,i,j);break;case 4:e(m[q[8]^q[4]],o,f,g,h,p,r,k,l),n=d(n,h,p,r);break;case 5:e(m[q[8]^q[5]],o,f,r,h,p,j,k,l),n=d(n,h,p,j);break;case 6:e(m[q[8]^q[6]],o,p,g,h,i,r,k,l),n=d(n,h,i,r);break;case 7:e(m[q[8]^q[7]],o,p,r,h,i,j,k,l),n=8}while(n<8)}}var f=(function(){function a(a){this.value=a}function b(b){function c(a,b){return new Promise(function(c,e){var h={key:a,arg:b,resolve:c,reject:e,next:null};g?g=g.next=h:(f=g=h,d(a,b))})}function d(c,f){try{var g=b[c](f),h=g.value;h instanceof a?Promise.resolve(h.value).then(function(a){d("next",a)},function(a){d("throw",a)}):e(g.done?"return":"normal",g.value)}catch(a){e("throw",a)}}function e(a,b){switch(a){case"return":f.resolve({value:b,done:!0});break;case"throw":f.reject(b);break;default:f.resolve({value:b,done:!1})}f=f.next,f?d(f.key,f.arg):g=null}var f,g;this._invoke=c,"function"!=typeof b.return&&(this.return=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(b.prototype[Symbol.asyncIterator]=function(){return this}),b.prototype.next=function(a){return this._invoke("next",a)},b.prototype.throw=function(a){return this._invoke("throw",a)},b.prototype.return=function(a){return this._invoke("return",a)},{wrap:function(a){return function(){return new b(a.apply(this,arguments))}},await:function(b){return new a(b)}}}(),function(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}),g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),h=function a(b,c,d){null===b&&(b=Function.prototype);var e=Object.getOwnPropertyDescriptor(b,c);if(void 0===e){var f=Object.getPrototypeOf(b);return null===f?void 0:a(f,c,d)}if("value"in e)return e.value;var g=e.get;if(void 0!==g)return g.call(d)},i=function(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)},j=function(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!=typeof b&&"function"!=typeof b?a:b},k=function(a){if(Array.isArray(a)){for(var b=0,c=Array(a.length);b<a.length;b++)c[b]=a[b];return c}return Array.from(a)},l=function(){function a(b,c,d){f(this,a),this.x=b||0,this.y=c||0,this.z=d||0}return g(a,[{key:"set",value:function(a,b,c){return this.x=a,this.y=b,this.z=c,this}},{key:"copy",value:function(a){return this.x=a.x,this.y=a.y,this.z=a.z,this}},{key:"fromArray",value:function(a,b){return void 0===b&&(b=0),this.x=a[b],this.y=a[b+1],this.z=a[b+2],this}},{key:"toArray",value:function(a,b){return void 0===a&&(a=[]),void 0===b&&(b=0),a[b]=this.x,a[b+1]=this.y,a[b+2]=this.z,a}},{key:"equals",value:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z}},{key:"clone",value:function(){return new this.constructor(this.x,this.y,this.z)}},{key:"add",value:function(a){return this.x+=a.x,this.y+=a.y,this.z+=a.z,this}},{key:"addScalar",value:function(a){return this.x+=a,this.y+=a,this.z+=a,this}},{key:"addVectors",value:function(a,b){return this.x=a.x+b.x,this.y=a.y+b.y,this.z=a.z+b.z,this}},{key:"sub",value:function(a){return this.x-=a.x,this.y-=a.y,this.z-=a.z,this}},{key:"subScalar",value:function(a){return this.x-=a,this.y-=a,this.z-=a,this}},{key:"subVectors",value:function(a,b){return this.x=a.x-b.x,this.y=a.y-b.y,this.z=a.z-b.z,this}},{key:"multiply",value:function(a){return this.x*=a.x,this.y*=a.y,this.z*=a.z,this}},{key:"multiplyScalar",value:function(a){return isFinite(a)?(this.x*=a,this.y*=a,this.z*=a):(this.x=0,this.y=0,this.z=0),this}},{key:"multiplyVectors",value:function(a,b){return this.x=a.x*b.x,this.y=a.y*b.y,this.z=a.z*b.z,this}},{key:"divide",value:function(a){return this.x/=a.x,this.y/=a.y,this.z/=a.z,this}},{key:"divideScalar",value:function(a){return this.multiplyScalar(1/a)}},{key:"divideVectors",value:function(a,b){return this.x=a.x/b.x,this.y=a.y/b.y,this.z=a.z/b.z,this}},{key:"dot",value:function(a){return this.x*a.x+this.y*a.y+this.z*a.z}},{key:"lengthSq",value:function(){return this.x*this.x+this.y*this.y+this.z*this.z}},{key:"length",value:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}},{key:"distanceTo",value:function(a){return Math.sqrt(this.distanceToSquared(a))}},{key:"distanceToSquared",value:function(a){var b=this.x-a.x,c=this.y-a.y,d=this.z-a.z;return b*b+c*c+d*d}},{key:"normalize",value:function(){return this.divideScalar(this.length())}},{key:"min",value:function(a){return this.x=Math.min(this.x,a.x),this.y=Math.min(this.y,a.y),this.z=Math.min(this.z,a.z),this}},{key:"max",value:function(a){return this.x=Math.max(this.x,a.x),this.y=Math.max(this.y,a.y),this.z=Math.max(this.z,a.z),this}},{key:"clamp",value:function(a,b){return this.x=Math.max(a.x,Math.min(b.x,this.x)),this.y=Math.max(a.y,Math.min(b.y,this.y)),this.z=Math.max(a.z,Math.min(b.z,this.z)),this}},{key:"applyMatrix3",value:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[3]*c+e[6]*d,this.y=e[1]*b+e[4]*c+e[7]*d,this.z=e[2]*b+e[5]*c+e[8]*d,this}},{key:"applyMatrix4",value:function(a){var b=this.x,c=this.y,d=this.z,e=a.elements;return this.x=e[0]*b+e[4]*c+e[8]*d+e[12],this.y=e[1]*b+e[5]*c+e[9]*d+e[13],this.z=e[2]*b+e[6]*c+e[10]*d+e[14],this}}]),a}(),m=function(){function a(b,c){f(this,a),this.min=void 0!==b?b:new l,this.max=void 0!==c?c:new l,this.children=null}return g(a,[{key:"getCenter",value:function(){return this.min.clone().add(this.max).multiplyScalar(.5)}},{key:"getDimensions",value:function(){return this.max.clone().sub(this.min)}},{key:"split",value:function(a){var b=this.min,c=this.max,d=this.getCenter(),e=void 0,f=void 0,g=0,h=void 0,i=void 0,j=void 0,k=void 0,m=void 0;for(Array.isArray(a)&&(i=this.getDimensions().multiplyScalar(.5),j=[new l,new l,new l],g=a.length),this.children=[],e=0;e<8;++e){if(h=n[e],m=null,g>0)for(j[1].addVectors(b,j[0].fromArray(h).multiply(i)),j[2].addVectors(d,j[0].fromArray(h).multiply(i)),f=0;f<g;++f)if(k=a[f],null!==k&&j[1].equals(k.min)&&j[2].equals(k.max)){m=k,a[f]=null;break}this.children.push(null!==m?m:new this.constructor(new l(0===h[0]?b.x:d.x,0===h[1]?b.y:d.y,0===h[2]?b.z:d.z),new l(0===h[0]?d.x:c.x,0===h[1]?d.y:c.y,0===h[2]?d.z:c.z)))}}}]),a}(),n=[new Uint8Array([0,0,0]),new Uint8Array([0,0,1]),new Uint8Array([0,1,0]),new Uint8Array([0,1,1]),new Uint8Array([1,0,0]),new Uint8Array([1,0,1]),new Uint8Array([1,1,0]),new Uint8Array([1,1,1])],o=function(){function a(){var b=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new l,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;f(this,a),this.min=b,this.size=c,this.children=null}return g(a,[{key:"getCenter",value:function(){return this.min.clone().addScalar(.5*this.size)}},{key:"getDimensions",value:function(){return new l(this.size,this.size,this.size)}},{key:"split",value:function(a){var b=this.min,c=this.getCenter(),d=.5*this.size,e=void 0,f=void 0,g=0,h=void 0,i=void 0,j=void 0,k=void 0;for(Array.isArray(a)&&(i=new l,g=a.length),this.children=[],e=0;e<8;++e){if(h=n[e],k=null,g>0)for(i.fromArray(h).multiplyScalar(d).add(b),f=0;f<g;++f)if(j=a[f],null!==j&&j.size===d&&i.equals(j.min)){k=j,a[f]=null;break}this.children.push(null!==k?k:new this.constructor(new l(0===h[0]?b.x:c.x,0===h[1]?b.y:c.y,0===h[2]?b.z:c.z),d))}}},{key:"max",get:function(){return this.min.clone().addScalar(this.size)}}]),a}(),p=function(){function a(b,c){f(this,a),this.min=void 0!==b?b:new l(1/0,1/0,1/0),this.max=void 0!==c?c:new l(-(1/0),-(1/0),-(1/0))}return g(a,[{key:"set",value:function(a,b){return this.min.copy(a),this.max.copy(b),this}},{key:"copy",value:function(a){return this.min.copy(a.min),this.max.copy(a.max),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"expandByPoint",value:function(a){return this.min.min(a),this.max.max(a),this}},{key:"union",value:function(a){return this.min.min(a.min),this.max.max(a.max),this}},{key:"setFromPoints",value:function(a){var b=void 0,c=void 0;for(b=0,c=a.length;b<c;++b)this.expandByPoint(a[b]);return this}},{key:"setFromCenterAndSize",value:function(a,b){var c=b.clone().multiplyScalar(.5);return this.min.copy(a).sub(c),this.max.copy(a).add(c),this}},{key:"intersectsBox",value:function(a){return!(a.max.x<this.min.x||a.min.x>this.max.x||a.max.y<this.min.y||a.min.y>this.max.y||a.max.z<this.min.z||a.min.z>this.max.z)}}]),a}(),q=new Uint8Array([0,1,2,3,4,5,6,7,0]),r=[new Uint8Array([4,2,1]),new Uint8Array([5,3,8]),new Uint8Array([6,8,3]),new Uint8Array([7,8,8]),new Uint8Array([8,6,5]),new Uint8Array([8,7,8]),new Uint8Array([8,8,7]),new Uint8Array([8,8,8])],s=function(){function a(){f(this,a)}return g(a,null,[{key:"raycast",value:function(a,b,c){var d=a.getDimensions(),f=d.clone().multiplyScalar(.5),g=a.min.clone().sub(a.min),h=a.max.clone().sub(a.min),i=b.ray.direction.clone(),j=b.ray.origin.clone();j.sub(a.getCenter()).add(f);var k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0,r=void 0,s=void 0,t=void 0;q[8]=q[0],i.x<0&&(j.x=d.x-j.x,i.x=-i.x,q[8]|=q[4]),i.y<0&&(j.y=d.y-j.y,i.y=-i.y,q[8]|=q[2]),i.z<0&&(j.z=d.z-j.z,i.z=-i.z,q[8]|=q[1]),k=1/i.x,l=1/i.y,m=1/i.z,n=(g.x-j.x)*k,o=(h.x-j.x)*k,p=(g.y-j.y)*l,r=(h.y-j.y)*l,s=(g.z-j.z)*m,t=(h.z-j.z)*m,Math.max(Math.max(n,p),s)<Math.min(Math.min(o,r),t)&&e(a.root,n,p,s,o,r,t,b,c)}}]),a}(),t=function(){function a(b,c){f(this,a),this.root=void 0!==b&&void 0!==c?new m(b,c):null}return g(a,[{key:"getCenter",value:function(){return this.root.getCenter()}},{key:"getDimensions",value:function(){return this.root.getDimensions()}},{key:"getDepth",value:function(){for(var a=[this.root],b=[],c=0,d=void 0,e=void 0;a.length>0;){if(d=a.pop(),e=d.children,null!==e){var f;(f=b).push.apply(f,k(e))}0===a.length&&(a=b,b=[],a.length>0&&++c)}return c}},{key:"cull",value:function(a){for(var b=[],c=[this.root],d=new p,e=void 0,f=void 0;c.length>0;)e=c.pop(),f=e.children,d.min=e.min,d.max=e.max,a.intersectsBox(d)&&(null!==f?c.push.apply(c,k(f)):b.push(e));return b}},{key:"findOctantsByLevel",value:function(a){for(var b=[],c=[this.root],d=[],e=void 0,f=void 0,g=0;c.length>0;){if(e=c.pop(),f=e.children,g===a)b.push(e);else if(null!==f){var h;(h=d).push.apply(h,k(f))}if(0===c.length&&(c=d,d=[],++g>a))break}return b}},{key:"raycast",value:function(a,b){s.raycast(this,a,b)}},{key:"min",get:function(){return this.root.min}},{key:"max",get:function(){return this.root.max}},{key:"children",get:function(){return this.root.children}}]),a}(),u=function(a){function c(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;f(this,c);var b=j(this,(c.__proto__||Object.getPrototypeOf(c)).call(this));return b.name="OctreeHelper",b.tree=a,b}return i(c,a),g(c,[{key:"update",value:function(){var a=new Map,c=null!==this.tree?this.tree.getDepth():-1,d=[[1,4],[2,5],[3,6],[0,7],[5],[6],[7],[4]],e=void 0,f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0,r=void 0,s=void 0,t=void 0,u=null,v=null,w=0;for(this.dispose();w<=c;){for(j=this.tree.findOctantsByLevel(w),t=0,a.clear(),e=0,f=0,h=j.length;e<h;++e)for(k=j[e],l=[[k.max.x,k.max.y,k.max.z],[k.min.x,k.max.y,k.max.z],[k.min.x,k.min.y,k.max.z],[k.max.x,k.min.y,k.max.z],[k.max.x,k.max.y,k.min.z],[k.min.x,k.max.y,k.min.z],[k.min.x,k.min.y,k.min.z],[k.max.x,k.min.y,k.min.z]],f=0;f<8;++f)if(m=l[f],n=d[f],p=m.toString(),o=a.get(p),void 0!==o)for(g=0,i=n.length;g<i;++g)p=l[n[g]].toString(),o.connectionKeys.indexOf(p)<0&&(o.connectionKeys.push(p),++t);else{for(o={position:m,connectionKeys:[],index:a.size},g=0,i=n.length;g<i;++g)o.connectionKeys.push(l[n[g]].toString()),++t;a.set(p,o)}if(!(a.size<65536))throw new Error("Could not create geometry for octree depth level "+w+" (vertex count of "+a.size+" exceeds limit of 65536)");u=new Uint16Array(2*t),v=new Float32Array(3*a.size),e=0,f=0;var x=!0,y=!1,z=void 0;try{for(var A,B=a.values()[Symbol.iterator]();!(x=(A=B.next()).done);x=!0)for(o=A.value,m=o.position,v[e++]=m[0],v[e++]=m[1],v[e++]=m[2],n=o.connectionKeys,g=0,i=n.length;g<i;++g)u[f++]=o.index,u[f++]=a.get(n[g]).index}catch(a){y=!0,z=a}finally{try{!x&&B.return&&B.return()}finally{if(y)throw z}}q=new b.BufferGeometry,q.setIndex(new b.BufferAttribute(u,1)),q.addAttribute("position",new b.BufferAttribute(v,3)),s=new b.LineBasicMaterial({color:16777215*Math.random()}),r=new b.LineSegments(q,s),this.add(r),++w}}},{key:"dispose",value:function(){var a=this.children,b=void 0,c=void 0;for(b=0,c=a.length;b<c;++b)a[b].geometry.dispose(),a[b].material.dispose();for(;a.length>0;)a.remove(a[0])}}]),c}(b.Object3D),v=function(a){function b(a,c){f(this,b);var d=j(this,(b.__proto__||Object.getPrototypeOf(b)).call(this,a,c));return d.points=null,d.data=null,d}return i(b,a),g(b,[{key:"countPoints",value:function(){for(var a=[this],b=0,c=void 0,d=void 0;a.length>0;)c=a.pop(),d=c.children,null!==d?a.push.apply(a,k(d)):null!==c.points&&(b+=c.points.length);return b}},{key:"distanceToSquared",value:function(a){var b=a.clone().clamp(this.min,this.max);return b.sub(a).lengthSq()}},{key:"distanceToCenterSquared",value:function(a){var b=this.getCenter(),c=a.x-b.x,d=a.y-b.x,e=a.z-b.z;return c*c+d*d+e*e}},{key:"contains",value:function(a,b){var c=this.min,d=this.max;return a.x>=c.x-b&&a.y>=c.y-b&&a.z>=c.z-b&&a.x<=d.x+b&&a.y<=d.y+b&&a.z<=d.z+b}},{key:"redistribute",value:function(a){var b=this.children,c=this.points,d=void 0,e=void 0,f=void 0,g=void 0,h=void 0;if(null!==b)for(;c.length>0;)for(g=c.pop(),h=this.data.pop(),d=0,e=b.length;d<e;++d)if(f=b[d],f.contains(g,a)){null===f.points&&(f.points=[],f.data=[]),f.points.push(g),f.data.push(h);break}this.points=null,this.data=null}},{key:"merge",value:function(){var a=this.children,b=void 0,c=void 0,d=void 0;if(null!==a){for(this.points=[],this.data=[],b=0,c=a.length;b<c;++b)if(d=a[b],null!==d.points){var e,f;(e=this.points).push.apply(e,k(d.points)),(f=this.data).push.apply(f,k(d.data))}this.children=null}}},{key:"findNearestPoint",value:function(a,b,c){var d=this.points,e=this.children,f=null,g=b,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0;if(null!==e)for(l=e.map(function(b){return{octant:b,distance:b.distanceToCenterSquared(a)}}).sort(function(a,b){return a.distance-b.distance}),h=0,i=l.length;h<i;++h)m=l[h].octant,m.contains(a,g)&&(n=m.findNearestPoint(a,g,c),null!==n&&(k=n.point.distanceToSquared(a),(!c||k>0)&&k<g&&(g=k,f=n)));else if(null!==d)for(h=0,i=d.length;h<i;++h)j=d[h],k=a.distanceToSquared(j),(!c||k>0)&&k<g&&(g=k,f={point:j.clone(),data:this.data[h]});return f}},{key:"findPoints",value:function(a,b,c,d){var e=this.points,f=this.children,g=b*b,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0;if(null!==f)for(h=0,i=f.length;h<i;++h)l=f[h],l.contains(a,b)&&l.findPoints(a,b,c,d);else if(null!==e)for(h=0,i=e.length;h<i;++h)j=e[h],k=a.distanceToSquared(j),(!c||k>0)&&k<=g&&d.push({point:j.clone(),data:this.data[h]})}}]),b}(m),w=function(a){function b(a,c){var d=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,e=arguments.length>3&&void 0!==arguments[3]?arguments[3]:8,g=arguments.length>4&&void 0!==arguments[4]?arguments[4]:8;f(this,b);var h=j(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));return h.root=new v(a,c),h.bias=Math.max(0,d),h.biasSquared=h.bias*h.bias,h.maxPoints=Math.max(1,Math.round(e)),h.maxDepth=Math.max(0,Math.round(g)),h}return i(b,a),g(b,[{key:"countPoints",value:function(){return this.root.countPoints()}},{key:"add",value:function(a,b){a=a.clone();var c=[this.root],d=0,e=void 0,f=void 0,g=void 0,h=void 0,i=!1;if(void 0!==b&&null!==b)for(;c.length>0;)if(e=c.pop(),f=e.children,e.contains(a,this.bias))if(c=[],null!==f){var j;(j=c).push.apply(j,k(f)),++d}else{if(null===e.points)e.points=[],e.data=[];else for(g=0,h=e.points.length;!i&&g<h;++g)i=e.points[g].equals(a);if(i)e.data[g-1]=b;else if(e.points.length<this.maxPoints||d===this.maxDepth)e.points.push(a),e.data.push(b);else{var l;e.split(),e.redistribute(this.bias),(l=c).push.apply(l,k(e.children)),++d}}}},{key:"remove",value:function(a){for(var b=[this.root],c=this.root,d=void 0,e=void 0,f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,l=void 0;b.length>0;)if(d=b.pop(),e=d.children,d.contains(a,this.bias))if(b=[],null!==e){var m;(m=b).push.apply(m,k(e)),c=d}else if(null!==d.points)for(h=d.points,i=d.data,f=0,g=h.length;f<g;++f)if(j=h[f],j.equals(a)){l=g-1,f<l&&(h[f]=h[l],i[f]=i[l]),h.pop(),i.pop(),c.countPoints()<=this.maxPoints&&c.merge();break}}},{key:"fetch",value:function(a){for(var b=[this.root],c=null,d=void 0,e=void 0,f=void 0,g=void 0,h=void 0;b.length>0;)if(d=b.pop(),e=d.children,d.contains(a,this.bias))if(b=[],null!==e){var i;(i=b).push.apply(i,k(e))}else for(f=0,g=d.points.length;f<g;++f)if(h=d.points[f],a.distanceToSquared(h)<=this.biasSquared){c=d.data[f];break}return c}},{key:"findNearestPoint",value:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1/0,c=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this.root.findNearestPoint(a,b,c)}},{key:"findPoints",value:function(a,b){var c=arguments.length>2&&void 0!==arguments[2]&&arguments[2],d=[];return this.root.findPoints(a,b,c,d),d}},{key:"raycast",value:function(a,c){var d=[];h(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"raycast",this).call(this,a,d),d.length>0&&this.testPoints(d,a,c)}},{key:"testPoints",value:function(a,b,c){var d=b.params.Points.threshold,e=d*d,f=void 0,g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0;for(j=0,l=a.length;j<l;++j)if(n=a[j],o=n.points,null!==o)for(k=0,m=o.length;k<m;++k)p=o[k],i=b.ray.distanceSqToPoint(p),i<e&&(f=b.ray.closestPointToPoint(p),g=b.ray.origin.distanceTo(f),g>=b.near&&g<=b.far&&(h=Math.sqrt(i),c.push({distance:g,distanceToRay:h,point:f.clone(),object:n.data[k]})))}}]),b}(t);a.CubicOctant=o,a.Octant=m,a.Octree=t,a.OctreeHelper=u,a.PATTERN=n,a.Raycasting=s,a.PointOctant=v,a.PointOctree=w,Object.defineProperty(a,"__esModule",{value:!0})});
{
"name": "sparse-octree",
"version": "2.4.1",
"version": "2.4.2",
"description": "A sparse octree data structure.",

@@ -5,0 +5,0 @@ "homepage": "https://github.com/vanruesc/sparse-octree",

@@ -21,3 +21,3 @@ # Sparse Octree

##### Basics
##### Custom Octrees

@@ -24,0 +24,0 @@ ```javascript

@@ -1,2 +0,8 @@

import THREE from "three";
import {
BufferAttribute,
BufferGeometry,
LineSegments,
LineBasicMaterial,
Object3D
} from "three";

@@ -15,3 +21,3 @@ /**

export class OctreeHelper extends THREE.Object3D {
export class OctreeHelper extends Object3D {

@@ -73,15 +79,4 @@ constructor(tree = null) {

// Remove existing geometry.
for(i = 0, il = this.children.length; i < il; ++i) {
this.dispose();
this.children[i].geometry.dispose();
this.children[i].material.dispose();
}
while(this.children.length > 0) {
this.remove(this.children[0]);
}
while(level <= depth) {

@@ -187,11 +182,11 @@

geometry = new THREE.BufferGeometry();
geometry.setIndex(new THREE.BufferAttribute(indices, 1));
geometry.addAttribute("position", new THREE.BufferAttribute(positions, 3));
geometry = new BufferGeometry();
geometry.setIndex(new BufferAttribute(indices, 1));
geometry.addAttribute("position", new BufferAttribute(positions, 3));
material = new THREE.LineBasicMaterial({
color: new THREE.Color(0xffffff * Math.random())
material = new LineBasicMaterial({
color: 0xffffff * Math.random()
});
lineSegments = new THREE.LineSegments(geometry, material);
lineSegments = new LineSegments(geometry, material);

@@ -215,2 +210,29 @@ this.add(lineSegments);

/**
* Destroys this helper.
*
* @method dispose
*/
dispose() {
const children = this.children;
let i, l;
for(i = 0, l = children.length; i < l; ++i) {
children[i].geometry.dispose();
children[i].material.dispose();
}
while(children.length > 0) {
children.remove(children[0]);
}
}
}

Sorry, the diff of this file is too big to display