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, "lastZoom", 1);
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
  });