mobile pinch zoom and layer slider improvements
This commit is contained in:
parent
43da90e480
commit
3644169176
4 changed files with 21 additions and 19 deletions
|
|
@ -5,6 +5,7 @@ Full docs @ https://docs.grid.space/projects/kiri-moto
|
|||
|
||||
# Release 3.6
|
||||
|
||||
* mobile pinch zoom and layer slider improvements
|
||||
* update CLI to work in CAM mode and add working samples
|
||||
* improved FDM preview rendering speed and reduced memory usage
|
||||
* threaded task and message passing performance improvements
|
||||
|
|
|
|||
|
|
@ -234,18 +234,14 @@ moto.Orbit = function (object, domElement, notify, slider) {
|
|||
return pos;
|
||||
};
|
||||
|
||||
this.dollyIn = function (dollyScale) {
|
||||
if (dollyScale === undefined) {
|
||||
dollyScale = getZoomScale();
|
||||
}
|
||||
scale *= dollyScale;
|
||||
this.dollyIn = function (factor = 1) {
|
||||
let dollyScale = getZoomScale(factor);
|
||||
scale = scale * dollyScale;
|
||||
};
|
||||
|
||||
this.dollyOut = function (dollyScale) {
|
||||
if (dollyScale === undefined) {
|
||||
dollyScale = getZoomScale();
|
||||
}
|
||||
scale /= dollyScale;
|
||||
this.dollyOut = function (factor = 1) {
|
||||
let dollyScale = getZoomScale(factor);
|
||||
scale = scale / dollyScale;
|
||||
};
|
||||
|
||||
this.update = function () {
|
||||
|
|
@ -338,8 +334,8 @@ moto.Orbit = function (object, domElement, notify, slider) {
|
|||
return theta
|
||||
};
|
||||
|
||||
function getZoomScale() {
|
||||
return Math.pow(0.95, scope.zoomSpeed);
|
||||
function getZoomScale(factor = 1) {
|
||||
return Math.pow(0.95, factor * scope.zoomSpeed);
|
||||
}
|
||||
|
||||
function onMouseDown(event) {
|
||||
|
|
@ -561,6 +557,7 @@ moto.Orbit = function (object, domElement, notify, slider) {
|
|||
case 2: // two-fingered touch: dolly
|
||||
if (scope.noZoom === true) return;
|
||||
if (state !== STATE.TOUCH_DOLLY) return;
|
||||
|
||||
let dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;
|
||||
let dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;
|
||||
let distance = Math.sqrt(dx * dx + dy * dy);
|
||||
|
|
@ -574,15 +571,15 @@ moto.Orbit = function (object, domElement, notify, slider) {
|
|||
dollyEnd.set(0, distance);
|
||||
dollyDelta.subVectors(dollyEnd, dollyStart);
|
||||
|
||||
if (touchSlide || (Math.abs(ddy/ddx) > 10 && slider)) {
|
||||
if (touchSlide || (Math.abs(dy/dx) < 1 && slider)) {
|
||||
touchSlide = true;
|
||||
slider(lastDY ? lastDY - ddy : ddy);
|
||||
slider(lastDY ? (lastDY - ddy) : ddy);
|
||||
lastDY = ddy;
|
||||
} else {
|
||||
if (dollyDelta.y > 0) {
|
||||
scope.dollyOut();
|
||||
} else {
|
||||
scope.dollyIn();
|
||||
scope.dollyOut(0.5);
|
||||
} else if (dollyDelta.y < 0) {
|
||||
scope.dollyIn(0.5);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1316,8 +1316,11 @@ gapp.register("moto.space", [], (root, exports) => {
|
|||
domelement.style.height = height();
|
||||
|
||||
// workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=1321452
|
||||
let Renderer = nav.platform === 'MacIntel' &&
|
||||
nav.vendor.indexOf('Google') >= 0 ? WebGL1Renderer : WebGLRenderer;
|
||||
// and android requires older rendered to avoid visual Z order artifacts
|
||||
let Renderer =
|
||||
(nav.platform.indexOf('Linux') >= 0) ||
|
||||
(nav.platform === 'MacIntel' && nav.vendor.indexOf('Google') >= 0) ?
|
||||
WebGL1Renderer : WebGLRenderer;
|
||||
|
||||
renderer = new Renderer({
|
||||
antialias: antiAlias,
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||
<meta http-equiv="origin-trial" content="AhKwa7D89KrdZmlwXxZAHsVTBkm6+44cKZH6X9d37NhZ4UbkDllzmctGSMTSS+Xx51MPFoRf4maqlXXDqefcCg8AAAB0eyJvcmlnaW4iOiJodHRwczovL2dyaWQuc3BhY2U6NDQzIiwiZmVhdHVyZSI6IlVucmVzdHJpY3RlZFNoYXJlZEFycmF5QnVmZmVyIiwiZXhwaXJ5IjoxNjc1Mjk1OTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<title>Kiri:Moto</title>
|
||||
<link rel="icon" href="/kiri/favicon.ico">
|
||||
<link rel="apple-touch-icon" href="/kiri/favicon-mobile.png">
|
||||
|
|
|
|||
Loading…
Reference in a new issue