UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

2 lines (1 loc) 7.95 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var e=require("../../../build/three.module.js");const t={type:"change"},o={type:"start"},n={type:"end"};class i extends e.EventDispatcher{constructor(i,c){super();const s=this,a=-1,r=0,p=1,d=2,m=3,l=4;this.object=i,this.domElement=c,this.domElement.style.touchAction="none",this.enabled=!0,this.screen={left:0,top:0,width:0,height:0},this.rotateSpeed=1,this.zoomSpeed=1.2,this.panSpeed=.3,this.noRotate=!1,this.noZoom=!1,this.noPan=!1,this.staticMoving=!1,this.dynamicDampingFactor=.2,this.minDistance=0,this.maxDistance=1/0,this.keys=["KeyA","KeyS","KeyD"],this.mouseButtons={LEFT:e.MOUSE.ROTATE,MIDDLE:e.MOUSE.DOLLY,RIGHT:e.MOUSE.PAN},this.target=new e.Vector3;const h=1e-6,u=new e.Vector3;let g=1,y=a,b=a,E=0,v=0,w=0;const f=new e.Vector3,j=new e.Vector2,L=new e.Vector2,V=new e.Vector3,D=new e.Vector2,k=new e.Vector2,x=new e.Vector2,z=new e.Vector2,S=[],Y={};this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.up0=this.object.up.clone(),this.zoom0=this.object.zoom,this.handleResize=function(){const e=s.domElement.getBoundingClientRect(),t=s.domElement.ownerDocument.documentElement;s.screen.left=e.left+window.pageXOffset-t.clientLeft,s.screen.top=e.top+window.pageYOffset-t.clientTop,s.screen.width=e.width,s.screen.height=e.height};const M=function(){const t=new e.Vector2;return function(e,o){return t.set((e-s.screen.left)/s.screen.width,(o-s.screen.top)/s.screen.height),t}}(),C=function(){const t=new e.Vector2;return function(e,o){return t.set((e-.5*s.screen.width-s.screen.left)/(.5*s.screen.width),(s.screen.height+2*(s.screen.top-o))/s.screen.width),t}}();function I(e){!1!==s.enabled&&(0===S.length&&(s.domElement.setPointerCapture(e.pointerId),s.domElement.addEventListener("pointermove",X),s.domElement.addEventListener("pointerup",P)),function(e){S.push(e)}(e),"touch"===e.pointerType?function(e){if(1===(Z(e),S.length))y=m,L.copy(C(S[0].pageX,S[0].pageY)),j.copy(L);else{y=l;const e=S[0].pageX-S[1].pageX,t=S[0].pageY-S[1].pageY;v=E=Math.sqrt(e*e+t*t);const o=(S[0].pageX+S[1].pageX)/2,n=(S[0].pageY+S[1].pageY)/2;x.copy(M(o,n)),z.copy(x)}s.dispatchEvent(o)}(e):function(e){if(y===a)switch(e.button){case s.mouseButtons.LEFT:y=r;break;case s.mouseButtons.MIDDLE:y=p;break;case s.mouseButtons.RIGHT:y=d}const t=b!==a?b:y;t!==r||s.noRotate?t!==p||s.noZoom?t!==d||s.noPan||(x.copy(M(e.pageX,e.pageY)),z.copy(x)):(D.copy(M(e.pageX,e.pageY)),k.copy(D)):(L.copy(C(e.pageX,e.pageY)),j.copy(L));s.dispatchEvent(o)}(e))}function X(e){!1!==s.enabled&&("touch"===e.pointerType?function(e){if(1===(Z(e),S.length))j.copy(L),L.copy(C(e.pageX,e.pageY));else{const t=function(e){const t=e.pointerId===S[0].pointerId?S[1]:S[0];return Y[t.pointerId]}(e),o=e.pageX-t.x,n=e.pageY-t.y;v=Math.sqrt(o*o+n*n);const i=(e.pageX+t.x)/2,c=(e.pageY+t.y)/2;z.copy(M(i,c))}}(e):function(e){const t=b!==a?b:y;t!==r||s.noRotate?t!==p||s.noZoom?t!==d||s.noPan||z.copy(M(e.pageX,e.pageY)):k.copy(M(e.pageX,e.pageY)):(j.copy(L),L.copy(C(e.pageX,e.pageY)))}(e))}function P(e){!1!==s.enabled&&("touch"===e.pointerType?function(e){switch(S.length){case 0:y=a;break;case 1:y=m,L.copy(C(e.pageX,e.pageY)),j.copy(L);break;case 2:y=l;for(let t=0;t<S.length;t++)if(S[t].pointerId!==e.pointerId){const e=Y[S[t].pointerId];L.copy(C(e.x,e.y)),j.copy(L);break}}s.dispatchEvent(n)}(e):(y=a,s.dispatchEvent(n)),F(e),0===S.length&&(s.domElement.releasePointerCapture(e.pointerId),s.domElement.removeEventListener("pointermove",X),s.domElement.removeEventListener("pointerup",P)))}function T(e){F(e)}function O(e){!1!==s.enabled&&(window.removeEventListener("keydown",O),b===a&&(e.code!==s.keys[r]||s.noRotate?e.code!==s.keys[p]||s.noZoom?e.code!==s.keys[d]||s.noPan||(b=d):b=p:b=r))}function A(){!1!==s.enabled&&(b=a,window.addEventListener("keydown",O))}function R(e){if(!1!==s.enabled&&!0!==s.noZoom){switch(e.preventDefault(),e.deltaMode){case 2:D.y-=.025*e.deltaY;break;case 1:D.y-=.01*e.deltaY;break;default:D.y-=25e-5*e.deltaY}s.dispatchEvent(o),s.dispatchEvent(n)}}function q(e){!1!==s.enabled&&e.preventDefault()}function F(e){delete Y[e.pointerId];for(let t=0;t<S.length;t++)if(S[t].pointerId==e.pointerId)return void S.splice(t,1)}function Z(t){let o=Y[t.pointerId];void 0===o&&(o=new e.Vector2,Y[t.pointerId]=o),o.set(t.pageX,t.pageY)}this.rotateCamera=function(){const t=new e.Vector3,o=new e.Quaternion,n=new e.Vector3,i=new e.Vector3,c=new e.Vector3,a=new e.Vector3;return function(){a.set(L.x-j.x,L.y-j.y,0);let e=a.length();e?(f.copy(s.object.position).sub(s.target),n.copy(f).normalize(),i.copy(s.object.up).normalize(),c.crossVectors(i,n).normalize(),i.setLength(L.y-j.y),c.setLength(L.x-j.x),a.copy(i.add(c)),t.crossVectors(a,f).normalize(),e*=s.rotateSpeed,o.setFromAxisAngle(t,e),f.applyQuaternion(o),s.object.up.applyQuaternion(o),V.copy(t),w=e):!s.staticMoving&&w&&(w*=Math.sqrt(1-s.dynamicDampingFactor),f.copy(s.object.position).sub(s.target),o.setFromAxisAngle(V,w),f.applyQuaternion(o),s.object.up.applyQuaternion(o)),j.copy(L)}}(),this.zoomCamera=function(){let e;y===l?(e=E/v,E=v,s.object.isPerspectiveCamera?f.multiplyScalar(e):s.object.isOrthographicCamera&&(s.object.zoom/=e,s.object.updateProjectionMatrix())):(e=1+(k.y-D.y)*s.zoomSpeed,1!==e&&e>0&&(s.object.isPerspectiveCamera?f.multiplyScalar(e):s.object.isOrthographicCamera&&(s.object.zoom/=e,s.object.updateProjectionMatrix())),s.staticMoving?D.copy(k):D.y+=(k.y-D.y)*this.dynamicDampingFactor)},this.panCamera=function(){const t=new e.Vector2,o=new e.Vector3,n=new e.Vector3;return function(){if(t.copy(z).sub(x),t.lengthSq()){if(s.object.isOrthographicCamera){const e=(s.object.right-s.object.left)/s.object.zoom/s.domElement.clientWidth,o=(s.object.top-s.object.bottom)/s.object.zoom/s.domElement.clientWidth;t.x*=e,t.y*=o}t.multiplyScalar(f.length()*s.panSpeed),n.copy(f).cross(s.object.up).setLength(t.x),n.add(o.copy(s.object.up).setLength(t.y)),s.object.position.add(n),s.target.add(n),s.staticMoving?x.copy(z):x.add(t.subVectors(z,x).multiplyScalar(s.dynamicDampingFactor))}}}(),this.checkDistances=function(){s.noZoom&&s.noPan||(f.lengthSq()>s.maxDistance*s.maxDistance&&(s.object.position.addVectors(s.target,f.setLength(s.maxDistance)),D.copy(k)),f.lengthSq()<s.minDistance*s.minDistance&&(s.object.position.addVectors(s.target,f.setLength(s.minDistance)),D.copy(k)))},this.update=function(){f.subVectors(s.object.position,s.target),s.noRotate||s.rotateCamera(),s.noZoom||s.zoomCamera(),s.noPan||s.panCamera(),s.object.position.addVectors(s.target,f),s.object.isPerspectiveCamera?(s.checkDistances(),s.object.lookAt(s.target),u.distanceToSquared(s.object.position)>h&&(s.dispatchEvent(t),u.copy(s.object.position))):s.object.isOrthographicCamera&&(s.object.lookAt(s.target),(u.distanceToSquared(s.object.position)>h||g!==s.object.zoom)&&(s.dispatchEvent(t),u.copy(s.object.position),g=s.object.zoom))},this.reset=function(){y=a,b=a,s.target.copy(s.target0),s.object.position.copy(s.position0),s.object.up.copy(s.up0),s.object.zoom=s.zoom0,s.object.updateProjectionMatrix(),f.subVectors(s.object.position,s.target),s.object.lookAt(s.target),s.dispatchEvent(t),u.copy(s.object.position),g=s.object.zoom},this.dispose=function(){s.domElement.removeEventListener("contextmenu",q),s.domElement.removeEventListener("pointerdown",I),s.domElement.removeEventListener("pointercancel",T),s.domElement.removeEventListener("wheel",R),s.domElement.removeEventListener("pointermove",X),s.domElement.removeEventListener("pointerup",P),window.removeEventListener("keydown",O),window.removeEventListener("keyup",A)},this.domElement.addEventListener("contextmenu",q),this.domElement.addEventListener("pointerdown",I),this.domElement.addEventListener("pointercancel",T),this.domElement.addEventListener("wheel",R,{passive:!1}),window.addEventListener("keydown",O),window.addEventListener("keyup",A),this.handleResize(),this.update()}}exports.TrackballControls=i;