|
|
| Line 40: |
Line 40: |
|
| |
|
| function switchModel(viewer, icon) { | | function switchModel(viewer, icon) { |
| const isHQ = !viewer.src.endsWith('-compressed.glb');
| | const isHQ = !viewer.src.endsWith('-compressed.glb'); |
| | | |
| const currentTime = viewer.currentTime || 0;
| | viewer.src = isHQ |
| const animationName = viewer.animationName;
| | ? viewer.src.replace(/\.glb$/i, '-compressed.glb') |
| const cameraOrbit = viewer.getAttribute('camera-orbit');
| | : viewer.src.replace(/-compressed\.glb$/i, '.glb'); |
| const cameraTarget = viewer.getAttribute('camera-target');
| | |
| | | icon.src = isHQ ? LQ_ICON : HQ_ICON; |
| const newSrc = isHQ
| |
| ? viewer.src.replace(/\.glb$/i, '-compressed.glb')
| |
| : viewer.src.replace(/-compressed\.glb$/i, '.glb');
| |
| | |
| viewer.src = newSrc;
| |
| | |
| viewer.addEventListener('load', function restore() {
| |
| if (cameraOrbit) {
| |
| viewer.setAttribute('camera-orbit', cameraOrbit);
| |
| }
| |
| | |
| if (cameraTarget) {
| |
| viewer.setAttribute('camera-target', cameraTarget);
| |
| }
| |
| | |
| if (animationName) {
| |
| viewer.animationName = animationName;
| |
| }
| |
| | |
| viewer.currentTime = currentTime;
| |
| | |
| if (viewer.hasAttribute('autoplay')) {
| |
| viewer.play();
| |
| }
| |
| | |
| icon.src = isHQ ? LQ_ICON : HQ_ICON;
| |
| }, { once: true });
| |
| }
| |
|
| |
|
| function initViewer(viewer) { | | function initViewer(viewer) { |