let width = app.renderer.domElement.width;
let height = app.renderer.domElement.height;
let panLimitX = width / 2;
let panLimitY = height / 2;
let movementX, movementY, offsetX, offsetY, prevX, prevY;
const pixelRatio = app.renderer.getPixelRatio();
const isMobileDevice = v3d.Detector.checkAndroid() || v3d.Detector.checkIOS();
const v3dCanvas = app.controls.domElement;
app.camera.setViewOffset(width, height, 0, 0, width, height);
window.addEventListener('resize', function() {
width = app.renderer.domElement.width;
height = app.renderer.domElement.height;
panLimitX = width / 2;
panLimitY = height / 2;
}, false);
if (isMobileDevice) {
v3dCanvas.addEventListener('touchstart', function() {
if (event.touches.length != 2)
return;
prevX = event.touches[0].pageX;
prevY = event.touches[0].pageY;
}, false);
v3dCanvas.addEventListener('touchmove', setCamOffsetMobile, false);
} else {
v3dCanvas.addEventListener('mousemove', setCamOffsetDesktop, false);
}
function setCamOffsetDesktop() {
if (event.which < 2)
return;
setCamOffset(event.movementX, event.movementY);
}
function setCamOffsetMobile() {
if (event.touches.length != 2)
return;
movementX = event.touches[0].pageX - prevX;
movementY = event.touches[0].pageY - prevY;
prevX = event.touches[0].pageX;
prevY = event.touches[0].pageY;
setCamOffset(movementX, movementY);
}
function setCamOffset(moveX, moveY) {
offsetX = app.camera.view.offsetX - moveX * pixelRatio;
offsetY = app.camera.view.offsetY - moveY * pixelRatio;
offsetX = v3d.Math.clamp(offsetX, -panLimitX, panLimitX);
offsetY = v3d.Math.clamp(offsetY, -panLimitY, panLimitY);
app.camera.setViewOffset(width, height, offsetX, offsetY, width, height);
}