Split extrudeShapeParts into front, back, and walls so each face can carry its own material. Flip back textures left/right on the material so they are not mirrored, and slice card faces from the deck sprite sheet via CardID. Resolve deck config from the parent deck, which is authoritative over a card's own CustomDeck. Add unit tests for card resolution, sprite UVs, and the flip helper.
23 lines
1.1 KiB
TypeScript
23 lines
1.1 KiB
TypeScript
import { lazy } from 'react';
|
|
import { registerViewer } from '../viewers';
|
|
|
|
// Register 3D viewers for the object classes that carry renderable assets.
|
|
// Importing this module has the side effect of populating the viewer registry.
|
|
// The viewers are lazy-loaded so the three.js stack is code-split out of the
|
|
// main bundle and only fetched when a 3D-capable object is actually selected.
|
|
const TileViewer = lazy(() => import('./TileViewer'));
|
|
const TokenViewer = lazy(() => import('./TokenViewer'));
|
|
const CardViewer = lazy(() => import('./CardViewer'));
|
|
const CustomModelViewer = lazy(() => import('./CustomModelViewer'));
|
|
|
|
registerViewer('Tile', TileViewer);
|
|
registerViewer('Custom_Tile', TileViewer);
|
|
registerViewer('Custom_Token', TokenViewer);
|
|
registerViewer('Card', CardViewer);
|
|
registerViewer('CardCustom', CardViewer);
|
|
registerViewer('Deck', CardViewer);
|
|
registerViewer('DeckCustom', CardViewer);
|
|
registerViewer('Custom_Deck', CardViewer);
|
|
registerViewer('Custom_Model', CustomModelViewer);
|
|
registerViewer('Custom_Model_Bag', CustomModelViewer);
|
|
registerViewer('Custom_Model_Infinite_Bag', CustomModelViewer); |