three-stdlib 2.5.11 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@babel/runtime/helpers/defineProperty"),e=require("three");function s(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=s(t);class o extends e.EventDispatcher{constructor(t,s){super(),i.default(this,"enabled",!0),i.default(this,"screen",{left:0,top:0,width:0,height:0}),i.default(this,"rotateSpeed",1),i.default(this,"zoomSpeed",1.2),i.default(this,"panSpeed",.3),i.default(this,"noRotate",!1),i.default(this,"noZoom",!1),i.default(this,"noPan",!1),i.default(this,"staticMoving",!1),i.default(this,"dynamicDampingFactor",.2),i.default(this,"minDistance",0),i.default(this,"maxDistance",1/0),i.default(this,"keys",["KeyA","KeyS","KeyD"]),i.default(this,"mouseButtons",{LEFT:e.MOUSE.ROTATE,MIDDLE:e.MOUSE.DOLLY,RIGHT:e.MOUSE.PAN}),i.default(this,"object",void 0),i.default(this,"domElement",void 0),i.default(this,"target",new e.Vector3),i.default(this,"STATE",{NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM_PAN:4}),i.default(this,"EPS",1e-6),i.default(this,"lastPosition",new e.Vector3),i.default(this,"lastZoom",1),i.default(this,"_state",this.STATE.NONE),i.default(this,"_keyState",this.STATE.NONE),i.default(this,"_eye",new e.Vector3),i.default(this,"_movePrev",new e.Vector2),i.default(this,"_moveCurr",new e.Vector2),i.default(this,"_lastAxis",new e.Vector3),i.default(this,"_lastAngle",0),i.default(this,"_zoomStart",new e.Vector2),i.default(this,"_zoomEnd",new e.Vector2),i.default(this,"_touchZoomDistanceStart",0),i.default(this,"_touchZoomDistanceEnd",0),i.default(this,"_panStart",new e.Vector2),i.default(this,"_panEnd",new e.Vector2),i.default(this,"target0",void 0),i.default(this,"position0",void 0),i.default(this,"up0",void 0),i.default(this,"zoom0",void 0),i.default(this,"changeEvent",{type:"change"}),i.default(this,"startEvent",{type:"start"}),i.default(this,"endEvent",{type:"end"}),i.default(this,"onScreenVector",new e.Vector2),i.default(this,"getMouseOnScreen",((t,e)=>(this.onScreenVector.set((t-this.screen.left)/this.screen.width,(e-this.screen.top)/this.screen.height),this.onScreenVector))),i.default(this,"onCircleVector",new e.Vector2),i.default(this,"getMouseOnCircle",((t,e)=>(this.onCircleVector.set((t-.5*this.screen.width-this.screen.left)/(.5*this.screen.width),(this.screen.height+2*(this.screen.top-e))/this.screen.width),this.onCircleVector))),i.default(this,"axis",new e.Vector3),i.default(this,"quaternion",new e.Quaternion),i.default(this,"eyeDirection",new e.Vector3),i.default(this,"objectUpDirection",new e.Vector3),i.default(this,"objectSidewaysDirection",new e.Vector3),i.default(this,"moveDirection",new e.Vector3),i.default(this,"angle",0),i.default(this,"rotateCamera",(()=>{this.moveDirection.set(this._moveCurr.x-this._movePrev.x,this._moveCurr.y-this._movePrev.y,0),this.angle=this.moveDirection.length(),this.angle?(this._eye.copy(this.object.position).sub(this.target),this.eyeDirection.copy(this._eye).normalize(),this.objectUpDirection.copy(this.object.up).normalize(),this.objectSidewaysDirection.crossVectors(this.objectUpDirection,this.eyeDirection).normalize(),this.objectUpDirection.setLength(this._moveCurr.y-this._movePrev.y),this.objectSidewaysDirection.setLength(this._moveCurr.x-this._movePrev.x),this.moveDirection.copy(this.objectUpDirection.add(this.objectSidewaysDirection)),this.axis.crossVectors(this.moveDirection,this._eye).normalize(),this.angle*=this.rotateSpeed,this.quaternion.setFromAxisAngle(this.axis,this.angle),this._eye.applyQuaternion(this.quaternion),this.object.up.applyQuaternion(this.quaternion),this._lastAxis.copy(this.axis),this._lastAngle=this.angle):!this.staticMoving&&this._lastAngle&&(this._lastAngle*=Math.sqrt(1-this.dynamicDampingFactor),this._eye.copy(this.object.position).sub(this.target),this.quaternion.setFromAxisAngle(this._lastAxis,this._lastAngle),this._eye.applyQuaternion(this.quaternion),this.object.up.applyQuaternion(this.quaternion)),this._movePrev.copy(this._moveCurr)})),i.default(this,"zoomCamera",(()=>{let t;this._state===this.STATE.TOUCH_ZOOM_PAN?(t=this._touchZoomDistanceStart/this._touchZoomDistanceEnd,this._touchZoomDistanceStart=this._touchZoomDistanceEnd,this.object.isPerspectiveCamera?this._eye.multiplyScalar(t):this.object.isOrthographicCamera?(this.object.zoom/=t,this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")):(t=1+(this._zoomEnd.y-this._zoomStart.y)*this.zoomSpeed,1!==t&&t>0&&(this.object.isPerspectiveCamera?this._eye.multiplyScalar(t):this.object.isOrthographicCamera?(this.object.zoom/=t,this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")),this.staticMoving?this._zoomStart.copy(this._zoomEnd):this._zoomStart.y+=(this._zoomEnd.y-this._zoomStart.y)*this.dynamicDampingFactor)})),i.default(this,"mouseChange",new e.Vector2),i.default(this,"objectUp",new e.Vector3),i.default(this,"pan",new e.Vector3),i.default(this,"panCamera",(()=>{if(this.domElement&&(this.mouseChange.copy(this._panEnd).sub(this._panStart),this.mouseChange.lengthSq())){if(this.object.isOrthographicCamera){const t=this.object,e=(t.right-t.left)/this.object.zoom/this.domElement.clientWidth,s=(t.top-t.bottom)/this.object.zoom/this.domElement.clientWidth;this.mouseChange.x*=e,this.mouseChange.y*=s}this.mouseChange.multiplyScalar(this._eye.length()*this.panSpeed),this.pan.copy(this._eye).cross(this.object.up).setLength(this.mouseChange.x),this.pan.add(this.objectUp.copy(this.object.up).setLength(this.mouseChange.y)),this.object.position.add(this.pan),this.target.add(this.pan),this.staticMoving?this._panStart.copy(this._panEnd):this._panStart.add(this.mouseChange.subVectors(this._panEnd,this._panStart).multiplyScalar(this.dynamicDampingFactor))}})),i.default(this,"checkDistances",(()=>{this.noZoom&&this.noPan||(this._eye.lengthSq()>this.maxDistance*this.maxDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.maxDistance)),this._zoomStart.copy(this._zoomEnd)),this._eye.lengthSq()<this.minDistance*this.minDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.minDistance)),this._zoomStart.copy(this._zoomEnd)))})),i.default(this,"handleResize",(()=>{if(!this.domElement)return;const t=this.domElement.getBoundingClientRect(),e=this.domElement.ownerDocument.documentElement;this.screen.left=t.left+window.pageXOffset-e.clientLeft,this.screen.top=t.top+window.pageYOffset-e.clientTop,this.screen.width=t.width,this.screen.height=t.height})),i.default(this,"update",(()=>{this._eye.subVectors(this.object.position,this.target),this.noRotate||this.rotateCamera(),this.noZoom||this.zoomCamera(),this.noPan||this.panCamera(),this.object.position.addVectors(this.target,this._eye),this.object.isPerspectiveCamera?(this.checkDistances(),this.object.lookAt(this.target),this.lastPosition.distanceToSquared(this.object.position)>this.EPS&&(this.dispatchEvent(this.changeEvent),this.lastPosition.copy(this.object.position))):this.object.isOrthographicCamera?(this.object.lookAt(this.target),(this.lastPosition.distanceToSquared(this.object.position)>this.EPS||this.lastZoom!==this.object.zoom)&&(this.dispatchEvent(this.changeEvent),this.lastPosition.copy(this.object.position),this.lastZoom=this.object.zoom)):console.warn("THREE.TrackballControls: Unsupported camera type")})),i.default(this,"reset",(()=>{this._state=this.STATE.NONE,this._keyState=this.STATE.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.up.copy(this.up0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this._eye.subVectors(this.object.position,this.target),this.object.lookAt(this.target),this.dispatchEvent(this.changeEvent),this.lastPosition.copy(this.object.position),this.lastZoom=this.object.zoom})),i.default(this,"keydown",(t=>{!1!==this.enabled&&(window.removeEventListener("keydown",this.keydown),this._keyState===this.STATE.NONE&&(t.code!==this.keys[this.STATE.ROTATE]||this.noRotate?t.code!==this.keys[this.STATE.ZOOM]||this.noZoom?t.code!==this.keys[this.STATE.PAN]||this.noPan||(this._keyState=this.STATE.PAN):this._keyState=this.STATE.ZOOM:this._keyState=this.STATE.ROTATE))})),i.default(this,"onPointerDown",(t=>{if(!1!==this.enabled)switch(t.pointerType){case"mouse":case"pen":this.onMouseDown(t)}})),i.default(this,"onPointerMove",(t=>{if(!1!==this.enabled)switch(t.pointerType){case"mouse":case"pen":this.onMouseMove(t)}})),i.default(this,"onPointerUp",(t=>{if(!1!==this.enabled)switch(t.pointerType){case"mouse":case"pen":this.onMouseUp()}})),i.default(this,"keyup",(()=>{!1!==this.enabled&&(this._keyState=this.STATE.NONE,window.addEventListener("keydown",this.keydown))})),i.default(this,"onMouseDown",(t=>{if(!this.domElement)return;if(this._state===this.STATE.NONE)switch(t.button){case this.mouseButtons.LEFT:this._state=this.STATE.ROTATE;break;case this.mouseButtons.MIDDLE:this._state=this.STATE.ZOOM;break;case this.mouseButtons.RIGHT:this._state=this.STATE.PAN;break;default:this._state=this.STATE.NONE}const e=this._keyState!==this.STATE.NONE?this._keyState:this._state;e!==this.STATE.ROTATE||this.noRotate?e!==this.STATE.ZOOM||this.noZoom?e!==this.STATE.PAN||this.noPan||(this._panStart.copy(this.getMouseOnScreen(t.pageX,t.pageY)),this._panEnd.copy(this._panStart)):(this._zoomStart.copy(this.getMouseOnScreen(t.pageX,t.pageY)),this._zoomEnd.copy(this._zoomStart)):(this._moveCurr.copy(this.getMouseOnCircle(t.pageX,t.pageY)),this._movePrev.copy(this._moveCurr)),this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp),this.dispatchEvent(this.startEvent)})),i.default(this,"onMouseMove",(t=>{if(!1===this.enabled)return;const e=this._keyState!==this.STATE.NONE?this._keyState:this._state;e!==this.STATE.ROTATE||this.noRotate?e!==this.STATE.ZOOM||this.noZoom?e!==this.STATE.PAN||this.noPan||this._panEnd.copy(this.getMouseOnScreen(t.pageX,t.pageY)):this._zoomEnd.copy(this.getMouseOnScreen(t.pageX,t.pageY)):(this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this.getMouseOnCircle(t.pageX,t.pageY)))})),i.default(this,"onMouseUp",(()=>{this.domElement&&!1!==this.enabled&&(this._state=this.STATE.NONE,this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp),this.dispatchEvent(this.endEvent))})),i.default(this,"mousewheel",(t=>{if(!1!==this.enabled&&!0!==this.noZoom){switch(t.preventDefault(),t.deltaMode){case 2:this._zoomStart.y-=.025*t.deltaY;break;case 1:this._zoomStart.y-=.01*t.deltaY;break;default:this._zoomStart.y-=25e-5*t.deltaY}this.dispatchEvent(this.startEvent),this.dispatchEvent(this.endEvent)}})),i.default(this,"touchstart",(t=>{if(!1!==this.enabled){switch(t.preventDefault(),t.touches.length){case 1:this._state=this.STATE.TOUCH_ROTATE,this._moveCurr.copy(this.getMouseOnCircle(t.touches[0].pageX,t.touches[0].pageY)),this._movePrev.copy(this._moveCurr);break;default:this._state=this.STATE.TOUCH_ZOOM_PAN;const e=t.touches[0].pageX-t.touches[1].pageX,s=t.touches[0].pageY-t.touches[1].pageY;this._touchZoomDistanceEnd=this._touchZoomDistanceStart=Math.sqrt(e*e+s*s);const i=(t.touches[0].pageX+t.touches[1].pageX)/2,o=(t.touches[0].pageY+t.touches[1].pageY)/2;this._panStart.copy(this.getMouseOnScreen(i,o)),this._panEnd.copy(this._panStart)}this.dispatchEvent(this.startEvent)}})),i.default(this,"touchmove",(t=>{if(!1!==this.enabled)switch(t.preventDefault(),t.touches.length){case 1:this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this.getMouseOnCircle(t.touches[0].pageX,t.touches[0].pageY));break;default:const e=t.touches[0].pageX-t.touches[1].pageX,s=t.touches[0].pageY-t.touches[1].pageY;this._touchZoomDistanceEnd=Math.sqrt(e*e+s*s);const i=(t.touches[0].pageX+t.touches[1].pageX)/2,o=(t.touches[0].pageY+t.touches[1].pageY)/2;this._panEnd.copy(this.getMouseOnScreen(i,o))}})),i.default(this,"touchend",(t=>{if(!1!==this.enabled){switch(t.touches.length){case 0:this._state=this.STATE.NONE;break;case 1:this._state=this.STATE.TOUCH_ROTATE,this._moveCurr.copy(this.getMouseOnCircle(t.touches[0].pageX,t.touches[0].pageY)),this._movePrev.copy(this._moveCurr)}this.dispatchEvent(this.endEvent)}})),i.default(this,"contextmenu",(t=>{!1!==this.enabled&&t.preventDefault()})),i.default(this,"connect",(t=>{t===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.domElement=t,this.domElement.addEventListener("contextmenu",this.contextmenu),this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("wheel",this.mousewheel),this.domElement.addEventListener("touchstart",this.touchstart),this.domElement.addEventListener("touchend",this.touchend),this.domElement.addEventListener("touchmove",this.touchmove),this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp),window.addEventListener("keydown",this.keydown),window.addEventListener("keyup",this.keyup),this.handleResize()})),i.default(this,"dispose",(()=>{this.domElement&&(this.domElement.removeEventListener("contextmenu",this.contextmenu),this.domElement.removeEventListener("pointerdown",this.onPointerDown),this.domElement.removeEventListener("wheel",this.mousewheel),this.domElement.removeEventListener("touchstart",this.touchstart),this.domElement.removeEventListener("touchend",this.touchend),this.domElement.removeEventListener("touchmove",this.touchmove),this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp),window.removeEventListener("keydown",this.keydown),window.removeEventListener("keyup",this.keyup))})),this.object=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.up0=this.object.up.clone(),this.zoom0=this.object.zoom,void 0!==s&&this.connect(s),this.update()}}exports.TrackballControls=o;
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@babel/runtime/helpers/defineProperty"),e=require("three");function s(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=s(t);class o extends e.EventDispatcher{constructor(t,s){super(),i.default(this,"enabled",!0),i.default(this,"screen",{left:0,top:0,width:0,height:0}),i.default(this,"rotateSpeed",1),i.default(this,"zoomSpeed",1.2),i.default(this,"panSpeed",.3),i.default(this,"noRotate",!1),i.default(this,"noZoom",!1),i.default(this,"noPan",!1),i.default(this,"staticMoving",!1),i.default(this,"dynamicDampingFactor",.2),i.default(this,"minDistance",0),i.default(this,"maxDistance",1/0),i.default(this,"keys",["KeyA","KeyS","KeyD"]),i.default(this,"mouseButtons",{LEFT:e.MOUSE.ROTATE,MIDDLE:e.MOUSE.DOLLY,RIGHT:e.MOUSE.PAN}),i.default(this,"object",void 0),i.default(this,"domElement",void 0),i.default(this,"cursorZoom",!1),i.default(this,"target",new e.Vector3),i.default(this,"mousePosition",new e.Vector2),i.default(this,"STATE",{NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM_PAN:4}),i.default(this,"EPS",1e-6),i.default(this,"lastZoom",1),i.default(this,"lastPosition",new e.Vector3),i.default(this,"cursorVector",new e.Vector3),i.default(this,"targetVector",new e.Vector3),i.default(this,"_state",this.STATE.NONE),i.default(this,"_keyState",this.STATE.NONE),i.default(this,"_eye",new e.Vector3),i.default(this,"_movePrev",new e.Vector2),i.default(this,"_moveCurr",new e.Vector2),i.default(this,"_lastAxis",new e.Vector3),i.default(this,"_lastAngle",0),i.default(this,"_zoomStart",new e.Vector2),i.default(this,"_zoomEnd",new e.Vector2),i.default(this,"_touchZoomDistanceStart",0),i.default(this,"_touchZoomDistanceEnd",0),i.default(this,"_panStart",new e.Vector2),i.default(this,"_panEnd",new e.Vector2),i.default(this,"target0",void 0),i.default(this,"position0",void 0),i.default(this,"up0",void 0),i.default(this,"zoom0",void 0),i.default(this,"changeEvent",{type:"change"}),i.default(this,"startEvent",{type:"start"}),i.default(this,"endEvent",{type:"end"}),i.default(this,"onScreenVector",new e.Vector2),i.default(this,"getMouseOnScreen",((t,e)=>(this.onScreenVector.set((t-this.screen.left)/this.screen.width,(e-this.screen.top)/this.screen.height),this.onScreenVector))),i.default(this,"onCircleVector",new e.Vector2),i.default(this,"getMouseOnCircle",((t,e)=>(this.onCircleVector.set((t-.5*this.screen.width-this.screen.left)/(.5*this.screen.width),(this.screen.height+2*(this.screen.top-e))/this.screen.width),this.onCircleVector))),i.default(this,"axis",new e.Vector3),i.default(this,"quaternion",new e.Quaternion),i.default(this,"eyeDirection",new e.Vector3),i.default(this,"objectUpDirection",new e.Vector3),i.default(this,"objectSidewaysDirection",new e.Vector3),i.default(this,"moveDirection",new e.Vector3),i.default(this,"angle",0),i.default(this,"rotateCamera",(()=>{this.moveDirection.set(this._moveCurr.x-this._movePrev.x,this._moveCurr.y-this._movePrev.y,0),this.angle=this.moveDirection.length(),this.angle?(this._eye.copy(this.object.position).sub(this.target),this.eyeDirection.copy(this._eye).normalize(),this.objectUpDirection.copy(this.object.up).normalize(),this.objectSidewaysDirection.crossVectors(this.objectUpDirection,this.eyeDirection).normalize(),this.objectUpDirection.setLength(this._moveCurr.y-this._movePrev.y),this.objectSidewaysDirection.setLength(this._moveCurr.x-this._movePrev.x),this.moveDirection.copy(this.objectUpDirection.add(this.objectSidewaysDirection)),this.axis.crossVectors(this.moveDirection,this._eye).normalize(),this.angle*=this.rotateSpeed,this.quaternion.setFromAxisAngle(this.axis,this.angle),this._eye.applyQuaternion(this.quaternion),this.object.up.applyQuaternion(this.quaternion),this._lastAxis.copy(this.axis),this._lastAngle=this.angle):!this.staticMoving&&this._lastAngle&&(this._lastAngle*=Math.sqrt(1-this.dynamicDampingFactor),this._eye.copy(this.object.position).sub(this.target),this.quaternion.setFromAxisAngle(this._lastAxis,this._lastAngle),this._eye.applyQuaternion(this.quaternion),this.object.up.applyQuaternion(this.quaternion)),this._movePrev.copy(this._moveCurr)})),i.default(this,"zoomCamera",(()=>{let t;if(this._state===this.STATE.TOUCH_ZOOM_PAN)t=this._touchZoomDistanceStart/this._touchZoomDistanceEnd,this._touchZoomDistanceStart=this._touchZoomDistanceEnd,this.object.isPerspectiveCamera?this._eye.multiplyScalar(t):this.object.isOrthographicCamera?(this.object.zoom/=t,this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type");else if(t=1+(this._zoomEnd.y-this._zoomStart.y)*this.zoomSpeed,1!==t&&t>0&&(this.object.isPerspectiveCamera?this._eye.multiplyScalar(t):this.object.isOrthographicCamera?(this.object.zoom/=t,this.object.updateProjectionMatrix()):console.warn("THREE.TrackballControls: Unsupported camera type")),this.staticMoving?this._zoomStart.copy(this._zoomEnd):this._zoomStart.y+=(this._zoomEnd.y-this._zoomStart.y)*this.dynamicDampingFactor,this.cursorZoom){this.targetVector.copy(this.target).project(this.object);let e=this.cursorVector.set(this.mousePosition.x,this.mousePosition.y,this.targetVector.z).unproject(this.object);this.target.lerpVectors(e,this.target,t)}})),i.default(this,"mouseChange",new e.Vector2),i.default(this,"objectUp",new e.Vector3),i.default(this,"pan",new e.Vector3),i.default(this,"panCamera",(()=>{if(this.domElement&&(this.mouseChange.copy(this._panEnd).sub(this._panStart),this.mouseChange.lengthSq())){if(this.object.isOrthographicCamera){const t=this.object,e=(t.right-t.left)/this.object.zoom/this.domElement.clientWidth,s=(t.top-t.bottom)/this.object.zoom/this.domElement.clientWidth;this.mouseChange.x*=e,this.mouseChange.y*=s}this.mouseChange.multiplyScalar(this._eye.length()*this.panSpeed),this.pan.copy(this._eye).cross(this.object.up).setLength(this.mouseChange.x),this.pan.add(this.objectUp.copy(this.object.up).setLength(this.mouseChange.y)),this.object.position.add(this.pan),this.target.add(this.pan),this.staticMoving?this._panStart.copy(this._panEnd):this._panStart.add(this.mouseChange.subVectors(this._panEnd,this._panStart).multiplyScalar(this.dynamicDampingFactor))}})),i.default(this,"checkDistances",(()=>{this.noZoom&&this.noPan||(this._eye.lengthSq()>this.maxDistance*this.maxDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.maxDistance)),this._zoomStart.copy(this._zoomEnd)),this._eye.lengthSq()<this.minDistance*this.minDistance&&(this.object.position.addVectors(this.target,this._eye.setLength(this.minDistance)),this._zoomStart.copy(this._zoomEnd)))})),i.default(this,"handleResize",(()=>{if(!this.domElement)return;const t=this.domElement.getBoundingClientRect(),e=this.domElement.ownerDocument.documentElement;this.screen.left=t.left+window.pageXOffset-e.clientLeft,this.screen.top=t.top+window.pageYOffset-e.clientTop,this.screen.width=t.width,this.screen.height=t.height})),i.default(this,"update",(()=>{this._eye.subVectors(this.object.position,this.target),this.noRotate||this.rotateCamera(),this.noZoom||this.zoomCamera(),this.noPan||this.panCamera(),this.object.position.addVectors(this.target,this._eye),this.object.isPerspectiveCamera?(this.checkDistances(),this.object.lookAt(this.target),this.lastPosition.distanceToSquared(this.object.position)>this.EPS&&(this.dispatchEvent(this.changeEvent),this.lastPosition.copy(this.object.position))):this.object.isOrthographicCamera?(this.object.lookAt(this.target),(this.lastPosition.distanceToSquared(this.object.position)>this.EPS||this.lastZoom!==this.object.zoom)&&(this.dispatchEvent(this.changeEvent),this.lastPosition.copy(this.object.position),this.lastZoom=this.object.zoom)):console.warn("THREE.TrackballControls: Unsupported camera type")})),i.default(this,"reset",(()=>{this._state=this.STATE.NONE,this._keyState=this.STATE.NONE,this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.up.copy(this.up0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this._eye.subVectors(this.object.position,this.target),this.object.lookAt(this.target),this.dispatchEvent(this.changeEvent),this.lastPosition.copy(this.object.position),this.lastZoom=this.object.zoom})),i.default(this,"keydown",(t=>{!1!==this.enabled&&(window.removeEventListener("keydown",this.keydown),this._keyState===this.STATE.NONE&&(t.code!==this.keys[this.STATE.ROTATE]||this.noRotate?t.code!==this.keys[this.STATE.ZOOM]||this.noZoom?t.code!==this.keys[this.STATE.PAN]||this.noPan||(this._keyState=this.STATE.PAN):this._keyState=this.STATE.ZOOM:this._keyState=this.STATE.ROTATE))})),i.default(this,"onPointerDown",(t=>{if(!1!==this.enabled)switch(t.pointerType){case"mouse":case"pen":this.onMouseDown(t)}})),i.default(this,"onPointerMove",(t=>{if(!1!==this.enabled)switch(t.pointerType){case"mouse":case"pen":this.onMouseMove(t)}})),i.default(this,"onPointerUp",(t=>{if(!1!==this.enabled)switch(t.pointerType){case"mouse":case"pen":this.onMouseUp()}})),i.default(this,"keyup",(()=>{!1!==this.enabled&&(this._keyState=this.STATE.NONE,window.addEventListener("keydown",this.keydown))})),i.default(this,"onMouseDown",(t=>{if(!this.domElement)return;if(this._state===this.STATE.NONE)switch(t.button){case this.mouseButtons.LEFT:this._state=this.STATE.ROTATE;break;case this.mouseButtons.MIDDLE:this._state=this.STATE.ZOOM;break;case this.mouseButtons.RIGHT:this._state=this.STATE.PAN;break;default:this._state=this.STATE.NONE}const e=this._keyState!==this.STATE.NONE?this._keyState:this._state;e!==this.STATE.ROTATE||this.noRotate?e!==this.STATE.ZOOM||this.noZoom?e!==this.STATE.PAN||this.noPan||(this._panStart.copy(this.getMouseOnScreen(t.pageX,t.pageY)),this._panEnd.copy(this._panStart)):(this._zoomStart.copy(this.getMouseOnScreen(t.pageX,t.pageY)),this._zoomEnd.copy(this._zoomStart)):(this._moveCurr.copy(this.getMouseOnCircle(t.pageX,t.pageY)),this._movePrev.copy(this._moveCurr)),this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp),this.dispatchEvent(this.startEvent)})),i.default(this,"onMouseMove",(t=>{if(!1===this.enabled)return;const e=this._keyState!==this.STATE.NONE?this._keyState:this._state;e!==this.STATE.ROTATE||this.noRotate?e!==this.STATE.ZOOM||this.noZoom?e!==this.STATE.PAN||this.noPan||this._panEnd.copy(this.getMouseOnScreen(t.pageX,t.pageY)):this._zoomEnd.copy(this.getMouseOnScreen(t.pageX,t.pageY)):(this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this.getMouseOnCircle(t.pageX,t.pageY)))})),i.default(this,"onMouseUp",(()=>{this.domElement&&!1!==this.enabled&&(this._state=this.STATE.NONE,this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp),this.dispatchEvent(this.endEvent))})),i.default(this,"mousewheel",(t=>{if(!1!==this.enabled&&!0!==this.noZoom){switch(t.preventDefault(),t.deltaMode){case 2:this._zoomStart.y-=.025*t.deltaY;break;case 1:this._zoomStart.y-=.01*t.deltaY;break;default:this._zoomStart.y-=25e-5*t.deltaY}this.mousePosition.x=t.offsetX/this.screen.width*2-1,this.mousePosition.y=-t.offsetY/this.screen.height*2+1,this.dispatchEvent(this.startEvent),this.dispatchEvent(this.endEvent)}})),i.default(this,"touchstart",(t=>{if(!1!==this.enabled){switch(t.preventDefault(),t.touches.length){case 1:this._state=this.STATE.TOUCH_ROTATE,this._moveCurr.copy(this.getMouseOnCircle(t.touches[0].pageX,t.touches[0].pageY)),this._movePrev.copy(this._moveCurr);break;default:this._state=this.STATE.TOUCH_ZOOM_PAN;const e=t.touches[0].pageX-t.touches[1].pageX,s=t.touches[0].pageY-t.touches[1].pageY;this._touchZoomDistanceEnd=this._touchZoomDistanceStart=Math.sqrt(e*e+s*s);const i=(t.touches[0].pageX+t.touches[1].pageX)/2,o=(t.touches[0].pageY+t.touches[1].pageY)/2;this._panStart.copy(this.getMouseOnScreen(i,o)),this._panEnd.copy(this._panStart)}this.dispatchEvent(this.startEvent)}})),i.default(this,"touchmove",(t=>{if(!1!==this.enabled)switch(t.preventDefault(),t.touches.length){case 1:this._movePrev.copy(this._moveCurr),this._moveCurr.copy(this.getMouseOnCircle(t.touches[0].pageX,t.touches[0].pageY));break;default:const e=t.touches[0].pageX-t.touches[1].pageX,s=t.touches[0].pageY-t.touches[1].pageY;this._touchZoomDistanceEnd=Math.sqrt(e*e+s*s);const i=(t.touches[0].pageX+t.touches[1].pageX)/2,o=(t.touches[0].pageY+t.touches[1].pageY)/2;this._panEnd.copy(this.getMouseOnScreen(i,o))}})),i.default(this,"touchend",(t=>{if(!1!==this.enabled){switch(t.touches.length){case 0:this._state=this.STATE.NONE;break;case 1:this._state=this.STATE.TOUCH_ROTATE,this._moveCurr.copy(this.getMouseOnCircle(t.touches[0].pageX,t.touches[0].pageY)),this._movePrev.copy(this._moveCurr)}this.dispatchEvent(this.endEvent)}})),i.default(this,"contextmenu",(t=>{!1!==this.enabled&&t.preventDefault()})),i.default(this,"connect",(t=>{t===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.domElement=t,this.domElement.addEventListener("contextmenu",this.contextmenu),this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("wheel",this.mousewheel),this.domElement.addEventListener("touchstart",this.touchstart),this.domElement.addEventListener("touchend",this.touchend),this.domElement.addEventListener("touchmove",this.touchmove),this.domElement.ownerDocument.addEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this.onPointerUp),window.addEventListener("keydown",this.keydown),window.addEventListener("keyup",this.keyup),this.handleResize()})),i.default(this,"dispose",(()=>{this.domElement&&(this.domElement.removeEventListener("contextmenu",this.contextmenu),this.domElement.removeEventListener("pointerdown",this.onPointerDown),this.domElement.removeEventListener("wheel",this.mousewheel),this.domElement.removeEventListener("touchstart",this.touchstart),this.domElement.removeEventListener("touchend",this.touchend),this.domElement.removeEventListener("touchmove",this.touchmove),this.domElement.ownerDocument.removeEventListener("pointermove",this.onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this.onPointerUp),window.removeEventListener("keydown",this.keydown),window.removeEventListener("keyup",this.keyup))})),this.object=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.up0=this.object.up.clone(),this.zoom0=this.object.zoom,void 0!==s&&this.connect(s),this.update()}}exports.TrackballControls=o;
|
@@ -25,11 +25,15 @@ declare class TrackballControls extends EventDispatcher {
|
|
25
25
|
};
|
26
26
|
object: PerspectiveCamera | OrthographicCamera;
|
27
27
|
domElement: HTMLElement | undefined;
|
28
|
+
cursorZoom: boolean;
|
28
29
|
private target;
|
30
|
+
private mousePosition;
|
29
31
|
private STATE;
|
30
32
|
private EPS;
|
31
|
-
private lastPosition;
|
32
33
|
private lastZoom;
|
34
|
+
private lastPosition;
|
35
|
+
private cursorVector;
|
36
|
+
private targetVector;
|
33
37
|
private _state;
|
34
38
|
private _keyState;
|
35
39
|
private _eye;
|
@@ -54,8 +54,12 @@ class TrackballControls extends EventDispatcher {
|
|
54
54
|
|
55
55
|
_defineProperty(this, "domElement", void 0);
|
56
56
|
|
57
|
+
_defineProperty(this, "cursorZoom", false);
|
58
|
+
|
57
59
|
_defineProperty(this, "target", new Vector3());
|
58
60
|
|
61
|
+
_defineProperty(this, "mousePosition", new Vector2());
|
62
|
+
|
59
63
|
_defineProperty(this, "STATE", {
|
60
64
|
NONE: -1,
|
61
65
|
ROTATE: 0,
|
@@ -67,9 +71,13 @@ class TrackballControls extends EventDispatcher {
|
|
67
71
|
|
68
72
|
_defineProperty(this, "EPS", 0.000001);
|
69
73
|
|
74
|
+
_defineProperty(this, "lastZoom", 1);
|
75
|
+
|
70
76
|
_defineProperty(this, "lastPosition", new Vector3());
|
71
77
|
|
72
|
-
_defineProperty(this, "
|
78
|
+
_defineProperty(this, "cursorVector", new Vector3());
|
79
|
+
|
80
|
+
_defineProperty(this, "targetVector", new Vector3());
|
73
81
|
|
74
82
|
_defineProperty(this, "_state", this.STATE.NONE);
|
75
83
|
|
@@ -219,6 +227,14 @@ class TrackballControls extends EventDispatcher {
|
|
219
227
|
} else {
|
220
228
|
this._zoomStart.y += (this._zoomEnd.y - this._zoomStart.y) * this.dynamicDampingFactor;
|
221
229
|
}
|
230
|
+
|
231
|
+
if (this.cursorZoom) {
|
232
|
+
//determine 3D position of mouse cursor (on target plane)
|
233
|
+
this.targetVector.copy(this.target).project(this.object);
|
234
|
+
let worldPos = this.cursorVector.set(this.mousePosition.x, this.mousePosition.y, this.targetVector.z).unproject(this.object); //adjust target point so that "point" stays in place
|
235
|
+
|
236
|
+
this.target.lerpVectors(worldPos, this.target, factor);
|
237
|
+
}
|
222
238
|
}
|
223
239
|
});
|
224
240
|
|
@@ -483,6 +499,8 @@ class TrackballControls extends EventDispatcher {
|
|
483
499
|
break;
|
484
500
|
}
|
485
501
|
|
502
|
+
this.mousePosition.x = event.offsetX / this.screen.width * 2 - 1;
|
503
|
+
this.mousePosition.y = -(event.offsetY / this.screen.height) * 2 + 1;
|
486
504
|
this.dispatchEvent(this.startEvent);
|
487
505
|
this.dispatchEvent(this.endEvent);
|
488
506
|
});
|