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