User:Monster Domosed/common.js: Difference between revisions

No edit summary
Tag: Manual revert
No edit summary
Line 62: Line 62:
     function switchQuality(viewer, icon, lqUrl, hqUrl) {
     function switchQuality(viewer, icon, lqUrl, hqUrl) {
         const isLQ = viewer.src === lqUrl;
         const isLQ = viewer.src === lqUrl;
        const orbit = viewer.getCameraOrbit();
        const target = viewer.getCameraTarget();
        const fov = viewer.getFieldOfView();
        const oldTime = viewer.currentTime;
        const oldAnimation = viewer.animationName;
        viewer.setAttribute('camera-controls', 'false');
        let restored = false;
        function restoreCamera() {
            if (restored) {
                return;
            }
            restored = true;
            requestAnimationFrame(function () {
                viewer.cameraOrbit =
                    orbit.theta + 'rad ' +
                    orbit.phi + 'rad ' +
                    orbit.radius + 'm';
                viewer.cameraTarget =
                    target.x + 'm ' +
                    target.y + 'm ' +
                    target.z + 'm';
                viewer.fieldOfView = fov;
                if (oldAnimation) {
                    viewer.animationName = oldAnimation;
                }
                if (typeof oldTime === 'number') {
                    viewer.currentTime = oldTime;
                }
                requestAnimationFrame(function () {
                    viewer.setAttribute('camera-controls', '');
                    if (viewer.hasAttribute('autoplay')) {
                        viewer.play();
                    }
                });
            });
        }
        viewer.addEventListener('load', restoreCamera, {
            once: true
        });
         viewer.src = isLQ ? hqUrl : lqUrl;
         viewer.src = isLQ ? hqUrl : lqUrl;
         icon.src = isLQ ? HQ_ICON : LQ_ICON;
         icon.src = isLQ ? HQ_ICON : LQ_ICON;
     }
     }