UNPKG

cione-comp-lib

Version:

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

2 lines (1 loc) 7.91 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 c extends e.EventDispatcher{constructor(c,i){super(),document;const a=this,s=-1,r=0,p=1,d=2,m=3,l=4;this.object=c,this.domElement=i,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=s,b=s,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,Y=new e.Vector2,x=new e.Vector2,z=[],S={};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=a.domElement.getBoundingClientRect(),t=a.domElement.ownerDocument.documentElement;a.screen.left=e.left+window.pageXOffset-t.clientLeft,a.screen.top=e.top+window.pageYOffset-t.clientTop,a.screen.width=e.width,a.screen.height=e.height};const X=function(){const t=new e.Vector2;return function(e,o){return t.set((e-a.screen.left)/a.screen.width,(o-a.screen.top)/a.screen.height),t}}(),M=function(){const t=new e.Vector2;return function(e,o){return t.set((e-.5*a.screen.width-a.screen.left)/(.5*a.screen.width),(a.screen.height+2*(a.screen.top-o))/a.screen.width),t}}();function C(e){!1!==a.enabled&&(0===z.length&&(a.domElement.setPointerCapture(e.pointerId),a.domElement.addEventListener("pointermove",P),a.domElement.addEventListener("pointerup",I)),function(e){z.push(e)}(e),"touch"===e.pointerType?function(e){if(1===(Z(e),z.length))y=m,L.copy(M(z[0].pageX,z[0].pageY)),j.copy(L);else{y=l;const e=z[0].pageX-z[1].pageX,t=z[0].pageY-z[1].pageY;v=E=Math.sqrt(e*e+t*t);const o=(z[0].pageX+z[1].pageX)/2,n=(z[0].pageY+z[1].pageY)/2;Y.copy(X(o,n)),x.copy(Y)}a.dispatchEvent(o)}(e):function(e){if(y===s)switch(e.button){case a.mouseButtons.LEFT:y=r;break;case a.mouseButtons.MIDDLE:y=p;break;case a.mouseButtons.RIGHT:y=d;break;default:y=s}const t=b!==s?b:y;t!==r||a.noRotate?t!==p||a.noZoom?t!==d||a.noPan||(Y.copy(X(e.pageX,e.pageY)),x.copy(Y)):(D.copy(X(e.pageX,e.pageY)),k.copy(D)):(L.copy(M(e.pageX,e.pageY)),j.copy(L));a.dispatchEvent(o)}(e))}function P(e){!1!==a.enabled&&("touch"===e.pointerType?function(e){if(1===(Z(e),z.length))j.copy(L),L.copy(M(e.pageX,e.pageY));else{const t=function(e){const t=e.pointerId===z[0].pointerId?z[1]:z[0];return S[t.pointerId]}(e),o=e.pageX-t.x,n=e.pageY-t.y;v=Math.sqrt(o*o+n*n);const c=(e.pageX+t.x)/2,i=(e.pageY+t.y)/2;x.copy(X(c,i))}}(e):function(e){const t=b!==s?b:y;t!==r||a.noRotate?t!==p||a.noZoom?t!==d||a.noPan||x.copy(X(e.pageX,e.pageY)):k.copy(X(e.pageX,e.pageY)):(j.copy(L),L.copy(M(e.pageX,e.pageY)))}(e))}function I(e){!1!==a.enabled&&("touch"===e.pointerType?function(e){switch(z.length){case 0:y=s;break;case 1:y=m,L.copy(M(e.pageX,e.pageY)),j.copy(L);break;case 2:y=l,L.copy(M(e.pageX-j.pageX,e.pageY-j.pageY)),j.copy(L)}a.dispatchEvent(n)}(e):(y=s,a.dispatchEvent(n)),F(e),0===z.length&&(a.domElement.releasePointerCapture(e.pointerId),a.domElement.removeEventListener("pointermove",P),a.domElement.removeEventListener("pointerup",I)))}function T(e){F(e)}function O(e){!1!==a.enabled&&(window.removeEventListener("keydown",O),b===s&&(e.code!==a.keys[r]||a.noRotate?e.code!==a.keys[p]||a.noZoom?e.code!==a.keys[d]||a.noPan||(b=d):b=p:b=r))}function A(){!1!==a.enabled&&(b=s,window.addEventListener("keydown",O))}function R(e){if(!1!==a.enabled&&!0!==a.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}a.dispatchEvent(o),a.dispatchEvent(n)}}function q(e){!1!==a.enabled&&e.preventDefault()}function F(e){delete S[e.pointerId];for(let t=0;t<z.length;t++)if(z[t].pointerId==e.pointerId)return void z.splice(t,1)}function Z(t){let o=S[t.pointerId];void 0===o&&(o=new e.Vector2,S[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,c=new e.Vector3,i=new e.Vector3,s=new e.Vector3;return function(){s.set(L.x-j.x,L.y-j.y,0);let e=s.length();e?(f.copy(a.object.position).sub(a.target),n.copy(f).normalize(),c.copy(a.object.up).normalize(),i.crossVectors(c,n).normalize(),c.setLength(L.y-j.y),i.setLength(L.x-j.x),s.copy(c.add(i)),t.crossVectors(s,f).normalize(),e*=a.rotateSpeed,o.setFromAxisAngle(t,e),f.applyQuaternion(o),a.object.up.applyQuaternion(o),V.copy(t),w=e):!a.staticMoving&&w&&(w*=Math.sqrt(1-a.dynamicDampingFactor),f.copy(a.object.position).sub(a.target),o.setFromAxisAngle(V,w),f.applyQuaternion(o),a.object.up.applyQuaternion(o)),j.copy(L)}}(),this.zoomCamera=function(){let e;y===l?(e=E/v,E=v,a.object.isPerspectiveCamera?f.multiplyScalar(e):a.object.isOrthographicCamera&&(a.object.zoom/=e,a.object.updateProjectionMatrix())):(e=1+(k.y-D.y)*a.zoomSpeed,1!==e&&e>0&&(a.object.isPerspectiveCamera?f.multiplyScalar(e):a.object.isOrthographicCamera&&(a.object.zoom/=e,a.object.updateProjectionMatrix())),a.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(x).sub(Y),t.lengthSq()){if(a.object.isOrthographicCamera){const e=(a.object.right-a.object.left)/a.object.zoom/a.domElement.clientWidth,o=(a.object.top-a.object.bottom)/a.object.zoom/a.domElement.clientWidth;t.x*=e,t.y*=o}t.multiplyScalar(f.length()*a.panSpeed),n.copy(f).cross(a.object.up).setLength(t.x),n.add(o.copy(a.object.up).setLength(t.y)),a.object.position.add(n),a.target.add(n),a.staticMoving?Y.copy(x):Y.add(t.subVectors(x,Y).multiplyScalar(a.dynamicDampingFactor))}}}(),this.checkDistances=function(){a.noZoom&&a.noPan||(f.lengthSq()>a.maxDistance*a.maxDistance&&(a.object.position.addVectors(a.target,f.setLength(a.maxDistance)),D.copy(k)),f.lengthSq()<a.minDistance*a.minDistance&&(a.object.position.addVectors(a.target,f.setLength(a.minDistance)),D.copy(k)))},this.update=function(){f.subVectors(a.object.position,a.target),a.noRotate||a.rotateCamera(),a.noZoom||a.zoomCamera(),a.noPan||a.panCamera(),a.object.position.addVectors(a.target,f),a.object.isPerspectiveCamera?(a.checkDistances(),a.object.lookAt(a.target),u.distanceToSquared(a.object.position)>h&&(a.dispatchEvent(t),u.copy(a.object.position))):a.object.isOrthographicCamera&&(a.object.lookAt(a.target),(u.distanceToSquared(a.object.position)>h||g!==a.object.zoom)&&(a.dispatchEvent(t),u.copy(a.object.position),g=a.object.zoom))},this.reset=function(){y=s,b=s,a.target.copy(a.target0),a.object.position.copy(a.position0),a.object.up.copy(a.up0),a.object.zoom=a.zoom0,a.object.updateProjectionMatrix(),f.subVectors(a.object.position,a.target),a.object.lookAt(a.target),a.dispatchEvent(t),u.copy(a.object.position),g=a.object.zoom},this.dispose=function(){a.domElement.removeEventListener("contextmenu",q),a.domElement.removeEventListener("pointerdown",C),a.domElement.removeEventListener("pointercancel",T),a.domElement.removeEventListener("wheel",R),a.domElement.removeEventListener("pointermove",P),a.domElement.removeEventListener("pointerup",I),window.removeEventListener("keydown",O),window.removeEventListener("keyup",A)},this.domElement.addEventListener("contextmenu",q),this.domElement.addEventListener("pointerdown",C),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=c;