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

Jump to navigation Jump to search
No edit summary
No edit summary
Tag: Manual revert
Line 61: Line 61:


     function switchQuality(viewer, icon, lqUrl, hqUrl) {
     function switchQuality(viewer, icon, lqUrl, hqUrl) {
viewer.src = isLQ ? hqUrl : lqUrl;
        const isLQ = viewer.src === lqUrl;
icon.src = isLQ ? HQ_ICON : LQ_ICON;
 
        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;
 
        icon.src = isLQ ? HQ_ICON : LQ_ICON;
     }
     }