YGG.OrbitControls=function(e,t){var n,o,a,i,c;this.MIN_DRAG_DISTANCE=2e-4,this.MIN_DRAG_DISTANCE_TOUCH=.005,this.onMouseUpCallback=function(e){},this.onTouchStartCallback=function(e){},this.onTouchEndCallback=function(e){},this.summaryDistance=0,this.object=e,this.domElement=void 0!==t?t:document,this.isDrag=!1,this.enabled=!0,this.target=new THREE.Vector3,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.25,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!1,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.enableKeys=!0,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40},this.mouseButtons={LEFT:THREE.MOUSE.LEFT,MIDDLE:THREE.MOUSE.MIDDLE,RIGHT:THREE.MOUSE.RIGHT},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.setOnMouseUpCallback=function(e){s.onMouseUpCallback=e},this.setOnTouchStartCallback=function(e){s.onTouchStartCallback=e},this.setOnTouchEndCallback=function(e){s.onTouchEndCallback=e},this.refresh=function(){let e=new THREE.Vector3(0,0,-15);e.applyQuaternion(s.object.quaternion),s.target.copy(e).add(s.object.position),s.object.updateProjectionMatrix()},this.isDraging=function(){return s.isDrag},this.setAngle=function(e,t){E.phi=e,E.theta=t},this.getPolarAngle=function(){return d.phi},this.getAzimuthalAngle=function(){return d.theta},this.saveState=function(){s.target0.copy(s.target),s.position0.copy(s.object.position),s.zoom0=s.object.zoom},this.reset=function(){s.target.copy(s.target0),s.object.position.copy(s.position0),s.object.zoom=s.zoom0,s.object.updateProjectionMatrix(),s.dispatchEvent(r),s.update(),h=l.NONE},this.update=(n=new THREE.Vector3,o=(new THREE.Quaternion).setFromUnitVectors(e.up,new THREE.Vector3(0,1,0)),a=o.clone().inverse(),i=new THREE.Vector3,c=new THREE.Quaternion,function(){var e=s.object.position;return n.copy(e).sub(s.target),n.applyQuaternion(o),d.setFromVector3(n),s.autoRotate&&h===l.NONE&&S(2*Math.PI/60/60*s.autoRotateSpeed),d.theta+=E.theta,d.phi+=E.phi,d.theta=Math.max(s.minAzimuthAngle,Math.min(s.maxAzimuthAngle,d.theta)),d.phi=Math.max(s.minPolarAngle,Math.min(s.maxPolarAngle,d.phi)),d.makeSafe(),d.radius*=b,d.radius=Math.max(s.minDistance,Math.min(s.maxDistance,d.radius)),s.target.add(f),n.setFromSpherical(d),n.applyQuaternion(a),e.copy(s.target).add(n),s.object.lookAt(s.target),!0===s.enableDamping?(E.theta*=1-s.dampingFactor,E.phi*=1-s.dampingFactor,f.multiplyScalar(1-s.dampingFactor)):(E.set(0,0,0),f.set(0,0,0)),b=1,!!(g||i.distanceToSquared(s.object.position)>p||8*(1-c.dot(s.object.quaternion))>p)&&(s.dispatchEvent(r),i.copy(s.object.position),c.copy(s.object.quaternion),g=!1,!0)}),this.dispose=function(){s.domElement.removeEventListener("contextmenu",X,!1),s.domElement.removeEventListener("mousedown",V,!1),s.domElement.removeEventListener("wheel",z,!1),s.domElement.removeEventListener("touchstart",F,!1),s.domElement.removeEventListener("touchend",U,!1),s.domElement.removeEventListener("touchmove",Z,!1),document.removeEventListener("mousemove",I,!1),document.removeEventListener("mouseup",_,!1),window.removeEventListener("keydown",G,!1)};var s=this,r={type:"change"},u={type:"start"},m={type:"end"},l={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY_PAN:4},h=l.NONE,p=1e-6,d=new THREE.Spherical,E=new THREE.Spherical,b=1,f=new THREE.Vector3,g=!1,T=new THREE.Vector2,v=new THREE.Vector2,y=new THREE.Vector2,D=new THREE.Vector2,R=new THREE.Vector2,M=new THREE.Vector2,O=new THREE.Vector2,P=new THREE.Vector2,j=new THREE.Vector2;function H(){return Math.pow(.95,s.zoomSpeed)}function S(e){E.theta-=e}function A(e){E.phi-=e}var k,C=(k=new THREE.Vector3,function(e,t){k.setFromMatrixColumn(t,0),k.multiplyScalar(-e),f.add(k)}),L=function(){var e=new THREE.Vector3;return function(t,n){!0===s.screenSpacePanning?e.setFromMatrixColumn(n,1):(e.setFromMatrixColumn(n,0),e.crossVectors(s.object.up,e)),e.multiplyScalar(t),f.add(e)}}(),N=function(){var e=new THREE.Vector3;return function(t,n){var o=s.domElement===document?s.domElement.body:s.domElement;if(s.object.isPerspectiveCamera){var a=s.object.position;e.copy(a).sub(s.target);var i=e.length();i*=Math.tan(s.object.fov/2*Math.PI/180),C(2*t*i/o.clientHeight,s.object.matrix),L(2*n*i/o.clientHeight,s.object.matrix)}else s.object.isOrthographicCamera?(C(t*(s.object.right-s.object.left)/s.object.zoom/o.clientWidth,s.object.matrix),L(n*(s.object.top-s.object.bottom)/s.object.zoom/o.clientHeight,s.object.matrix)):s.enablePan=!1}}();function w(e){s.object.isPerspectiveCamera?b/=e:s.object.isOrthographicCamera?(s.object.zoom=Math.max(s.minZoom,Math.min(s.maxZoom,s.object.zoom*e)),s.object.updateProjectionMatrix(),g=!0):s.enableZoom=!1}function x(e){s.object.isPerspectiveCamera?b*=e:s.object.isOrthographicCamera?(s.object.zoom=Math.max(s.minZoom,Math.min(s.maxZoom,s.object.zoom/e)),s.object.updateProjectionMatrix(),g=!0):s.enableZoom=!1}function Y(e){D.set(e.clientX,e.clientY)}function V(e){if(!1!==s.enabled){switch(e.preventDefault(),s.domElement.focus?s.domElement.focus():window.focus(),e.button){case s.mouseButtons.LEFT:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===s.enablePan)return;Y(e),h=l.PAN}else{if(!1===s.enableRotate)return;!function(e){T.set(e.clientX,e.clientY)}(e),h=l.ROTATE}break;case s.mouseButtons.MIDDLE:if(!1===s.enableZoom)return;!function(e){O.set(e.clientX,e.clientY)}(e),h=l.DOLLY;break;case s.mouseButtons.RIGHT:if(!1===s.enablePan)return;Y(e),h=l.PAN;break}h!==l.NONE&&(document.addEventListener("mousemove",I,!1),document.addEventListener("mouseup",_,!1),s.dispatchEvent(u))}}function I(e){if(!1!==s.enabled)switch(e.preventDefault(),h){case l.ROTATE:if(!1===s.enableRotate)return;!function(e){v.set(e.clientX,e.clientY),y.subVectors(v,T).multiplyScalar(s.rotateSpeed);var t=s.domElement===document?s.domElement.body:s.domElement;let n=y.x/t.clientWidth,o=y.y/t.clientHeight;S(2*Math.PI*n),A(2*Math.PI*o),!s.isDrag&&(Math.abs(n)>s.MIN_DRAG_DISTANCE||Math.abs(o)>s.MIN_DRAG_DISTANCE)&&(s.isDrag=!0),T.copy(v),s.update()}(e);break;case l.DOLLY:if(!1===s.enableZoom)return;!function(e){P.set(e.clientX,e.clientY),j.subVectors(P,O),j.y>0?w(H()):j.y<0&&x(H()),O.copy(P),s.update()}(e);break;case l.PAN:if(!1===s.enablePan)return;!function(e){R.set(e.clientX,e.clientY),M.subVectors(R,D).multiplyScalar(s.panSpeed),N(M.x,M.y),D.copy(R),s.update()}(e);break}}function _(e){!1!==s.enabled&&(document.removeEventListener("mousemove",I,!1),document.removeEventListener("mouseup",_,!1),s.dispatchEvent(m),h=l.NONE,e.button==s.mouseButtons.LEFT&&(s.onMouseUpCallback(e),s.isDrag=!1))}function z(e){!1===s.enabled||!1===s.enableZoom||h!==l.NONE&&h!==l.ROTATE||(e.preventDefault(),e.stopPropagation(),s.dispatchEvent(u),function(e){e.deltaY<0?x(H()):e.deltaY>0&&w(H()),s.update()}(e),s.dispatchEvent(m))}function G(e){!1!==s.enabled&&!1!==s.enableKeys&&!1!==s.enablePan&&function(e){var t=!1;switch(e.keyCode){case s.keys.UP:N(0,s.keyPanSpeed),t=!0;break;case s.keys.BOTTOM:N(0,-s.keyPanSpeed),t=!0;break;case s.keys.LEFT:N(s.keyPanSpeed,0),t=!0;break;case s.keys.RIGHT:N(-s.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),s.update())}(e)}function F(e){if(!1!==s.enabled){switch(s.isDrag||(s.summaryDistance=0),e.preventDefault(),e.touches.length){case 1:if(!1===s.enableRotate)return;!function(e){T.set(e.touches[0].pageX,e.touches[0].pageY)}(e),h=l.TOUCH_ROTATE,s.onTouchStartCallback(e);break;case 2:if(s.isDrag||(s.isDrag=!0),!1===s.enableZoom&&!1===s.enablePan)return;!function(e){if(s.enableZoom){var t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+n*n);O.set(0,o)}if(s.enablePan){var a=.5*(e.touches[0].pageX+e.touches[1].pageX),i=.5*(e.touches[0].pageY+e.touches[1].pageY);D.set(a,i)}}(e),h=l.TOUCH_DOLLY_PAN;break;default:h=l.NONE}h!==l.NONE&&s.dispatchEvent(u)}}function Z(e){if(!1!==s.enabled)switch(e.preventDefault(),e.stopPropagation(),e.touches.length){case 1:if(!1===s.enableRotate)return;if(h!==l.TOUCH_ROTATE)return;!function(e){v.set(e.touches[0].pageX,e.touches[0].pageY),y.subVectors(v,T).multiplyScalar(s.rotateSpeed);var t=s.domElement===document?s.domElement.body:s.domElement;S(2*Math.PI*y.x/t.clientHeight),A(2*Math.PI*y.y/t.clientHeight),s.isDrag||(s.summaryDistance+=Math.max(Math.abs(y.x),Math.abs(y.y))/t.clientHeight,s.summaryDistance>s.MIN_DRAG_DISTANCE_TOUCH&&(s.isDrag=!0)),T.copy(v),s.update()}(e);break;case 2:if(s.isDrag||(s.isDrag=!0),!1===s.enableZoom&&!1===s.enablePan)return;if(h!==l.TOUCH_DOLLY_PAN)return;!function(e){if(s.enableZoom){var t=e.touches[0].pageX-e.touches[1].pageX,n=e.touches[0].pageY-e.touches[1].pageY,o=Math.sqrt(t*t+n*n);P.set(0,o),j.set(0,Math.pow(P.y/O.y,s.zoomSpeed)),w(j.y),O.copy(P)}if(s.enablePan){var a=.5*(e.touches[0].pageX+e.touches[1].pageX),i=.5*(e.touches[0].pageY+e.touches[1].pageY);R.set(a,i),M.subVectors(R,D).multiplyScalar(s.panSpeed),N(M.x,M.y),D.copy(R)}s.update()}(e);break;default:h=l.NONE}}function U(e){!1!==s.enabled&&(s.dispatchEvent(m),h=l.NONE,0==e.touches.length&&(s.onTouchEndCallback(e),s.isDrag=!1))}function X(e){!1!==s.enabled&&e.preventDefault()}s.domElement.addEventListener("contextmenu",X,!1),s.domElement.addEventListener("mousedown",V,!1),s.domElement.addEventListener("wheel",z,!1),s.domElement.addEventListener("touchstart",F,!1),s.domElement.addEventListener("touchend",U,!1),s.domElement.addEventListener("touchmove",Z,!1),this.update()},YGG.OrbitControls.prototype=Object.create(THREE.EventDispatcher.prototype),YGG.OrbitControls.prototype.constructor=YGG.OrbitControls,Object.defineProperties(YGG.OrbitControls.prototype,{center:{get:function(){return this.target}},noZoom:{get:function(){return!this.enableZoom},set:function(e){this.enableZoom=!e}},noRotate:{get:function(){return!this.enableRotate},set:function(e){this.enableRotate=!e}},noPan:{get:function(){return!this.enablePan},set:function(e){this.enablePan=!e}},noKeys:{get:function(){return!this.enableKeys},set:function(e){this.enableKeys=!e}},staticMoving:{get:function(){return!this.enableDamping},set:function(e){this.enableDamping=!e}},dynamicDampingFactor:{get:function(){return this.dampingFactor},set:function(e){this.dampingFactor=e}}});