Three.js: fix rotate and pan on HiDPI devices.

pull/409/head
William D. Jones 2017-08-26 10:01:11 -04:00 committed by whitequark
parent 26c8cdcb37
commit 6f9358ae95
1 changed files with 6 additions and 5 deletions

View File

@ -155,8 +155,8 @@ SolvespaceControls = function(object, domElement) {
switch (event.button) { switch (event.button) {
case 0: case 0:
_rotateCur.set(event.screenX / window.devicePixelRatio, _rotateCur.set(event.screenX,
event.screenY / window.devicePixelRatio); event.screenY);
_rotatePrev.copy(_rotateCur); _rotatePrev.copy(_rotateCur);
document.addEventListener('mousemove', mousemove_rotate, false); document.addEventListener('mousemove', mousemove_rotate, false);
document.addEventListener('mouseup', mouseup, false); document.addEventListener('mouseup', mouseup, false);
@ -184,8 +184,8 @@ SolvespaceControls = function(object, domElement) {
} }
function mousemove_rotate(event) { function mousemove_rotate(event) {
_rotateCur.set(event.screenX / window.devicePixelRatio, _rotateCur.set(event.screenX,
event.screenY / window.devicePixelRatio); event.screenY);
var diff = new THREE.Vector2().subVectors(_rotateCur, _rotatePrev) var diff = new THREE.Vector2().subVectors(_rotateCur, _rotatePrev)
.multiplyScalar(1 / object.zoomScale); .multiplyScalar(1 / object.zoomScale);
object.rotate(-0.3 * Math.PI / 180 * diff.x * object.zoomScale, object.rotate(-0.3 * Math.PI / 180 * diff.x * object.zoomScale,
@ -199,7 +199,7 @@ SolvespaceControls = function(object, domElement) {
_offsetCur.set(event.screenX / window.devicePixelRatio, _offsetCur.set(event.screenX / window.devicePixelRatio,
event.screenY / window.devicePixelRatio); event.screenY / window.devicePixelRatio);
var diff = new THREE.Vector2().subVectors(_offsetCur, _offsetPrev) var diff = new THREE.Vector2().subVectors(_offsetCur, _offsetPrev)
.multiplyScalar(1 / object.zoomScale); .multiplyScalar(window.devicePixelRatio / object.zoomScale);
object.offsetProj(diff.x, -diff.y); object.offsetProj(diff.x, -diff.y);
_changed = true; _changed = true;
_offsetPrev.copy(_offsetCur); _offsetPrev.copy(_offsetCur);
@ -507,3 +507,4 @@ solvespace = function(obj, params) {
return new THREE.LineSegments(geometry, material); return new THREE.LineSegments(geometry, material);
} }
}; };