fix(debug): defer hand tracking startup

This commit is contained in:
Tom Boullay
2026-05-25 01:19:14 +02:00
parent 4c42e11268
commit d0497ec42c
4 changed files with 53 additions and 13 deletions
+23 -12
View File
@@ -24,9 +24,6 @@ export function HandTrackingProvider({
children: ReactNode;
}): React.JSX.Element {
const sceneMode = useSceneMode();
const handTrackingSource = useDebugStore((debug) =>
debug.getHandTrackingSource(),
);
const repairNeedsHands = useGameStore((state) => {
switch (state.mainState) {
case "bike":
@@ -44,20 +41,34 @@ export function HandTrackingProvider({
const enabled =
repairNeedsHands ||
(sceneMode === "physics" && (nearby || holding || handHolding));
if (!enabled) {
return (
<HandTrackingContext value={HAND_TRACKING_IDLE_SNAPSHOT}>
{children}
</HandTrackingContext>
);
}
return <ActiveHandTrackingProvider>{children}</ActiveHandTrackingProvider>;
}
function ActiveHandTrackingProvider({
children,
}: {
children: ReactNode;
}): React.JSX.Element {
const handTrackingSource = useDebugStore((debug) =>
debug.getHandTrackingSource(),
);
const backendSnapshot = useRemoteHandTracking({
enabled: enabled && handTrackingSource === "backend",
enabled: handTrackingSource === "backend",
});
const browserSnapshot = useBrowserHandTracking({
enabled: enabled && handTrackingSource === "browser",
enabled: handTrackingSource === "browser",
});
const snapshot =
handTrackingSource === "browser" ? browserSnapshot : backendSnapshot;
return (
<HandTrackingContext
value={enabled ? snapshot : HAND_TRACKING_IDLE_SNAPSHOT}
>
{children}
</HandTrackingContext>
);
return <HandTrackingContext value={snapshot}>{children}</HandTrackingContext>;
}