From daf95830189b9e2b7febfd60e2cdca7276802a5e Mon Sep 17 00:00:00 2001 From: Michael Verdi Date: Thu, 31 Jul 2025 14:02:56 -0500 Subject: [PATCH] Add VR exit behavior to return to original state - Created resetToOriginalState() function to reset video to poster frame and show play button - Integrated reset function into onVRSessionEnd() for consistent VR exit behavior - Enhanced onVideoEnded() to reset state for all playback modes - Ensures users see original poster + play button state after exiting VR --- vr180-player.js | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/vr180-player.js b/vr180-player.js index 3cb0a3b..c3a205e 100644 --- a/vr180-player.js +++ b/vr180-player.js @@ -873,6 +873,43 @@ function togglePlayPause() { } } +function resetToOriginalState() { + // Reset video to show poster frame + if (video) { + video.pause(); + video.currentTime = 0; + video.controls = false; // Disable native controls + } + + // Show the play button in center position + if (playBtn) { + playBtn.classList.remove('hidden'); + playBtn.disabled = false; + } + + // Reset 2D mode if it was active + if (is2DMode) { + is2DMode = false; + remove2DEventListeners(); + + // Reset camera rotation + cameraRotation = { yaw: 0, pitch: 0 }; + cameraVelocity = { yaw: 0, pitch: 0 }; + isDragging = false; + + // Hide WebGL canvas and show video element + if (renderer && renderer.domElement) { + renderer.domElement.style.display = 'none'; + } + if (video) { + video.style.display = ''; + } + + // Reset renderer size + onWindowResize(); + } +} + function onVideoEnded() { if (video && !video.paused) video.pause(); if (xrSession && renderer && renderer.xr.isPresenting) { @@ -888,6 +925,9 @@ function onVideoEnded() { onVRSessionEnd({session: null}); // Call with null session if already gone } }); + } else { + // If not in VR, still reset to original state when video ends + resetToOriginalState(); } } @@ -1199,7 +1239,9 @@ function onVRSessionEnd(event) { console.warn("onVRSessionEnd: Global xrSession was different from the endedSession. Global xrSession:", xrSession, "Ended session:", endedSession); xrSession = null; } - // No need to change button text when exiting VR as it should keep its original text + + // Reset to original state when exiting VR + resetToOriginalState(); onWindowResize(); }