phy-engine
Version:
JavaScript 3D Physics for three.js
1 lines • 662 kB
JavaScript
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i((t="undefined"!=typeof globalThis?globalThis:t||self).OIMO={})}(this,(function(t){"use strict";let s=performance||Date;var a=a||{};a.collision||(a.collision={}),a.collision.broadphase||(a.collision.broadphase={}),a.collision.broadphase.BroadPhase=class{constructor(t){this._type=t,this._numProxies=0,this._proxyList=null,this._proxyListLast=null,this._proxyPairList=null,this._incremental=!1,this._testCount=0,this._proxyPairPool=null,this._idCount=0,this._convexSweep=new a.collision.broadphase._BroadPhase.ConvexSweepGeometry,this._aabb=new a.collision.broadphase._BroadPhase.AabbGeometry,this.identity=new a.common.Transform,this.zero=new a.common.Vec3,this.rayCastHit=new a.collision.geometry.RayCastHit}createProxy(t,i){return null}destroyProxy(t){}moveProxy(t,i,s){}isOverlapping(t,i){return t._aabbMinX<i._aabbMaxX&&t._aabbMaxX>i._aabbMinX&&t._aabbMinY<i._aabbMaxY&&t._aabbMaxY>i._aabbMinY&&t._aabbMinZ<i._aabbMaxZ&&t._aabbMaxZ>i._aabbMinZ}collectPairs(){}getProxyPairList(){return this._proxyPairList}isIncremental(){return this._incremental}getTestCount(){return this._testCount}rayCast(t,i,s){}convexCast(t,i,s,a){}aabbTest(t,i){}},a.collision.geometry||(a.collision.geometry={}),a.collision.geometry.Geometry=class{constructor(t){this._type=t,this._volume=0}_updateMass(){}_computeAabb(t,i){}_rayCastLocal(t,i,s,a,o,n,e){return!1}getType(){return this._type}getVolume(){return this._volume}rayCast(t,i,s,a){let o,n,e,r,_,l,h,c,m,b,p,x;if(o=t.x,n=t.y,e=t.z,r=i.x,_=i.y,l=i.z,o-=s._positionX,n-=s._positionY,e-=s._positionZ,r-=s._positionX,_-=s._positionY,l-=s._positionZ,h=s._rotation00*o+s._rotation10*n+s._rotation20*e,c=s._rotation01*o+s._rotation11*n+s._rotation21*e,m=s._rotation02*o+s._rotation12*n+s._rotation22*e,o=h,n=c,e=m,b=s._rotation00*r+s._rotation10*_+s._rotation20*l,p=s._rotation01*r+s._rotation11*_+s._rotation21*l,x=s._rotation02*r+s._rotation12*_+s._rotation22*l,r=b,_=p,l=x,this._rayCastLocal(o,n,e,r,_,l,a)){let t,i,o,n,e,r,_=a.position;t=_.x,i=_.y,o=_.z;let l,h,c,m,b,p,x=a.normal;n=x.x,e=x.y,r=x.z,l=s._rotation00*t+s._rotation01*i+s._rotation02*o,h=s._rotation10*t+s._rotation11*i+s._rotation12*o,c=s._rotation20*t+s._rotation21*i+s._rotation22*o,t=l,i=h,o=c,m=s._rotation00*n+s._rotation01*e+s._rotation02*r,b=s._rotation10*n+s._rotation11*e+s._rotation12*r,p=s._rotation20*n+s._rotation21*e+s._rotation22*r,n=m,e=b,r=p,t+=s._positionX,i+=s._positionY,o+=s._positionZ;let f=a.position;f.x=t,f.y=i,f.z=o;let u=a.normal;return u.x=n,u.y=e,u.z=r,!0}return!1}},a.collision.geometry.ConvexGeometry=class extends a.collision.geometry.Geometry{constructor(t){super(t),this._gjkMargin=a.common.Setting.defaultGJKMargin,this._useGjkRayCast=!1}getGjkMergin(){return this._gjkMargin}setGjkMergin(t){t<0&&(t=0),this._gjkMargin=t}computeLocalSupportingVertex(t,i){}rayCast(t,i,s,o){return this._useGjkRayCast?a.collision.narrowphase.detector.gjkepa.GjkEpa.instance.rayCast(this,s,t,i,o):super.rayCast(t,i,s,o)}},a.collision.broadphase._BroadPhase||(a.collision.broadphase._BroadPhase={}),a.collision.broadphase._BroadPhase.ConvexSweepGeometry=class extends a.collision.geometry.ConvexGeometry{constructor(){super(-1)}init(t,i,s){let o,n,e,r,_,l,h,c,m;this.c=t,o=s.x,n=s.y,e=s.z,h=i._rotation00*o+i._rotation10*n+i._rotation20*e,c=i._rotation01*o+i._rotation11*n+i._rotation21*e,m=i._rotation02*o+i._rotation12*n+i._rotation22*e,r=h,_=c,l=m,this.localTranslation=new a.common.Vec3;let b=this.localTranslation;b.x=r,b.y=_,b.z=l,this._gjkMargin=t._gjkMargin}computeLocalSupportingVertex(t,i){this.c.computeLocalSupportingVertex(t,i);let s=this.localTranslation;if(t.x*s.x+t.y*s.y+t.z*s.z>0){let t=this.localTranslation;i.x+=t.x,i.y+=t.y,i.z+=t.z}}},a.collision.broadphase._BroadPhase.AabbGeometry=class extends a.collision.geometry.ConvexGeometry{constructor(){super(-1),this.min=new a.common.Vec3,this.max=new a.common.Vec3}computeLocalSupportingVertex(t,i){i.x=t.x>0?this.max.x:this.min.x,i.y=t.y>0?this.max.y:this.min.y,i.z=t.z>0?this.max.z:this.min.z}},a.collision.broadphase.BroadPhaseProxyCallback=class{constructor(){}process(t){}},a.collision.broadphase.BroadPhaseType=class{},a.collision.broadphase.Proxy=class{constructor(t,i){this.userData=t,this._id=i,this._prev=null,this._next=null,this._aabbMinX=0,this._aabbMinY=0,this._aabbMinZ=0,this._aabbMaxX=0,this._aabbMaxY=0,this._aabbMaxZ=0}getId(){return this._id}getFatAabb(){let t=new a.collision.geometry.Aabb;return t._minX=this._aabbMinX,t._minY=this._aabbMinY,t._minZ=this._aabbMinZ,t._maxX=this._aabbMaxX,t._maxY=this._aabbMaxY,t._maxZ=this._aabbMaxZ,t}getFatAabbTo(t){t._minX=this._aabbMinX,t._minY=this._aabbMinY,t._minZ=this._aabbMinZ,t._maxX=this._aabbMaxX,t._maxY=this._aabbMaxY,t._maxZ=this._aabbMaxZ}},a.collision.broadphase.ProxyPair=class{constructor(){this._p1=null,this._p2=null}getProxy1(){return this._p1}getProxy2(){return this._p2}getNext(){return this._next}},a.collision.broadphase.bruteforce||(a.collision.broadphase.bruteforce={}),a.collision.broadphase.bruteforce.BruteForceBroadPhase=class extends a.collision.broadphase.BroadPhase{constructor(){super(1),this._incremental=!1}createProxy(t,i){let s=new a.collision.broadphase.Proxy(t,this._idCount++);return this._numProxies++,null==this._proxyList?(this._proxyList=s,this._proxyListLast=s):(this._proxyListLast._next=s,s._prev=this._proxyListLast,this._proxyListLast=s),s._aabbMinX=i._minX,s._aabbMinY=i._minY,s._aabbMinZ=i._minZ,s._aabbMaxX=i._maxX,s._aabbMaxY=i._maxY,s._aabbMaxZ=i._maxZ,s}destroyProxy(t){this._numProxies--;let i=t._prev,s=t._next;null!=i&&(i._next=s),null!=s&&(s._prev=i),t==this._proxyList&&(this._proxyList=this._proxyList._next),t==this._proxyListLast&&(this._proxyListLast=this._proxyListLast._prev),t._next=null,t._prev=null,t.userData=null}moveProxy(t,i,s){t._aabbMinX=i._minX,t._aabbMinY=i._minY,t._aabbMinZ=i._minZ,t._aabbMaxX=i._maxX,t._aabbMaxY=i._maxY,t._aabbMaxZ=i._maxZ}collectPairs(){let t=this._proxyPairList;if(null!=t){for(;t._p1=null,t._p2=null,t=t._next,null!=t;);this._proxyPairList._next=this._proxyPairPool,this._proxyPairPool=this._proxyPairList,this._proxyPairList=null}this._testCount=0;let i=this._proxyList;for(;null!=i;){let t=i._next,s=i._next;for(;null!=s;){let t=s._next;if(this._testCount++,i._aabbMinX<s._aabbMaxX&&i._aabbMaxX>s._aabbMinX&&i._aabbMinY<s._aabbMaxY&&i._aabbMaxY>s._aabbMinY&&i._aabbMinZ<s._aabbMaxZ&&i._aabbMaxZ>s._aabbMinZ){let t=this._proxyPairPool;null!=t?(this._proxyPairPool=t._next,t._next=null):t=new a.collision.broadphase.ProxyPair;let o=t;null==this._proxyPairList||(o._next=this._proxyPairList),this._proxyPairList=o,o._p1=i,o._p2=s}s=t}i=t}}rayCast(t,i,s){let a,o,n,e,r,_;a=t.x,o=t.y,n=t.z,e=i.x,r=i.y,_=i.z;let l=this._proxyList;for(;null!=l;){let t,i=l._next,h=a,c=o,m=n,b=e,p=r,x=_,f=l._aabbMinX,u=l._aabbMinY,y=l._aabbMinZ,g=l._aabbMaxX,v=l._aabbMaxY,d=l._aabbMaxZ;if(f>(h>b?h:b)||g<(h<b?h:b)||u>(c>p?c:p)||v<(c<p?c:p)||y>(m>x?m:x)||d<(m<x?m:x))t=!1;else{let i,s,a=b-h,o=p-c,n=x-m,e=a<0?-a:a,r=o<0?-o:o,_=n<0?-n:n,l=.5*(g-f),X=.5*(v-u),z=.5*(d-y),Y=h-.5*(g+f),Z=c-.5*(v+u),M=m-.5*(d+y),I=Z*n-M*o;if((I<0?-I:I)-(X*_+z*r)>0)s=!0;else{let t=M*a-Y*n;s=(t<0?-t:t)-(z*e+l*_)>0}if(s)i=!0;else{let t=Y*o-Z*a;i=(t<0?-t:t)-(l*r+X*e)>0}t=!i}t&&s.process(l),l=i}}convexCast(t,i,s,o){let n=this._proxyList;for(;null!=n;){let e=n._next,r=this._aabb.min;r.x=n._aabbMinX,r.y=n._aabbMinY,r.z=n._aabbMinZ;let _=this._aabb.max;_.x=n._aabbMaxX,_.y=n._aabbMaxY,_.z=n._aabbMaxZ,this._convexSweep.init(t,i,s);let l=a.collision.narrowphase.detector.gjkepa.GjkEpa.instance;0==l.computeClosestPointsImpl(this._convexSweep,this._aabb,i,this.identity,null,!1)&&l.distance<=0&&o.process(n),n=e}}aabbTest(t,i){let s=this._proxyList;for(;null!=s;){let a=s._next;t._minX<s._aabbMaxX&&t._maxX>s._aabbMinX&&t._minY<s._aabbMaxY&&t._maxY>s._aabbMinY&&t._minZ<s._aabbMaxZ&&t._maxZ>s._aabbMinZ&&i.process(s),s=a}}},a.collision.broadphase.bvh||(a.collision.broadphase.bvh={}),a.collision.broadphase.bvh.BvhBroadPhase=class extends a.collision.broadphase.BroadPhase{constructor(){super(2),this._incremental=!0,this._tree=new a.collision.broadphase.bvh.BvhTree,this.movedProxies=new Array(1024),this.numMovedProxies=0}collide(t,i){this._testCount++;let s=0==t._height,o=0==i._height;if(t==i){if(s)return;return this.collide(t._children[0],i),void this.collide(t._children[1],i)}if(t._aabbMinX<i._aabbMaxX&&t._aabbMaxX>i._aabbMinX&&t._aabbMinY<i._aabbMaxY&&t._aabbMaxY>i._aabbMinY&&t._aabbMinZ<i._aabbMaxZ&&t._aabbMaxZ>i._aabbMinZ){if(s&&o){let s=this._proxyPairPool;null!=s?(this._proxyPairPool=s._next,s._next=null):s=new a.collision.broadphase.ProxyPair;let o=s;return null==this._proxyPairList||(o._next=this._proxyPairList),this._proxyPairList=o,o._p1=t._proxy,void(o._p2=i._proxy)}o||t._height>i._height?(this.collide(t._children[0],i),this.collide(t._children[1],i)):(this.collide(i._children[0],t),this.collide(i._children[1],t))}}rayCastRecursive(t,i,s,a,o,n,e,r){let _,l=i,h=s,c=a,m=o,b=n,p=e,x=t._aabbMinX,f=t._aabbMinY,u=t._aabbMinZ,y=t._aabbMaxX,g=t._aabbMaxY,v=t._aabbMaxZ;if(x>(l>m?l:m)||y<(l<m?l:m)||f>(h>b?h:b)||g<(h<b?h:b)||u>(c>p?c:p)||v<(c<p?c:p))_=!1;else{let t,i,s=m-l,a=b-h,o=p-c,n=s<0?-s:s,e=a<0?-a:a,r=o<0?-o:o,d=.5*(y-x),X=.5*(g-f),z=.5*(v-u),Y=l-.5*(y+x),Z=h-.5*(g+f),M=c-.5*(v+u),I=Z*o-M*a;if((I<0?-I:I)-(X*r+z*e)>0)i=!0;else{let t=M*s-Y*o;i=(t<0?-t:t)-(z*n+d*r)>0}if(i)t=!0;else{let i=Y*a-Z*s;t=(i<0?-i:i)-(d*e+X*n)>0}_=!t}_&&(0!=t._height?(this.rayCastRecursive(t._children[0],i,s,a,o,n,e,r),this.rayCastRecursive(t._children[1],i,s,a,o,n,e,r)):r.process(t._proxy))}convexCastRecursive(t,i,s,o,n){let e=this._aabb.min;e.x=t._aabbMinX,e.y=t._aabbMinY,e.z=t._aabbMinZ;let r=this._aabb.max;r.x=t._aabbMaxX,r.y=t._aabbMaxY,r.z=t._aabbMaxZ,this._convexSweep.init(i,s,o);let _=a.collision.narrowphase.detector.gjkepa.GjkEpa.instance;0==_.computeClosestPointsImpl(this._convexSweep,this._aabb,s,this.identity,null,!1)&&_.distance<=0&&(0!=t._height?(this.convexCastRecursive(t._children[0],i,s,o,n),this.convexCastRecursive(t._children[1],i,s,o,n)):n.process(t._proxy))}aabbTestRecursive(t,i,s){t._aabbMinX<i._maxX&&t._aabbMaxX>i._minX&&t._aabbMinY<i._maxY&&t._aabbMaxY>i._minY&&t._aabbMinZ<i._maxZ&&t._aabbMaxZ>i._minZ&&(0!=t._height?(this.aabbTestRecursive(t._children[0],i,s),this.aabbTestRecursive(t._children[1],i,s)):s.process(t._proxy))}createProxy(t,i){let s=new a.collision.broadphase.bvh.BvhProxy(t,this._idCount++);this._numProxies++,null==this._proxyList?(this._proxyList=s,this._proxyListLast=s):(this._proxyListLast._next=s,s._prev=this._proxyListLast,this._proxyListLast=s),s._aabbMinX=i._minX,s._aabbMinY=i._minY,s._aabbMinZ=i._minZ,s._aabbMaxX=i._maxX,s._aabbMaxY=i._maxY,s._aabbMaxZ=i._maxZ;let o=a.common.Setting.bvhProxyPadding;s._aabbMinX-=o,s._aabbMinY-=o,s._aabbMinZ-=o,s._aabbMaxX+=o,s._aabbMaxY+=o,s._aabbMaxZ+=o;let n=this._tree,e=n._nodePool;null!=e?(n._nodePool=e._next,e._next=null):e=new a.collision.broadphase.bvh.BvhNode;let r=e;if(r._proxy=s,s._leaf=r,r._aabbMinX=s._aabbMinX,r._aabbMinY=s._aabbMinY,r._aabbMinZ=s._aabbMinZ,r._aabbMaxX=s._aabbMaxX,r._aabbMaxY=s._aabbMaxY,r._aabbMaxZ=s._aabbMaxZ,n._numLeaves++,null==n.leafList?(n.leafList=r,n.leafListLast=r):(n.leafListLast._nextLeaf=r,r._prevLeaf=n.leafListLast,n.leafListLast=r),null==n._root)n._root=r;else{let t=n._root;for(;t._height>0;){let i=n._strategy._decideInsertion(t,r);if(-1==i)break;t=t._children[i]}let i=t._parent,s=n._nodePool;null!=s?(n._nodePool=s._next,s._next=null):s=new a.collision.broadphase.bvh.BvhNode;let o=s;if(null==i)n._root=o;else{let s=t._childIndex;i._children[s]=o,o._parent=i,o._childIndex=s}let e=t._childIndex;o._children[e]=t,t._parent=o,t._childIndex=e;let _=1^t._childIndex;for(o._children[_]=r,r._parent=o,r._childIndex=_;null!=o;){if(n._strategy._balancingEnabled&&o._height>=2){let t=o._parent,i=o._children[0],s=o._children[1],a=i._height-s._height,e=o._childIndex;if(a>1){let s=i._children[0],a=i._children[1];if(s._height>a._height){i._children[1]=o,o._parent=i,o._childIndex=1,o._children[0]=a,a._parent=o,a._childIndex=0;let t=i._children[0],s=i._children[1];i._aabbMinX=t._aabbMinX<s._aabbMinX?t._aabbMinX:s._aabbMinX,i._aabbMinY=t._aabbMinY<s._aabbMinY?t._aabbMinY:s._aabbMinY,i._aabbMinZ=t._aabbMinZ<s._aabbMinZ?t._aabbMinZ:s._aabbMinZ,i._aabbMaxX=t._aabbMaxX>s._aabbMaxX?t._aabbMaxX:s._aabbMaxX,i._aabbMaxY=t._aabbMaxY>s._aabbMaxY?t._aabbMaxY:s._aabbMaxY,i._aabbMaxZ=t._aabbMaxZ>s._aabbMaxZ?t._aabbMaxZ:s._aabbMaxZ;let n=i._children[0]._height,e=i._children[1]._height;i._height=(n>e?n:e)+1;let r=o._children[0],_=o._children[1];o._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,o._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,o._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,o._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,o._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,o._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=o._children[0]._height,h=o._children[1]._height;o._height=(l>h?l:h)+1}else{i._children[0]=o,o._parent=i,o._childIndex=0,o._children[0]=s,s._parent=o,s._childIndex=0;let t=i._children[0],a=i._children[1];i._aabbMinX=t._aabbMinX<a._aabbMinX?t._aabbMinX:a._aabbMinX,i._aabbMinY=t._aabbMinY<a._aabbMinY?t._aabbMinY:a._aabbMinY,i._aabbMinZ=t._aabbMinZ<a._aabbMinZ?t._aabbMinZ:a._aabbMinZ,i._aabbMaxX=t._aabbMaxX>a._aabbMaxX?t._aabbMaxX:a._aabbMaxX,i._aabbMaxY=t._aabbMaxY>a._aabbMaxY?t._aabbMaxY:a._aabbMaxY,i._aabbMaxZ=t._aabbMaxZ>a._aabbMaxZ?t._aabbMaxZ:a._aabbMaxZ;let n=i._children[0]._height,e=i._children[1]._height;i._height=(n>e?n:e)+1;let r=o._children[0],_=o._children[1];o._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,o._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,o._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,o._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,o._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,o._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=o._children[0]._height,h=o._children[1]._height;o._height=(l>h?l:h)+1}null!=t?(t._children[e]=i,i._parent=t,i._childIndex=e):(n._root=i,i._parent=null),o=i}else if(a<-1){let i=s._children[0],a=s._children[1];if(i._height>a._height){s._children[1]=o,o._parent=s,o._childIndex=1,o._children[1]=a,a._parent=o,a._childIndex=1;let t=s._children[0],i=s._children[1];s._aabbMinX=t._aabbMinX<i._aabbMinX?t._aabbMinX:i._aabbMinX,s._aabbMinY=t._aabbMinY<i._aabbMinY?t._aabbMinY:i._aabbMinY,s._aabbMinZ=t._aabbMinZ<i._aabbMinZ?t._aabbMinZ:i._aabbMinZ,s._aabbMaxX=t._aabbMaxX>i._aabbMaxX?t._aabbMaxX:i._aabbMaxX,s._aabbMaxY=t._aabbMaxY>i._aabbMaxY?t._aabbMaxY:i._aabbMaxY,s._aabbMaxZ=t._aabbMaxZ>i._aabbMaxZ?t._aabbMaxZ:i._aabbMaxZ;let n=s._children[0]._height,e=s._children[1]._height;s._height=(n>e?n:e)+1;let r=o._children[0],_=o._children[1];o._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,o._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,o._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,o._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,o._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,o._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=o._children[0]._height,h=o._children[1]._height;o._height=(l>h?l:h)+1}else{s._children[0]=o,o._parent=s,o._childIndex=0,o._children[1]=i,i._parent=o,i._childIndex=1;let t=s._children[0],a=s._children[1];s._aabbMinX=t._aabbMinX<a._aabbMinX?t._aabbMinX:a._aabbMinX,s._aabbMinY=t._aabbMinY<a._aabbMinY?t._aabbMinY:a._aabbMinY,s._aabbMinZ=t._aabbMinZ<a._aabbMinZ?t._aabbMinZ:a._aabbMinZ,s._aabbMaxX=t._aabbMaxX>a._aabbMaxX?t._aabbMaxX:a._aabbMaxX,s._aabbMaxY=t._aabbMaxY>a._aabbMaxY?t._aabbMaxY:a._aabbMaxY,s._aabbMaxZ=t._aabbMaxZ>a._aabbMaxZ?t._aabbMaxZ:a._aabbMaxZ;let n=s._children[0]._height,e=s._children[1]._height;s._height=(n>e?n:e)+1;let r=o._children[0],_=o._children[1];o._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,o._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,o._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,o._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,o._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,o._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=o._children[0]._height,h=o._children[1]._height;o._height=(l>h?l:h)+1}null!=t?(t._children[e]=s,s._parent=t,s._childIndex=e):(n._root=s,s._parent=null),o=s}}let t=o._children[0]._height,i=o._children[1]._height;o._height=(t>i?t:i)+1;let s=o._children[0],a=o._children[1];o._aabbMinX=s._aabbMinX<a._aabbMinX?s._aabbMinX:a._aabbMinX,o._aabbMinY=s._aabbMinY<a._aabbMinY?s._aabbMinY:a._aabbMinY,o._aabbMinZ=s._aabbMinZ<a._aabbMinZ?s._aabbMinZ:a._aabbMinZ,o._aabbMaxX=s._aabbMaxX>a._aabbMaxX?s._aabbMaxX:a._aabbMaxX,o._aabbMaxY=s._aabbMaxY>a._aabbMaxY?s._aabbMaxY:a._aabbMaxY,o._aabbMaxZ=s._aabbMaxZ>a._aabbMaxZ?s._aabbMaxZ:a._aabbMaxZ,o=o._parent}}if(!s._moved){if(s._moved=!0,this.movedProxies.length==this.numMovedProxies){let t=new Array(this.numMovedProxies<<1),i=0,s=this.numMovedProxies;for(;i<s;){let s=i++;t[s]=this.movedProxies[s],this.movedProxies[s]=null}this.movedProxies=t}this.movedProxies[this.numMovedProxies++]=s}return s}destroyProxy(t){this._numProxies--;let i=t._prev,s=t._next;null!=i&&(i._next=s),null!=s&&(s._prev=i),t==this._proxyList&&(this._proxyList=this._proxyList._next),t==this._proxyListLast&&(this._proxyListLast=this._proxyListLast._prev),t._next=null,t._prev=null;let a=t,o=this._tree,n=a._leaf;o._numLeaves--;let e=n._prevLeaf,r=n._nextLeaf;if(null!=e&&(e._nextLeaf=r),null!=r&&(r._prevLeaf=e),n==o.leafList&&(o.leafList=o.leafList._nextLeaf),n==o.leafListLast&&(o.leafListLast=o.leafListLast._prevLeaf),n._nextLeaf=null,n._prevLeaf=null,o._root==n)o._root=null;else{let t=n._parent,i=t._children[1^n._childIndex],s=t._parent;if(null==s)i._parent=null,i._childIndex=0,o._root=i,t._next=null,t._childIndex=0,t._children[0]=null,t._children[1]=null,t._childIndex=0,t._parent=null,t._height=0,t._proxy=null,t._next=o._nodePool,o._nodePool=t;else{i._parent=s;let a=t._childIndex;s._children[a]=i,i._parent=s,i._childIndex=a,t._next=null,t._childIndex=0,t._children[0]=null,t._children[1]=null,t._childIndex=0,t._parent=null,t._height=0,t._proxy=null,t._next=o._nodePool,o._nodePool=t;let n=s;for(;null!=n;){if(o._strategy._balancingEnabled&&n._height>=2){let t=n._parent,i=n._children[0],s=n._children[1],a=i._height-s._height,e=n._childIndex;if(a>1){let s=i._children[0],a=i._children[1];if(s._height>a._height){i._children[1]=n,n._parent=i,n._childIndex=1,n._children[0]=a,a._parent=n,a._childIndex=0;let t=i._children[0],s=i._children[1];i._aabbMinX=t._aabbMinX<s._aabbMinX?t._aabbMinX:s._aabbMinX,i._aabbMinY=t._aabbMinY<s._aabbMinY?t._aabbMinY:s._aabbMinY,i._aabbMinZ=t._aabbMinZ<s._aabbMinZ?t._aabbMinZ:s._aabbMinZ,i._aabbMaxX=t._aabbMaxX>s._aabbMaxX?t._aabbMaxX:s._aabbMaxX,i._aabbMaxY=t._aabbMaxY>s._aabbMaxY?t._aabbMaxY:s._aabbMaxY,i._aabbMaxZ=t._aabbMaxZ>s._aabbMaxZ?t._aabbMaxZ:s._aabbMaxZ;let o=i._children[0]._height,e=i._children[1]._height;i._height=(o>e?o:e)+1;let r=n._children[0],_=n._children[1];n._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,n._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,n._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,n._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,n._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,n._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=n._children[0]._height,h=n._children[1]._height;n._height=(l>h?l:h)+1}else{i._children[0]=n,n._parent=i,n._childIndex=0,n._children[0]=s,s._parent=n,s._childIndex=0;let t=i._children[0],a=i._children[1];i._aabbMinX=t._aabbMinX<a._aabbMinX?t._aabbMinX:a._aabbMinX,i._aabbMinY=t._aabbMinY<a._aabbMinY?t._aabbMinY:a._aabbMinY,i._aabbMinZ=t._aabbMinZ<a._aabbMinZ?t._aabbMinZ:a._aabbMinZ,i._aabbMaxX=t._aabbMaxX>a._aabbMaxX?t._aabbMaxX:a._aabbMaxX,i._aabbMaxY=t._aabbMaxY>a._aabbMaxY?t._aabbMaxY:a._aabbMaxY,i._aabbMaxZ=t._aabbMaxZ>a._aabbMaxZ?t._aabbMaxZ:a._aabbMaxZ;let o=i._children[0]._height,e=i._children[1]._height;i._height=(o>e?o:e)+1;let r=n._children[0],_=n._children[1];n._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,n._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,n._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,n._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,n._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,n._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=n._children[0]._height,h=n._children[1]._height;n._height=(l>h?l:h)+1}null!=t?(t._children[e]=i,i._parent=t,i._childIndex=e):(o._root=i,i._parent=null),n=i}else if(a<-1){let i=s._children[0],a=s._children[1];if(i._height>a._height){s._children[1]=n,n._parent=s,n._childIndex=1,n._children[1]=a,a._parent=n,a._childIndex=1;let t=s._children[0],i=s._children[1];s._aabbMinX=t._aabbMinX<i._aabbMinX?t._aabbMinX:i._aabbMinX,s._aabbMinY=t._aabbMinY<i._aabbMinY?t._aabbMinY:i._aabbMinY,s._aabbMinZ=t._aabbMinZ<i._aabbMinZ?t._aabbMinZ:i._aabbMinZ,s._aabbMaxX=t._aabbMaxX>i._aabbMaxX?t._aabbMaxX:i._aabbMaxX,s._aabbMaxY=t._aabbMaxY>i._aabbMaxY?t._aabbMaxY:i._aabbMaxY,s._aabbMaxZ=t._aabbMaxZ>i._aabbMaxZ?t._aabbMaxZ:i._aabbMaxZ;let o=s._children[0]._height,e=s._children[1]._height;s._height=(o>e?o:e)+1;let r=n._children[0],_=n._children[1];n._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,n._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,n._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,n._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,n._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,n._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=n._children[0]._height,h=n._children[1]._height;n._height=(l>h?l:h)+1}else{s._children[0]=n,n._parent=s,n._childIndex=0,n._children[1]=i,i._parent=n,i._childIndex=1;let t=s._children[0],a=s._children[1];s._aabbMinX=t._aabbMinX<a._aabbMinX?t._aabbMinX:a._aabbMinX,s._aabbMinY=t._aabbMinY<a._aabbMinY?t._aabbMinY:a._aabbMinY,s._aabbMinZ=t._aabbMinZ<a._aabbMinZ?t._aabbMinZ:a._aabbMinZ,s._aabbMaxX=t._aabbMaxX>a._aabbMaxX?t._aabbMaxX:a._aabbMaxX,s._aabbMaxY=t._aabbMaxY>a._aabbMaxY?t._aabbMaxY:a._aabbMaxY,s._aabbMaxZ=t._aabbMaxZ>a._aabbMaxZ?t._aabbMaxZ:a._aabbMaxZ;let o=s._children[0]._height,e=s._children[1]._height;s._height=(o>e?o:e)+1;let r=n._children[0],_=n._children[1];n._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,n._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,n._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,n._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,n._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,n._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=n._children[0]._height,h=n._children[1]._height;n._height=(l>h?l:h)+1}null!=t?(t._children[e]=s,s._parent=t,s._childIndex=e):(o._root=s,s._parent=null),n=s}}let t=n._children[0]._height,i=n._children[1]._height;n._height=(t>i?t:i)+1;let s=n._children[0],a=n._children[1];n._aabbMinX=s._aabbMinX<a._aabbMinX?s._aabbMinX:a._aabbMinX,n._aabbMinY=s._aabbMinY<a._aabbMinY?s._aabbMinY:a._aabbMinY,n._aabbMinZ=s._aabbMinZ<a._aabbMinZ?s._aabbMinZ:a._aabbMinZ,n._aabbMaxX=s._aabbMaxX>a._aabbMaxX?s._aabbMaxX:a._aabbMaxX,n._aabbMaxY=s._aabbMaxY>a._aabbMaxY?s._aabbMaxY:a._aabbMaxY,n._aabbMaxZ=s._aabbMaxZ>a._aabbMaxZ?s._aabbMaxZ:a._aabbMaxZ,n=n._parent}}}a._leaf=null,n._next=null,n._childIndex=0,n._children[0]=null,n._children[1]=null,n._childIndex=0,n._parent=null,n._height=0,n._proxy=null,n._next=o._nodePool,o._nodePool=n,a.userData=null,a._next=null,a._prev=null,a._moved&&(a._moved=!1)}moveProxy(t,i,s){let o=t;if(o._aabbMinX<=i._minX&&o._aabbMaxX>=i._maxX&&o._aabbMinY<=i._minY&&o._aabbMaxY>=i._maxY&&o._aabbMinZ<=i._minZ&&o._aabbMaxZ>=i._maxZ)return;o._aabbMinX=i._minX,o._aabbMinY=i._minY,o._aabbMinZ=i._minZ,o._aabbMaxX=i._maxX,o._aabbMaxY=i._maxY,o._aabbMaxZ=i._maxZ;let n=a.common.Setting.bvhProxyPadding;if(o._aabbMinX-=n,o._aabbMinY-=n,o._aabbMinZ-=n,o._aabbMaxX+=n,o._aabbMaxY+=n,o._aabbMaxZ+=n,null!=s){let t,i,a,n,e,r,_,l,h,c,m,b;n=0,e=0,r=0,t=s.x,i=s.y,a=s.z,_=n<t?n:t,l=e<i?e:i,h=r<a?r:a,c=n>t?n:t,m=e>i?e:i,b=r>a?r:a,o._aabbMinX+=_,o._aabbMinY+=l,o._aabbMinZ+=h,o._aabbMaxX+=c,o._aabbMaxY+=m,o._aabbMaxZ+=b}if(!o._moved){if(o._moved=!0,this.movedProxies.length==this.numMovedProxies){let t=new Array(this.numMovedProxies<<1),i=0,s=this.numMovedProxies;for(;i<s;){let s=i++;t[s]=this.movedProxies[s],this.movedProxies[s]=null}this.movedProxies=t}this.movedProxies[this.numMovedProxies++]=o}}collectPairs(){let t=this._proxyPairList;if(null!=t){for(;t._p1=null,t._p2=null,t=t._next,null!=t;);this._proxyPairList._next=this._proxyPairPool,this._proxyPairPool=this._proxyPairList,this._proxyPairList=null}if(this._testCount=0,this._numProxies<2)return;let i=this.numMovedProxies/this._numProxies<a.common.Setting.bvhIncrementalCollisionThreshold,s=0,o=this.numMovedProxies;for(;s<o;){let t=s++,o=this.movedProxies[t];if(o._moved){let t=this._tree,s=o._leaf;t._numLeaves--;let n=s._prevLeaf,e=s._nextLeaf;if(null!=n&&(n._nextLeaf=e),null!=e&&(e._prevLeaf=n),s==t.leafList&&(t.leafList=t.leafList._nextLeaf),s==t.leafListLast&&(t.leafListLast=t.leafListLast._prevLeaf),s._nextLeaf=null,s._prevLeaf=null,t._root==s)t._root=null;else{let i=s._parent,a=i._children[1^s._childIndex],o=i._parent;if(null==o)a._parent=null,a._childIndex=0,t._root=a,i._next=null,i._childIndex=0,i._children[0]=null,i._children[1]=null,i._childIndex=0,i._parent=null,i._height=0,i._proxy=null,i._next=t._nodePool,t._nodePool=i;else{a._parent=o;let s=i._childIndex;o._children[s]=a,a._parent=o,a._childIndex=s,i._next=null,i._childIndex=0,i._children[0]=null,i._children[1]=null,i._childIndex=0,i._parent=null,i._height=0,i._proxy=null,i._next=t._nodePool,t._nodePool=i;let n=o;for(;null!=n;){if(t._strategy._balancingEnabled&&n._height>=2){let i=n._parent,s=n._children[0],a=n._children[1],o=s._height-a._height,e=n._childIndex;if(o>1){let a=s._children[0],o=s._children[1];if(a._height>o._height){s._children[1]=n,n._parent=s,n._childIndex=1,n._children[0]=o,o._parent=n,o._childIndex=0;let t=s._children[0],i=s._children[1];s._aabbMinX=t._aabbMinX<i._aabbMinX?t._aabbMinX:i._aabbMinX,s._aabbMinY=t._aabbMinY<i._aabbMinY?t._aabbMinY:i._aabbMinY,s._aabbMinZ=t._aabbMinZ<i._aabbMinZ?t._aabbMinZ:i._aabbMinZ,s._aabbMaxX=t._aabbMaxX>i._aabbMaxX?t._aabbMaxX:i._aabbMaxX,s._aabbMaxY=t._aabbMaxY>i._aabbMaxY?t._aabbMaxY:i._aabbMaxY,s._aabbMaxZ=t._aabbMaxZ>i._aabbMaxZ?t._aabbMaxZ:i._aabbMaxZ;let a=s._children[0]._height,e=s._children[1]._height;s._height=(a>e?a:e)+1;let r=n._children[0],_=n._children[1];n._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,n._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,n._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,n._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,n._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,n._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=n._children[0]._height,h=n._children[1]._height;n._height=(l>h?l:h)+1}else{s._children[0]=n,n._parent=s,n._childIndex=0,n._children[0]=a,a._parent=n,a._childIndex=0;let t=s._children[0],i=s._children[1];s._aabbMinX=t._aabbMinX<i._aabbMinX?t._aabbMinX:i._aabbMinX,s._aabbMinY=t._aabbMinY<i._aabbMinY?t._aabbMinY:i._aabbMinY,s._aabbMinZ=t._aabbMinZ<i._aabbMinZ?t._aabbMinZ:i._aabbMinZ,s._aabbMaxX=t._aabbMaxX>i._aabbMaxX?t._aabbMaxX:i._aabbMaxX,s._aabbMaxY=t._aabbMaxY>i._aabbMaxY?t._aabbMaxY:i._aabbMaxY,s._aabbMaxZ=t._aabbMaxZ>i._aabbMaxZ?t._aabbMaxZ:i._aabbMaxZ;let o=s._children[0]._height,e=s._children[1]._height;s._height=(o>e?o:e)+1;let r=n._children[0],_=n._children[1];n._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,n._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,n._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,n._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,n._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,n._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=n._children[0]._height,h=n._children[1]._height;n._height=(l>h?l:h)+1}null!=i?(i._children[e]=s,s._parent=i,s._childIndex=e):(t._root=s,s._parent=null),n=s}else if(o<-1){let s=a._children[0],o=a._children[1];if(s._height>o._height){a._children[1]=n,n._parent=a,n._childIndex=1,n._children[1]=o,o._parent=n,o._childIndex=1;let t=a._children[0],i=a._children[1];a._aabbMinX=t._aabbMinX<i._aabbMinX?t._aabbMinX:i._aabbMinX,a._aabbMinY=t._aabbMinY<i._aabbMinY?t._aabbMinY:i._aabbMinY,a._aabbMinZ=t._aabbMinZ<i._aabbMinZ?t._aabbMinZ:i._aabbMinZ,a._aabbMaxX=t._aabbMaxX>i._aabbMaxX?t._aabbMaxX:i._aabbMaxX,a._aabbMaxY=t._aabbMaxY>i._aabbMaxY?t._aabbMaxY:i._aabbMaxY,a._aabbMaxZ=t._aabbMaxZ>i._aabbMaxZ?t._aabbMaxZ:i._aabbMaxZ;let s=a._children[0]._height,e=a._children[1]._height;a._height=(s>e?s:e)+1;let r=n._children[0],_=n._children[1];n._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,n._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,n._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,n._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,n._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,n._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=n._children[0]._height,h=n._children[1]._height;n._height=(l>h?l:h)+1}else{a._children[0]=n,n._parent=a,n._childIndex=0,n._children[1]=s,s._parent=n,s._childIndex=1;let t=a._children[0],i=a._children[1];a._aabbMinX=t._aabbMinX<i._aabbMinX?t._aabbMinX:i._aabbMinX,a._aabbMinY=t._aabbMinY<i._aabbMinY?t._aabbMinY:i._aabbMinY,a._aabbMinZ=t._aabbMinZ<i._aabbMinZ?t._aabbMinZ:i._aabbMinZ,a._aabbMaxX=t._aabbMaxX>i._aabbMaxX?t._aabbMaxX:i._aabbMaxX,a._aabbMaxY=t._aabbMaxY>i._aabbMaxY?t._aabbMaxY:i._aabbMaxY,a._aabbMaxZ=t._aabbMaxZ>i._aabbMaxZ?t._aabbMaxZ:i._aabbMaxZ;let o=a._children[0]._height,e=a._children[1]._height;a._height=(o>e?o:e)+1;let r=n._children[0],_=n._children[1];n._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,n._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,n._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,n._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,n._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,n._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=n._children[0]._height,h=n._children[1]._height;n._height=(l>h?l:h)+1}null!=i?(i._children[e]=a,a._parent=i,a._childIndex=e):(t._root=a,a._parent=null),n=a}}let i=n._children[0]._height,s=n._children[1]._height;n._height=(i>s?i:s)+1;let a=n._children[0],o=n._children[1];n._aabbMinX=a._aabbMinX<o._aabbMinX?a._aabbMinX:o._aabbMinX,n._aabbMinY=a._aabbMinY<o._aabbMinY?a._aabbMinY:o._aabbMinY,n._aabbMinZ=a._aabbMinZ<o._aabbMinZ?a._aabbMinZ:o._aabbMinZ,n._aabbMaxX=a._aabbMaxX>o._aabbMaxX?a._aabbMaxX:o._aabbMaxX,n._aabbMaxY=a._aabbMaxY>o._aabbMaxY?a._aabbMaxY:o._aabbMaxY,n._aabbMaxZ=a._aabbMaxZ>o._aabbMaxZ?a._aabbMaxZ:o._aabbMaxZ,n=n._parent}}}o._leaf=null,s._next=null,s._childIndex=0,s._children[0]=null,s._children[1]=null,s._childIndex=0,s._parent=null,s._height=0,s._proxy=null,s._next=t._nodePool,t._nodePool=s;let r=this._tree,_=r._nodePool;null!=_?(r._nodePool=_._next,_._next=null):_=new a.collision.broadphase.bvh.BvhNode;let l=_;if(l._proxy=o,o._leaf=l,l._aabbMinX=o._aabbMinX,l._aabbMinY=o._aabbMinY,l._aabbMinZ=o._aabbMinZ,l._aabbMaxX=o._aabbMaxX,l._aabbMaxY=o._aabbMaxY,l._aabbMaxZ=o._aabbMaxZ,r._numLeaves++,null==r.leafList?(r.leafList=l,r.leafListLast=l):(r.leafListLast._nextLeaf=l,l._prevLeaf=r.leafListLast,r.leafListLast=l),null==r._root)r._root=l;else{let t=r._root;for(;t._height>0;){let i=r._strategy._decideInsertion(t,l);if(-1==i)break;t=t._children[i]}let i=t._parent,s=r._nodePool;null!=s?(r._nodePool=s._next,s._next=null):s=new a.collision.broadphase.bvh.BvhNode;let o=s;if(null==i)r._root=o;else{let s=t._childIndex;i._children[s]=o,o._parent=i,o._childIndex=s}let n=t._childIndex;o._children[n]=t,t._parent=o,t._childIndex=n;let e=1^t._childIndex;for(o._children[e]=l,l._parent=o,l._childIndex=e;null!=o;){if(r._strategy._balancingEnabled&&o._height>=2){let t=o._parent,i=o._children[0],s=o._children[1],a=i._height-s._height,n=o._childIndex;if(a>1){let s=i._children[0],a=i._children[1];if(s._height>a._height){i._children[1]=o,o._parent=i,o._childIndex=1,o._children[0]=a,a._parent=o,a._childIndex=0;let t=i._children[0],s=i._children[1];i._aabbMinX=t._aabbMinX<s._aabbMinX?t._aabbMinX:s._aabbMinX,i._aabbMinY=t._aabbMinY<s._aabbMinY?t._aabbMinY:s._aabbMinY,i._aabbMinZ=t._aabbMinZ<s._aabbMinZ?t._aabbMinZ:s._aabbMinZ,i._aabbMaxX=t._aabbMaxX>s._aabbMaxX?t._aabbMaxX:s._aabbMaxX,i._aabbMaxY=t._aabbMaxY>s._aabbMaxY?t._aabbMaxY:s._aabbMaxY,i._aabbMaxZ=t._aabbMaxZ>s._aabbMaxZ?t._aabbMaxZ:s._aabbMaxZ;let n=i._children[0]._height,e=i._children[1]._height;i._height=(n>e?n:e)+1;let r=o._children[0],_=o._children[1];o._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,o._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,o._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,o._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,o._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,o._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=o._children[0]._height,h=o._children[1]._height;o._height=(l>h?l:h)+1}else{i._children[0]=o,o._parent=i,o._childIndex=0,o._children[0]=s,s._parent=o,s._childIndex=0;let t=i._children[0],a=i._children[1];i._aabbMinX=t._aabbMinX<a._aabbMinX?t._aabbMinX:a._aabbMinX,i._aabbMinY=t._aabbMinY<a._aabbMinY?t._aabbMinY:a._aabbMinY,i._aabbMinZ=t._aabbMinZ<a._aabbMinZ?t._aabbMinZ:a._aabbMinZ,i._aabbMaxX=t._aabbMaxX>a._aabbMaxX?t._aabbMaxX:a._aabbMaxX,i._aabbMaxY=t._aabbMaxY>a._aabbMaxY?t._aabbMaxY:a._aabbMaxY,i._aabbMaxZ=t._aabbMaxZ>a._aabbMaxZ?t._aabbMaxZ:a._aabbMaxZ;let n=i._children[0]._height,e=i._children[1]._height;i._height=(n>e?n:e)+1;let r=o._children[0],_=o._children[1];o._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,o._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,o._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,o._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,o._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,o._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=o._children[0]._height,h=o._children[1]._height;o._height=(l>h?l:h)+1}null!=t?(t._children[n]=i,i._parent=t,i._childIndex=n):(r._root=i,i._parent=null),o=i}else if(a<-1){let i=s._children[0],a=s._children[1];if(i._height>a._height){s._children[1]=o,o._parent=s,o._childIndex=1,o._children[1]=a,a._parent=o,a._childIndex=1;let t=s._children[0],i=s._children[1];s._aabbMinX=t._aabbMinX<i._aabbMinX?t._aabbMinX:i._aabbMinX,s._aabbMinY=t._aabbMinY<i._aabbMinY?t._aabbMinY:i._aabbMinY,s._aabbMinZ=t._aabbMinZ<i._aabbMinZ?t._aabbMinZ:i._aabbMinZ,s._aabbMaxX=t._aabbMaxX>i._aabbMaxX?t._aabbMaxX:i._aabbMaxX,s._aabbMaxY=t._aabbMaxY>i._aabbMaxY?t._aabbMaxY:i._aabbMaxY,s._aabbMaxZ=t._aabbMaxZ>i._aabbMaxZ?t._aabbMaxZ:i._aabbMaxZ;let n=s._children[0]._height,e=s._children[1]._height;s._height=(n>e?n:e)+1;let r=o._children[0],_=o._children[1];o._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,o._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,o._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,o._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,o._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,o._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=o._children[0]._height,h=o._children[1]._height;o._height=(l>h?l:h)+1}else{s._children[0]=o,o._parent=s,o._childIndex=0,o._children[1]=i,i._parent=o,i._childIndex=1;let t=s._children[0],a=s._children[1];s._aabbMinX=t._aabbMinX<a._aabbMinX?t._aabbMinX:a._aabbMinX,s._aabbMinY=t._aabbMinY<a._aabbMinY?t._aabbMinY:a._aabbMinY,s._aabbMinZ=t._aabbMinZ<a._aabbMinZ?t._aabbMinZ:a._aabbMinZ,s._aabbMaxX=t._aabbMaxX>a._aabbMaxX?t._aabbMaxX:a._aabbMaxX,s._aabbMaxY=t._aabbMaxY>a._aabbMaxY?t._aabbMaxY:a._aabbMaxY,s._aabbMaxZ=t._aabbMaxZ>a._aabbMaxZ?t._aabbMaxZ:a._aabbMaxZ;let n=s._children[0]._height,e=s._children[1]._height;s._height=(n>e?n:e)+1;let r=o._children[0],_=o._children[1];o._aabbMinX=r._aabbMinX<_._aabbMinX?r._aabbMinX:_._aabbMinX,o._aabbMinY=r._aabbMinY<_._aabbMinY?r._aabbMinY:_._aabbMinY,o._aabbMinZ=r._aabbMinZ<_._aabbMinZ?r._aabbMinZ:_._aabbMinZ,o._aabbMaxX=r._aabbMaxX>_._aabbMaxX?r._aabbMaxX:_._aabbMaxX,o._aabbMaxY=r._aabbMaxY>_._aabbMaxY?r._aabbMaxY:_._aabbMaxY,o._aabbMaxZ=r._aabbMaxZ>_._aabbMaxZ?r._aabbMaxZ:_._aabbMaxZ;let l=o._children[0]._height,h=o._children[1]._height;o._height=(l>h?l:h)+1}null!=t?(t._children[n]=s,s._parent=t,s._childIndex=n):(r._root=s,s._parent=null),o=s}}let t=o._children[0]._height,i=o._children[1]._height;o._height=(t>i?t:i)+1;let s=o._children[0],a=o._children[1];o._aabbMinX=s._aabbMinX<a._aabbMinX?s._aabbMinX:a._aabbMinX,o._aabbMinY=s._aabbMinY<a._aabbMinY?s._aabbMinY:a._aabbMinY,o._aabbMinZ=s._aabbMinZ<a._aabbMinZ?s._aabbMinZ:a._aabbMinZ,o._aabbMaxX=s._aabbMaxX>a._aabbMaxX?s._aabbMaxX:a._aabbMaxX,o._aabbMaxY=s._aabbMaxY>a._aabbMaxY?s._aabbMaxY:a._aabbMaxY,o._aabbMaxZ=s._aabbMaxZ>a._aabbMaxZ?s._aabbMaxZ:a._aabbMaxZ,o=o._parent}}i&&this.collide(this._tree._root,o._leaf),o._moved=!1}this.movedProxies[t]=null}i||this.collide(this._tree._root,this._tree._root),this.numMovedProxies=0}rayCast(t,i,s){if(null==this._tree._root)return;let a,o,n,e,r,_;a=t.x,o=t.y,n=t.z,e=i.x,r=i.y,_=i.z,this.rayCastRecursive(this._tree._root,a,o,n,e,r,_,s)}convexCast(t,i,s,a){null!=this._tree._root&&this.convexCastRecursive(this._tree._root,t,i,s,a)}aabbTest(t,i){null!=this._tree._root&&this.aabbTestRecursive(this._tree._root,t,i)}getTreeBalance(){return this._tree._getBalance()}},a.collision.broadphase.bvh.BvhInsertionStrategy=class{},a.collision.broadphase.bvh.BvhNode=class{constructor(){this._next=null,this._prevLeaf=null,this._nextLeaf=null,this._children=new Array(2),this._childIndex=0,this._parent=null,this._height=0,this._proxy=null,this._aabbMinX=0,this._aabbMinY=0,this._aabbMinZ=0,this._aabbMaxX=0,this._aabbMaxY=0,this._aabbMaxZ=0}},a.collision.broadphase.bvh.BvhProxy=class extends a.collision.broadphase.Proxy{constructor(t,i){super(t,i),this._leaf=null,this._moved=!1}},a.collision.broadphase.bvh.BvhStrategy=class{constructor(){this._insertionStrategy=0,this._balancingEnabled=!1}_decideInsertion(t,i){switch(this._insertionStrategy){case 0:let s,a,o;s=i._aabbMinX+i._aabbMaxX,a=i._aabbMinY+i._aabbMaxY,o=i._aabbMinZ+i._aabbMaxZ;let n,e,r,_,l,h,c=t._children[0],m=t._children[1];return n=c._aabbMinX+c._aabbMaxX,e=c._aabbMinY+c._aabbMaxY,r=c._aabbMinZ+c._aabbMaxZ,_=m._aabbMinX+m._aabbMaxX,l=m._aabbMinY+m._aabbMaxY,h=m._aabbMinZ+m._aabbMaxZ,n-=s,e-=a,r-=o,_-=s,l-=a,h-=o,n*n+e*e+r*r<_*_+l*l+h*h?0:1;case 1:let b,p,x,f,u,y,g=t._children[0],v=t._children[1],d=t._aabbMaxY-t._aabbMinY,X=t._aabbMaxZ-t._aabbMinZ;b=t._aabbMinX<i._aabbMinX?t._aabbMinX:i._aabbMinX,p=t._aabbMinY<i._aabbMinY?t._aabbMinY:i._aabbMinY,x=t._aabbMinZ<i._aabbMinZ?t._aabbMinZ:i._aabbMinZ,f=t._aabbMaxX>i._aabbMaxX?t._aabbMaxX:i._aabbMaxX,u=t._aabbMaxY>i._aabbMaxY?t._aabbMaxY:i._aabbMaxY,y=t._aabbMaxZ>i._aabbMaxZ?t._aabbMaxZ:i._aabbMaxZ;let z=u-p,Y=y-x,Z=2*((f-b)*(z+Y)+z*Y),M=2*Z,I=2*(Z-2*((t._aabbMaxX-t._aabbMinX)*(d+X)+d*X)),V=I;if(b=g._aabbMinX<i._aabbMinX?g._aabbMinX:i._aabbMinX,p=g._aabbMinY<i._aabbMinY?g._aabbMinY:i._aabbMinY,x=g._aabbMinZ<i._aabbMinZ?g._aabbMinZ:i._aabbMinZ,f=g._aabbMaxX>i._aabbMaxX?g._aabbMaxX:i._aabbMaxX,u=g._aabbMaxY>i._aabbMaxY?g._aabbMaxY:i._aabbMaxY,y=g._aabbMaxZ>i._aabbMaxZ?g._aabbMaxZ:i._aabbMaxZ,0==g._height){let t=u-p,i=y-x;V=I+2*((f-b)*(t+i)+t*i)}else{let t=u-p,i=y-x,s=g._aabbMaxY-g._aabbMinY,a=g._aabbMaxZ-g._aabbMinZ;V=I+(2*((f-b)*(t+i)+t*i)-2*((g._aabbMaxX-g._aabbMinX)*(s+a)+s*a))}let w=I;if(b=v._aabbMinX<i._aabbMinX?v._aabbMinX:i._aabbMinX,p=v._aabbMinY<i._aabbMinY?v._aabbMinY:i._aabbMinY,x=v._aabbMinZ<i._aabbMinZ?v._aabbMinZ:i._aabbMinZ,f=v._aabbMaxX>i._aabbMaxX?v._aabbMaxX:i._aabbMaxX,u=v._aabbMaxY>i._aabbMaxY?v._aabbMaxY:i._aabbMaxY,y=v._aabbMaxZ>i._aabbMaxZ?v._aabbMaxZ:i._aabbMaxZ,0==v._height){let t=u-p,i=y-x;w=I+2*((f-b)*(t+i)+t*i)}else{let t=u-p,i=y-x,s=v._aabbMaxY-v._aabbMinY,a=v._aabbMaxZ-v._aabbMinZ;w=I+(2*((f-b)*(t+i)+t*i)-2*((v._aabbMaxX-v._aabbMinX)*(s+a)+s*a))}return M<V?M<w?-1:1:V<w?0:1;default:return console.log("src/oimo/collision/broadphase/bvh/BvhStrategy.hx:37:","invalid BVH insertion strategy: "+this._insertionStrategy),-1}}_splitLeaves(t,i,s){let a,o,n,e=1/(s-i);a=0,o=0,n=0;let r,_,l,h=i;for(;h<s;){let i=t[h++];i._tmpX=i._aabbMaxX+i._aabbMinX,i._tmpY=i._aabbMaxY+i._aabbMinY,i._tmpZ=i._aabbMaxZ+i._aabbMinZ,a+=i._tmpX,o+=i._tmpY,n+=i._tmpZ}a*=e,o*=e,n*=e,r=0,_=0,l=0;let c=i;for(;c<s;){let i,s,e,h=t[c++];i=h._tmpX-a,s=h._tmpY-o,e=h._tmpZ-n,i*=i,s*=s,e*=e,r+=i,_+=s,l+=e}let m=_,b=l,p=i,x=s-1;if(r>m)if(r>b){let i=a;for(;;){for(;!(t[p]._tmpX<=i);)++p;for(;!(t[x]._tmpX>=i);)--x;if(p>=x)break;let s=t[p];t[p]=t[x],t[x]=s,++p,--x}}else{let i=n;for(;;){for(;!(t[p]._tmpZ<=i);)++p;for(;!(t[x]._tmpZ>=i);)--x;if(p>=x)break;let s=t[p];t[p]=t[x],t[x]=s,++p,--x}}else if(m>b){let i=o;for(;;){for(;!(t[p]._tmpY<=i);)++p;for(;!(t[x]._tmpY>=i);)--x;if(p>=x)break;let s=t[p];t[p]=t[x],t[x]=s,++p,--x}}else{let i=n;for(;;){for(;!(t[p]._tmpZ<=i);)++p;for(;!(t[x]._tmpZ>=i);)--x;if(p>=x)break;let s=t[p];t[p]=t[x],t[x]=s,++p,--x}}return p}},a.collision.broadphase.bvh.BvhTree=class{constructor(){this._root=null,this._numLeaves=0,this._strategy=new a.collision.broadphase.bvh.BvhStrategy,this._nodePool=null,this.leafList=null,this.leafListLast=null,this.tmp=new Array(1024)}_print(t,i){if(null==i&&(i=""),null!=t)if(0==t._height)console.log("src/oimo/collision/broadphase/bvh/BvhTree.hx:39:",i+t._proxy._id);else{let s,a,o,n;this._print(t._children[0],i+" "),a=t._aabbMaxX-t._aabbMinX,o=t._aabbMaxY-t._aabbMinY,n=t._aabbMaxZ-t._aabbMinZ;if(a*(o+n)+o*n>0){let i,a,o;i=t._aabbMaxX-t._aabbMinX,a=t._aabbMaxY-t._aabbMinY,o=t._aabbMaxZ-t._aabbMinZ;s=(1e3*(i*(a+o)+a*o)+.5|0)/1e3}else{let i,a,o;i=t._aabbMaxX-t._aabbMinX,a=t._aabbMaxY-t._aabbMinY,o=t._aabbMaxZ-t._aabbMinZ;s=(1e3*(i*(a+o)+a*o)-.5|0)/1e3}console.log("src/oimo/collision/broadphase/bvh/BvhTree.hx:42:",i+"#"+t._height+", "+s),this._print(t._children[1],i+" ")}}_getBalance(){return this.getBalanceRecursive(this._root)}deleteRecursive(t){if(0==t._height){let i=t._prevLeaf,s=t._nextLeaf;return null!=i&&(i._nextLeaf=s),null!=s&&(s._prevLeaf=i),t==this.leafList&&(this.leafList=this.leafList._nextLeaf),t==this.leafListLast&&(this.leafListLast=this.leafListLast._prevLeaf),t._nextLeaf=null,t._prevLeaf=null,t._proxy._leaf=null,t._next=null,t._childIndex=0,t._children[0]=null,t._children[1]=null,t._childIndex=0,t._parent=null,t._height=0,t._proxy=null,t._next=this._nodePool,void(this._nodePool=t)}this.deleteRecursive(t._children[0]),this.deleteRecursive(t._children[1]),t._next=null,t._childIndex=0,t._children[0]=null,t._children[1]=null,t._childIndex=0,t._parent=null,t._height=0,t._proxy=null,t._next=this._nodePool,this._nodePool=t}decomposeRecursive(t){if(0==t._height)return t._childIndex=0,void(t._parent=null);this.decomposeRecursive(t._children[0]),this.decomposeRecursive(t._children[1]),t._next=null,t._childIndex=0,t._children[0]=null,t._children[1]=null,t._childIndex=0,t._parent=null,t._height=0,t._proxy=null,t._next=this._nodePool,this._nodePool=t}buildTopDownRecursive(t,i,s){if(s-i==1){let s=t[i],a=s._proxy;return s._aabbMinX=a._aabbMinX,s._aabbMinY=a._aabbMinY,s._aabbMinZ=a._aabbMinZ,s._aabbMaxX=a._aabbMaxX,s._aabbMaxY=a._aabbMaxY,s._aabbMaxZ=a._aabbMaxZ,s}let o=this._strategy._splitLeaves(t,i,s),n=this.buildTopDownRecursive(t,i,o),e=this.buildTopDownRecursive(t,o,s),r=this._nodePool;null!=r?(this._nodePool=r._next,r._next=null):r=new a.collision.broadphase.bvh.BvhNode;let _=r;_._children[0]=n,n._parent=_,n._childIndex=0,_._children[1]=e,e._parent=_,e._childIndex=1;let l=_._children[0],h=_._children[1];_._aabbMinX=l._aabbMinX<h._aabbMinX?l._aabbMinX:h._aabbMinX,_._aabbMinY=l._aabbMinY<h._aabbMinY?l._aabbMinY:h._aabbMinY,_._aabbMinZ=l._aabbMinZ<h._aabbMinZ?l._aabbMinZ:h._aabbMinZ,_._aabbMaxX=l._aabbMaxX>h._aabbMaxX?l._aabbMaxX:h._aabbMaxX,_._aabbMaxY=l._aabbMaxY>h._aabbMaxY?l._aabbMaxY:h._aabbMaxY,_._aabbMaxZ=l._aabbMaxZ>h._aabbMaxZ?l._aabbMaxZ:h._aabbMaxZ;let c=_._children[0]._height,m=_._children[1]._height;return _._height=(c>m?c:m)+1,_}getBalanceRecursive(t){if(null==t||0==t._height)return 0;let i=t._children[0]._height-t._children[1]._height;return i<0&&(i=-i),i+this.getBalanceRecursive(t._children[0])+this.getBalanceRecursive(t._children[1])}},a.collision.geometry.Aabb=class{constructor(){this._minX=0,this._minY=0,this._minZ=0,this._maxX=0,this._maxY=0,this._maxZ=0}init(t,i){return this._minX=t.x,this._minY=t.y,this._minZ=t.z,this._maxX=i.x,this._maxY=i.y,this._maxZ=i.z,this}getMin(){let t=new a.common.Vec3;return t.x=this._minX,t.y=this._minY,t.z=this._minZ,t}getMinTo(t){t.x=this._minX,t.y=this._minY,t.z=this._minZ}setMin(t){return this._minX=t.x,this._minY=t.y,this._minZ=t.z,this}getMax(){let t=new a.common.Vec3;return t.x=this._maxX,t.y=this._maxY,t.z=this._maxZ,t}getMaxTo(t){t.x=this._maxX,t.y=this._maxY,t.z=this._maxZ}setMax(t){return this._maxX=t.x,this._maxY=t.y,this._maxZ=t.z,this}getCenter(){let t,i,s,o=new a.common.Vec3;return t=this._minX+this._maxX,i=this._minY+this._maxY,s=this._minZ+this._maxZ,t*=.5,i*=.5,s*=.5,o.x=t,o.y=i,o.z=s,o}getCenterTo(t){let i,s,a;i=this._minX+this._maxX,s=this._minY+this._maxY,a=this._minZ+this._maxZ,i*=.5,s*=.5,a*=.5,t.x=i,t.y=s,t.z=a}getExtents(){let t,i,s,o=new a.common.Vec3;return t=this._maxX-this._minX,i=this._maxY-this._minY,s=this._maxZ-this._minZ,t*=.5,i*=.5,s*=.5,o.x=t,o.y=i,o.z=s,o}getExtentsTo(t){let i,s,a;i=this._maxX-this._minX,s=this._maxY-this._minY,a=this._maxZ-this._minZ,i*=.5,s*=.5,a*=.5,t.x=i,t.y=s,t.z=a}combine(t){return this._minX=this._minX<t._minX?this._minX:t._minX,this._minY=this._minY<t._minY?this._minY:t._minY,this._minZ=this._minZ<t._minZ?this._minZ:t._minZ,this._maxX=this._maxX>t._maxX?this._maxX:t._maxX,this._maxY=this._maxY>t._maxY?this._maxY:t._maxY,this._maxZ=this._maxZ>t._maxZ?this._maxZ:t._maxZ,this}combined(t){let i=new a.collision.geometry.Aabb;return i._minX=this._minX<t._minX?this._minX:t._minX,i._minY=this._minY<t._minY?this._minY:t._minY,i._minZ=this._minZ<t._minZ?this._minZ:t._minZ,i._maxX=this._maxX>t._maxX?this._maxX:t._maxX,i._maxY=this._maxY>t._maxY?this._maxY:t._maxY,i._maxZ=this._maxZ>t._maxZ?this._maxZ:t._maxZ,i}overlap(t){return this._minX<t._maxX&&this._maxX>t._minX&&this._minY<t._maxY&&this._maxY>t._minY&&this._minZ<t._maxZ&&this._maxZ>t._minZ}getIntersection(t){let i=new a.collision.geometry.Aabb;return i._minX=this._minX>t._minX?this._minX:t._minX,i._minY=this._minY>t._minY?this._minY:t._minY,i._minZ=this._minZ>t._minZ?this._minZ:t._minZ,i._maxX=this._maxX<t._maxX?this._maxX:t._maxX,i._maxY=this._maxY<t._maxY?this._maxY:t._maxY,i._maxZ=this._maxZ<t._maxZ?this._maxZ:t._maxZ,i}getIntersectionTo(t,i){i._minX=this._minX>t._minX?this._minX:t._minX,i._minY=this._minY>t._minY?this._minY:t._minY,i._minZ=this._minZ>t._minZ?this._minZ:t._minZ,i._maxX=this._maxX<t._maxX?this._maxX:t._maxX,i._maxY=this._maxY<t._maxY?this._maxY:t._maxY,i._maxZ=this._maxZ<t._maxZ?this._maxZ:t._maxZ}copyFrom(t){return this._minX=t._minX,this._minY=t._minY,this._minZ=t._minZ,this._maxX=t._maxX,this._maxY=t._maxY,this._maxZ=t._maxZ,this}clone(){let t=new a.collision.geometry.Aabb;return t._minX=this._minX,t._minY=this._minY,t._minZ=this._minZ,t._maxX=this._maxX,t._maxY=this._maxY,t._maxZ=this._maxZ,t}},a.collision.geometry.BoxGeometry=class extends a.collision.geometry.ConvexGeometry{constructor(t){super(1),this._halfExtentsX=t.x,this._halfExtentsY=t.y,this._halfExtentsZ=t.z,this._halfAxisXX=t.x,this._halfAxisXY=0,this._halfAxisXZ=0,this._halfAxisYX=0,this._halfAxisYY=t.y,this._halfAxisYZ=0,this._halfAxisZX=0,this._halfAxisZY=0,this._halfAxisZZ=t.z,this._updateMass();let i=t.x<t.y?t.z<t.x?t.z:t.x:t.z<t.y?t.z:t.y;this._gjkMargin>.2*i&&(this._gjkMargin=.2*i)}getHalfExtents(){let t=new a.common.Vec3;return t.x=this._halfExtentsX,t.y=this._halfExtentsY,t.z=this._halfExtentsZ,t}getHalfExtentsTo(t){t.x=this._halfExtentsX,t.y=this._halfExtentsY,t.z=this._halfExtentsZ}_updateMass(){let t,i,s;this._volume=this._halfExtentsX*this._halfExtentsY*this._halfExtentsZ*8,t=this._halfExtentsX*this._halfExtentsX,i=this._halfExtentsY*this._halfExtentsY,s=this._halfExtentsZ*this._halfExtentsZ,this._inertiaCoeff00=.3333333333333333*(i+s),this._inertiaCoeff01=0,this._inertiaCoeff02=0,this._inertiaCoeff10=0,this._inertiaCoeff11=.3333333333333333*(s+t),this._inertiaCoeff12=0,this._inertiaCoeff20=0,this._inertiaCoeff21=0,this._inertiaCoeff22=.3333333333333333*(t+i)}_computeAabb(t,i){let s,a,o,n,e,r,_,l,h,c,m,b,p,x,f,u,y,g,v,d,X;c=i._rotation00*this._halfAxisXX+i._rotation01*this._halfAxisXY+i._rotation02*this._halfAxisXZ,m=i._rotation10*this._halfAxisXX+i._rotation11*this._halfAxisXY+i._rotation12*this._halfAxisXZ,b=i._rotation20*this._halfAxisXX+i._rotation21*this._halfAxisXY+i._rotation22*this._halfAxisXZ,s=c,a=m,o=b,p=i._rotation00*this._halfAxisYX+i._rotation01*this._halfAxisYY+i._rotation02*this._halfAxisYZ,x=i._rotation10*this._halfAxisYX+i._rotation11*this._halfAxisYY+i._rotation12*this._halfAxisYZ,f=i._rotation20*this._halfAxisYX+i._rotation21*this._halfAxisYY+i._rotation22*this._halfAxisYZ,n=p,e=x,r=f,u=i._rotation00*this._halfAxisZX+i._rotation01*this._halfAxisZY+i._rotation02*this._halfAxisZZ,y=i._rotation10*this._halfAxisZX+i._rotation11*this._halfAxisZY+i._rotation12*this._halfAxisZZ,g=i._rotation20*this._halfAxisZX+i._rotation21*this._halfAxisZY+i._rotation22*this._halfAxisZZ,_=u,l=y,h=g,s<0&&(s=-s),a<0&&(a=-a),o<0&&(o=-o),n<0&&(n=-n),e<0&&(e=-e),r<0&&(r=-r),_<0&&(_=-_),l<0&&(l=-l),h<0&&(h=-h),v=s+n,d=a+e,X=o+r,v+=_,d+=l,X+=h,t._minX=i._positionX-v,t._minY=i._positionY-d,t._minZ=i._positionZ-X,t._maxX=i._positionX+v,t._maxY=i._positionY+d,t._maxZ=i._positionZ+X}computeLocalSupportingVertex(t,i){let s,a,o,n,e,r;s=this._gjkMargin,a=this._gjkMargin,o=this._gjkMargi