forked from EXT/VR180-Web-Player
This commit is contained in:
@@ -15,7 +15,7 @@ import { createMediaTexture as createMediaTextureCore } from './rendering/three-
|
||||
import { FallbackCameraControls } from './modes/fallback-camera-controls.js';
|
||||
import { MediaController } from './media/media-controller.js';
|
||||
import {
|
||||
createVrController,
|
||||
createVrInputRig,
|
||||
handleVrControllerSelect
|
||||
} from './xr/vr-controller-interactions.js';
|
||||
import { bindVideoEvents } from './media/video-events.js';
|
||||
@@ -42,6 +42,7 @@ let scene, camera, renderer, video, sphereMaterial;
|
||||
let vr180Mesh, planeMesh, activeContentMesh;
|
||||
let xrSession = null;
|
||||
let raycaster, uiElements = [];
|
||||
let xrInputRig;
|
||||
let mediaAdapter: SupportedMediaAdapter | undefined;
|
||||
let playBtn;
|
||||
let frameCounter = 0;
|
||||
@@ -202,7 +203,8 @@ function init() {
|
||||
vrPanelVisibility.setPanel(vrPanel);
|
||||
uiElements.push(...vrPanel.interactables);
|
||||
|
||||
raycaster = createVrController(scene, renderer, onSelectStartVR).raycaster;
|
||||
xrInputRig = createVrInputRig(scene, renderer, onSelectStartVR);
|
||||
raycaster = xrInputRig.raycaster;
|
||||
} catch (e) {
|
||||
console.error("INIT_ERROR (Phase 2 - VR Controls Setup):", e);
|
||||
}
|
||||
@@ -422,6 +424,7 @@ async function actualSessionToggle() {
|
||||
try {
|
||||
const session = await navigator.xr.requestSession('immersive-vr', {
|
||||
requiredFeatures: ['local-floor'],
|
||||
optionalFeatures: ['hand-tracking'],
|
||||
});
|
||||
if (!session) { throw new Error("requestSession returned no session."); }
|
||||
|
||||
@@ -462,6 +465,7 @@ async function actualSessionToggle() {
|
||||
}
|
||||
|
||||
await renderer.xr.setSession(xrSession);
|
||||
xrInputRig?.showOverlays();
|
||||
isXrLoopActive = true;
|
||||
renderer.setAnimationLoop(renderXR);
|
||||
frameCounter = 0;
|
||||
@@ -521,6 +525,7 @@ function onVRSessionEnd(event) {
|
||||
if (vrControlPanel) {
|
||||
vrPanelVisibility.hideImmediately();
|
||||
}
|
||||
xrInputRig?.hideOverlays();
|
||||
|
||||
if (endedSession && typeof endedSession.removeEventListener === 'function') {
|
||||
endedSession.removeEventListener('end', onVRSessionEnd);
|
||||
@@ -558,6 +563,7 @@ function renderXR(timestamp, frame) {
|
||||
if (vrPanelVisibility.isFading) {
|
||||
animatePanelFade(timestamp);
|
||||
}
|
||||
xrInputRig?.update(timestamp);
|
||||
|
||||
if (!frame) {
|
||||
console.warn("renderXR called without an XRFrame. Skipping render.");
|
||||
|
||||
Reference in New Issue
Block a user