diff --git a/apps/web/src/components/viewers/CardViewer.tsx b/apps/web/src/components/viewers/CardViewer.tsx index 61a8ca7..5fbff5b 100644 --- a/apps/web/src/components/viewers/CardViewer.tsx +++ b/apps/web/src/components/viewers/CardViewer.tsx @@ -12,19 +12,26 @@ export default function CardViewer({ object }: { object: TTSObject }) { const deck = object.CustomDeck ? Object.values(object.CustomDeck)[0] : undefined; const faceUrl = deck?.FaceURL; const backUrl = deck?.BackURL; - const face = faceUrl ? useTexture(assetUrl(faceUrl)) : null; - const back = backUrl ? useTexture(assetUrl(backUrl)) : null; return ( - - - - + ); +} + +// Rendered inside the Canvas so `useTexture` can access the R3F store. +function CardMesh({ faceUrl, backUrl }: { faceUrl?: string; backUrl?: string }) { + const face = faceUrl ? useTexture(assetUrl(faceUrl)) : null; + const back = backUrl ? useTexture(assetUrl(backUrl)) : null; + return ( + + + + + ); } \ No newline at end of file diff --git a/apps/web/src/components/viewers/TileViewer.tsx b/apps/web/src/components/viewers/TileViewer.tsx index a236dc6..5bb4191 100644 --- a/apps/web/src/components/viewers/TileViewer.tsx +++ b/apps/web/src/components/viewers/TileViewer.tsx @@ -9,19 +9,26 @@ import { assetUrl } from './assetUrl'; */ export default function TileViewer({ object }: { object: TTSObject }) { const url = object.CustomImage?.ImageURL ?? object.CustomImage?.ImageSecondaryURL; - const texture = url ? useTexture(assetUrl(url)) : null; const thickness = object.CustomImage?.CustomTile?.Thickness ?? 0.1; return ( - - - - + ); +} + +// Rendered inside the Canvas so `useTexture` can access the R3F store. +function TileMesh({ url, thickness }: { url?: string; thickness: number }) { + const texture = url ? useTexture(assetUrl(url)) : null; + return ( + + + + + ); } \ No newline at end of file diff --git a/apps/web/src/components/viewers/TokenViewer.tsx b/apps/web/src/components/viewers/TokenViewer.tsx index a1996ac..1bbb003 100644 --- a/apps/web/src/components/viewers/TokenViewer.tsx +++ b/apps/web/src/components/viewers/TokenViewer.tsx @@ -9,19 +9,26 @@ import { assetUrl } from './assetUrl'; */ export default function TokenViewer({ object }: { object: TTSObject }) { const url = object.CustomImage?.ImageURL ?? object.CustomImage?.ImageSecondaryURL; - const texture = url ? useTexture(assetUrl(url)) : null; const thickness = object.CustomImage?.CustomToken?.Thickness ?? 0.1; return ( - - - - + ); +} + +// Rendered inside the Canvas so `useTexture` can access the R3F store. +function TokenMesh({ url, thickness }: { url?: string; thickness: number }) { + const texture = url ? useTexture(assetUrl(url)) : null; + return ( + + + + + ); } \ No newline at end of file