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

No edit summary
No edit summary
Line 48: Line 48:
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 oldTime = viewer.currentTime;
     const oldAnimation = viewer.animationName;
     const oldAnimation = viewer.animationName;


     const orbit = viewer.getCameraOrbit();
     viewer.setAttribute('camera-controls', 'false');
    const target = viewer.getCameraTarget();


     const oldFov = viewer.getFieldOfView();
     let restored = false;


    function restoreCamera() {
        if (restored) {
            return;
        }


    viewer.addEventListener('load', function restore() {
         restored = true;
         viewer.removeEventListener('load', restore);


         requestAnimationFrame(function () {
         requestAnimationFrame(function () {
             viewer.cameraOrbit =
             viewer.cameraOrbit =
                 orbit.theta + 'rad ' +
                 orbit.theta + 'rad ' +
Line 73: Line 78:
                 target.z + 'm';
                 target.z + 'm';


             if (oldFov) {
             viewer.fieldOfView = fov;
                viewer.fieldOfView = oldFov;
            }


             if (oldAnimation) {
             if (oldAnimation) {
Line 85: Line 88:
             }
             }


             if (viewer.hasAttribute('autoplay')) {
             requestAnimationFrame(function () {
                 viewer.play();
                 viewer.setAttribute('camera-controls', '');
            }


                if (viewer.hasAttribute('autoplay')) {
                    viewer.play();
                }
            });
         });
         });
    }


     }, { once: true });
     viewer.addEventListener('load', restoreCamera, {
 
        once: true
    });


     viewer.src = isLQ ? hqUrl : lqUrl;
     viewer.src = isLQ ? hqUrl : lqUrl;