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

No edit summary
No edit summary
Line 46: Line 46:




    function switchQuality(viewer, icon, lqUrl, hqUrl) {
function switchQuality(viewer, icon, lqUrl, hqUrl) {
        const isLQ = viewer.src === lqUrl;
    const isLQ = viewer.src === lqUrl;
 
        const oldTime = viewer.currentTime;
    const cameraOrbit = viewer.getCameraOrbit();
        const oldAnimation = viewer.animationName;
    const cameraTarget = viewer.getCameraTarget();
        const oldOrbit = viewer.getAttribute('camera-orbit');
        const oldTarget = viewer.getAttribute('camera-target');
    const fieldOfView = viewer.getFieldOfView();
 
        viewer.addEventListener('load', function restore() {
    const animationName = viewer.animationName;
            viewer.removeEventListener('load', restore);
    const currentTime = viewer.currentTime;
 
            if (oldOrbit) {
    viewer.addEventListener('load', function restore() {
                viewer.setAttribute('camera-orbit', oldOrbit);
        viewer.removeEventListener('load', restore);
            }
 
        requestAnimationFrame(function () {
            if (oldTarget) {
            viewer.cameraOrbit = cameraOrbit;
                viewer.setAttribute('camera-target', oldTarget);
            viewer.cameraTarget = cameraTarget;
            }
            viewer.fieldOfView = fieldOfView;
 
            if (oldAnimation) {
            if (animationName) {
                viewer.animationName = oldAnimation;
                viewer.animationName = animationName;
            }
            }
 
            if (typeof oldTime === 'number') {
            if (typeof currentTime === 'number') {
                viewer.currentTime = oldTime;
                viewer.currentTime = currentTime;
            }
            }
 
            if (viewer.hasAttribute('autoplay')) {
            if (viewer.hasAttribute('autoplay')) {
                viewer.play();
                viewer.play();
            }
            }
        }, { once: true });
        });
 
    }, { once: true });
        viewer.src = isLQ ? hqUrl : lqUrl;
 
        icon.src = isLQ ? HQ_ICON : LQ_ICON;
    viewer.src = isLQ ? hqUrl : lqUrl;
    }
    icon.src = isLQ ? HQ_ICON : LQ_ICON;
}