UNPKG

meta-client

Version:
1 lines 2.57 kB
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if('value'in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _three=require('three');function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function')}}var onMouseMove=null;var scope=void 0;var PointerLockControls=function(){function PointerLockControls(camera){_classCallCheck(this,PointerLockControls);scope=this;this.camera=camera;this.pitchObject=new _three.Object3D;this.pitchObject.add(camera);this.yawObject=new _three.Object3D;this.yawObject.add(this.pitchObject);onMouseMove=function onMouseMove(event){if(scope.enabled===false)return;var movementX=event.movementX||event.mozMovementX||event.webkitMovementX||0;var movementY=event.movementY||event.mozMovementY||event.webkitMovementY||0;scope.yawObject.rotation.y-=movementX*0.002;scope.pitchObject.rotation.x-=movementY*0.002;scope.pitchObject.rotation.x=Math.max(-Math.PI/2,Math.min(Math.PI/2,scope.pitchObject.rotation.x))};document.addEventListener('mousemove',onMouseMove,false);this.getDirection();this.enabled=false}_createClass(PointerLockControls,[{key:'disable',value:function disable(){this.enabled=false;scope.camera.rotation.set(0,scope.yawObject.rotation.y,0);this.pitchObject.rotation.set(0,0,0);this.yawObject.rotation.set(0,0,0);document.removeEventListener('mousemove',onMouseMove,false)}},{key:'enable',value:function enable(){this.enabled=true;this.pitchObject.rotation.x=scope.camera.rotation.x;this.pitchObject.rotation.z=0;this.yawObject.rotation.y=scope.camera.rotation.y;scope.camera.rotation.set(0,0,0);document.addEventListener('mousemove',onMouseMove,false)}},{key:'getObject',value:function getObject(){return this.yawObject}},{key:'getDirection',value:function getDirection(){var _this=this;var direction=new _three.Vector3(0,0,-1);var rotation=new _three.Euler(0,0,0,'YXZ');return function(v){rotation.set(_this.pitchObject.rotation.x,_this.yawObject.rotation.y,0);v.copy(direction).applyEuler(rotation);return v}}}]);return PointerLockControls}();exports.default=PointerLockControls;;