1
0

clean up and hand tracking
Some checks failed
Test / test (push) Has been cancelled

This commit is contained in:
Aiden
2026-06-10 14:29:15 +10:00
parent 95b9bc7cdc
commit 82d5c31ab2
10 changed files with 431 additions and 39 deletions

View File

@@ -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.");