mirror of
https://github.com/Doodle3D/Doodle3D-Slicer.git
synced 2024-12-25 12:23:49 +01:00
56 lines
1.3 KiB
JavaScript
56 lines
1.3 KiB
JavaScript
|
/**
|
||
|
* @author dmarcos / http://github.com/dmarcos
|
||
|
*
|
||
|
* This controls allow to change the orientation of the camera using the mouse
|
||
|
*/
|
||
|
|
||
|
THREE.MouseControls = function ( object ) {
|
||
|
|
||
|
var scope = this;
|
||
|
var PI_2 = Math.PI / 2;
|
||
|
var mouseQuat = {
|
||
|
x: new THREE.Quaternion(),
|
||
|
y: new THREE.Quaternion()
|
||
|
};
|
||
|
var object = object;
|
||
|
var xVector = new THREE.Vector3( 1, 0, 0 );
|
||
|
var yVector = new THREE.Vector3( 0, 1, 0 );
|
||
|
|
||
|
var onMouseMove = function ( event ) {
|
||
|
|
||
|
if ( scope.enabled === false ) return;
|
||
|
|
||
|
var orientation = scope.orientation;
|
||
|
|
||
|
var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
|
||
|
var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
|
||
|
|
||
|
orientation.y += movementX * 0.0025;
|
||
|
orientation.x += movementY * 0.0025;
|
||
|
|
||
|
orientation.x = Math.max( - PI_2, Math.min( PI_2, orientation.x ) );
|
||
|
|
||
|
};
|
||
|
|
||
|
this.enabled = true;
|
||
|
|
||
|
this.orientation = {
|
||
|
x: 0,
|
||
|
y: 0,
|
||
|
};
|
||
|
|
||
|
this.update = function() {
|
||
|
|
||
|
if ( this.enabled === false ) return;
|
||
|
|
||
|
mouseQuat.x.setFromAxisAngle( xVector, this.orientation.x );
|
||
|
mouseQuat.y.setFromAxisAngle( yVector, this.orientation.y );
|
||
|
object.quaternion.copy(mouseQuat.y).multiply(mouseQuat.x)
|
||
|
return;
|
||
|
|
||
|
};
|
||
|
|
||
|
document.addEventListener( 'mousemove', onMouseMove, false );
|
||
|
|
||
|
};
|