mirror of
https://github.com/Doodle3D/Doodle3D-Slicer.git
synced 2024-11-23 05:57:57 +01:00
64 lines
1.3 KiB
JavaScript
64 lines
1.3 KiB
JavaScript
|
/**
|
||
|
* @author mrdoob / http://mrdoob.com/
|
||
|
*/
|
||
|
|
||
|
THREE.PointerLockControls = function ( camera ) {
|
||
|
|
||
|
var scope = this;
|
||
|
|
||
|
camera.rotation.set( 0, 0, 0 );
|
||
|
|
||
|
var pitchObject = new THREE.Object3D();
|
||
|
pitchObject.add( camera );
|
||
|
|
||
|
var yawObject = new THREE.Object3D();
|
||
|
yawObject.position.y = 10;
|
||
|
yawObject.add( pitchObject );
|
||
|
|
||
|
var PI_2 = Math.PI / 2;
|
||
|
|
||
|
var onMouseMove = function ( event ) {
|
||
|
|
||
|
if ( scope.enabled === false ) return;
|
||
|
|
||
|
var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
|
||
|
var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
|
||
|
|
||
|
yawObject.rotation.y -= movementX * 0.002;
|
||
|
pitchObject.rotation.x -= movementY * 0.002;
|
||
|
|
||
|
pitchObject.rotation.x = Math.max( - PI_2, Math.min( PI_2, pitchObject.rotation.x ) );
|
||
|
|
||
|
};
|
||
|
|
||
|
document.addEventListener( 'mousemove', onMouseMove, false );
|
||
|
|
||
|
this.enabled = false;
|
||
|
|
||
|
this.getObject = function () {
|
||
|
|
||
|
return yawObject;
|
||
|
|
||
|
};
|
||
|
|
||
|
this.getDirection = function() {
|
||
|
|
||
|
// assumes the camera itself is not rotated
|
||
|
|
||
|
var direction = new THREE.Vector3( 0, 0, -1 );
|
||
|
var rotation = new THREE.Euler( 0, 0, 0, "YXZ" );
|
||
|
|
||
|
return function( v ) {
|
||
|
|
||
|
rotation.set( pitchObject.rotation.x, yawObject.rotation.y, 0 );
|
||
|
|
||
|
v.copy( direction ).applyEuler( rotation );
|
||
|
|
||
|
return v;
|
||
|
|
||
|
}
|
||
|
|
||
|
}();
|
||
|
|
||
|
};
|