Repository navigation
Expand file tree
/
Copy pathPointerLockControls.min.js
More file actions
1 lines (1 loc) · 2.01 KB
/
Copy pathPointerLockControls.min.js
File metadata and controls
1 lines (1 loc) · 2.01 KB
1
!function(){let e=new THREE.Euler(0,0,0,"YXZ"),t=new THREE.Vector3,n={type:"change"},o={type:"lock"},i={type:"unlock"},r=Math.PI/2;class c extends THREE.EventDispatcher{constructor(c,m){super(),void 0===m&&(console.warn('THREE.PointerLockControls: The second parameter "domElement" is now mandatory.'),m=document.body),this.domElement=m,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1;let s=this;function l(t){if(!1===s.isLocked)return;let o=t.movementX||t.mozMovementX||t.webkitMovementX||0,i=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.setFromQuaternion(c.quaternion),e.y-=.002*o*s.pointerSpeed,e.x-=.002*i*s.pointerSpeed,e.x=Math.max(r-s.maxPolarAngle,Math.min(r-s.minPolarAngle,e.x)),c.quaternion.setFromEuler(e),s.dispatchEvent(n)}function u(){s.domElement.ownerDocument.pointerLockElement===s.domElement?(s.dispatchEvent(o),s.isLocked=!0):(s.dispatchEvent(i),s.isLocked=!1)}function d(){console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}this.connect=function(){s.domElement.ownerDocument.addEventListener("mousemove",l),s.domElement.ownerDocument.addEventListener("pointerlockchange",u),s.domElement.ownerDocument.addEventListener("pointerlockerror",d)},this.disconnect=function(){s.domElement.ownerDocument.removeEventListener("mousemove",l),s.domElement.ownerDocument.removeEventListener("pointerlockchange",u),s.domElement.ownerDocument.removeEventListener("pointerlockerror",d)},this.dispose=function(){this.disconnect()},this.getObject=function(){return c},this.getDirection=function(){let e=new THREE.Vector3(0,0,-1);return function(t){return t.copy(e).applyQuaternion(c.quaternion)}}(),this.moveForward=function(e){t.setFromMatrixColumn(c.matrix,0),t.crossVectors(c.up,t),c.position.addScaledVector(t,e)},this.moveRight=function(e){t.setFromMatrixColumn(c.matrix,0),c.position.addScaledVector(t,e)},this.lock=function(){this.domElement.requestPointerLock()},this.unlock=function(){s.domElement.ownerDocument.exitPointerLock()},this.connect()}}THREE.PointerLockControls=c}();