- src/main.ts: await initAssets() before the world is built (createBlob captures blob.mesh by reference). Safe: preload races each url against a deadline with allSettled, so a stalled asset is a slow boot on built-ins, never a hang. - src/game.ts: course.tramp hook (hides the MATERIAL — the custom model is a child, so hiding the mesh would hide it too). Collider untouched. - vite.config.ts: editor.html as a build input. Without it the Workshop existed only under vite dev — invisible in the production deploy it is built for. - editor cannon.barrel: anchor the preview at the cannon group's origin (where the runtime attaches it) while still hiding the pivot's tube. Preview was 0.45m above where the game renders it — WYSIWYG off by a measurable amount. - manifest-io.test: drop the stale NOT_YET_IN_THE_RUNTIME guard now that the runtime adopted all four ids; the check is strict both ways, which is what stops the two halves drifting again. Verified: 10/10 test suites (360 assertions), sacred-parity fingerprint 49df4f20 unchanged from pre-workshop main, dist/editor.html + dist/assets/ manifest.json ship. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
22 lines
788 B
TypeScript
22 lines
788 B
TypeScript
import { defineConfig } from 'vite'
|
|
import { resolve } from 'path'
|
|
|
|
export default defineConfig({
|
|
base: '/blobbo/', // served from partly.party/blobbo/ (forum-nginx web root)
|
|
build: {
|
|
target: 'es2022',
|
|
rollupOptions: {
|
|
input: {
|
|
main: resolve(__dirname, 'index.html'),
|
|
editor: resolve(__dirname, 'editor.html'), // the Workshop — without this it exists only under `vite dev`
|
|
'lane-a': resolve(__dirname, 'demos/lane-a.html'),
|
|
'lane-b': resolve(__dirname, 'demos/lane-b.html'),
|
|
'lane-c': resolve(__dirname, 'demos/lane-c.html'),
|
|
'lane-f': resolve(__dirname, 'demos/lane-f.html'),
|
|
'lane-g': resolve(__dirname, 'demos/lane-g.html'),
|
|
'lane-h': resolve(__dirname, 'demos/lane-h.html'),
|
|
},
|
|
},
|
|
},
|
|
})
|