User:Monster Domosed/common.js: Difference between revisionsGive feedback
Jump to navigation
Jump to search
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; | ||
viewer.setAttribute('camera-controls', 'false'); | |||
let restored = false; | |||
function restoreCamera() { | |||
if (restored) { | |||
return; | |||
} | |||
restored = true; | |||
requestAnimationFrame(function () { | requestAnimationFrame(function () { | ||
viewer.cameraOrbit = | viewer.cameraOrbit = | ||
orbit.theta + 'rad ' + | orbit.theta + 'rad ' + | ||
| Line 73: | Line 78: | ||
target.z + 'm'; | target.z + 'm'; | ||
viewer.fieldOfView = fov; | |||
if (oldAnimation) { | if (oldAnimation) { | ||
| Line 85: | Line 88: | ||
} | } | ||
requestAnimationFrame(function () { | |||
viewer. | 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; | ||