@vgai/engine 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/README.md +3 -1
  2. package/dist/adapter/authoring.d.ts +404 -0
  3. package/dist/adapter/authoring.d.ts.map +1 -0
  4. package/dist/adapter/authoring.js +22 -0
  5. package/dist/adapter/colyseus-networking-adapter.d.ts +43 -0
  6. package/dist/adapter/colyseus-networking-adapter.d.ts.map +1 -0
  7. package/dist/adapter/colyseus-networking-adapter.js +38 -0
  8. package/dist/adapter/first-party-systems.d.ts +38 -0
  9. package/dist/adapter/first-party-systems.d.ts.map +1 -0
  10. package/dist/adapter/first-party-systems.js +77 -0
  11. package/dist/adapter/game-adapter.d.ts +133 -0
  12. package/dist/adapter/game-adapter.d.ts.map +1 -0
  13. package/dist/adapter/game-adapter.js +10 -0
  14. package/dist/adapter/host-context.d.ts +73 -0
  15. package/dist/adapter/host-context.d.ts.map +1 -0
  16. package/dist/adapter/host-context.js +16 -0
  17. package/dist/adapter/index.d.ts +22 -0
  18. package/dist/adapter/index.d.ts.map +1 -0
  19. package/dist/adapter/index.js +15 -0
  20. package/dist/adapter/ingest/game-contract.d.ts +53 -0
  21. package/dist/adapter/ingest/game-contract.d.ts.map +1 -0
  22. package/dist/adapter/ingest/game-contract.js +30 -0
  23. package/dist/adapter/ingest/overlay-applier.d.ts +118 -0
  24. package/dist/adapter/ingest/overlay-applier.d.ts.map +1 -0
  25. package/dist/adapter/ingest/overlay-applier.js +132 -0
  26. package/dist/adapter/ingest/overlay-apply.d.ts +60 -0
  27. package/dist/adapter/ingest/overlay-apply.d.ts.map +1 -0
  28. package/dist/adapter/ingest/overlay-apply.js +101 -0
  29. package/dist/adapter/ingest/overlay-file.d.ts +79 -0
  30. package/dist/adapter/ingest/overlay-file.d.ts.map +1 -0
  31. package/dist/adapter/ingest/overlay-file.js +66 -0
  32. package/dist/adapter/ingest/overlay-report.d.ts +113 -0
  33. package/dist/adapter/ingest/overlay-report.d.ts.map +1 -0
  34. package/dist/adapter/ingest/overlay-report.js +103 -0
  35. package/dist/adapter/ingest/scene-capture.d.ts +97 -0
  36. package/dist/adapter/ingest/scene-capture.d.ts.map +1 -0
  37. package/dist/adapter/ingest/scene-capture.js +248 -0
  38. package/dist/adapter/ingest/upstream-pin.d.ts +47 -0
  39. package/dist/adapter/ingest/upstream-pin.d.ts.map +1 -0
  40. package/dist/adapter/ingest/upstream-pin.js +50 -0
  41. package/dist/adapter/loop-gate-report.d.ts +34 -0
  42. package/dist/adapter/loop-gate-report.d.ts.map +1 -0
  43. package/dist/adapter/loop-gate-report.js +37 -0
  44. package/dist/adapter/rapier-physics-adapter.d.ts +12 -0
  45. package/dist/adapter/rapier-physics-adapter.d.ts.map +1 -0
  46. package/dist/adapter/rapier-physics-adapter.js +46 -0
  47. package/dist/adapter/system-adapter.d.ts +133 -0
  48. package/dist/adapter/system-adapter.d.ts.map +1 -0
  49. package/dist/adapter/system-adapter.js +13 -0
  50. package/dist/adapter/transform.d.ts +18 -0
  51. package/dist/adapter/transform.d.ts.map +1 -0
  52. package/dist/adapter/transform.js +1 -0
  53. package/dist/adapter/vgai-scene-game-adapter.d.ts +116 -0
  54. package/dist/adapter/vgai-scene-game-adapter.d.ts.map +1 -0
  55. package/dist/adapter/vgai-scene-game-adapter.js +714 -0
  56. package/dist/adapter/world-kind.d.ts +30 -0
  57. package/dist/adapter/world-kind.d.ts.map +1 -0
  58. package/dist/adapter/world-kind.js +18 -0
  59. package/dist/ai/navigation.d.ts +64 -0
  60. package/dist/ai/navigation.d.ts.map +1 -0
  61. package/dist/ai/navigation.js +133 -0
  62. package/dist/animation/anim-graph-types.d.ts +25 -0
  63. package/dist/animation/anim-graph-types.d.ts.map +1 -0
  64. package/dist/animation/anim-graph-types.js +1 -0
  65. package/dist/animation/animation-clock.d.ts +213 -0
  66. package/dist/animation/animation-clock.d.ts.map +1 -0
  67. package/dist/animation/animation-clock.js +301 -0
  68. package/dist/animation/blend-node.d.ts +22 -0
  69. package/dist/animation/blend-node.d.ts.map +1 -0
  70. package/dist/animation/blend-node.js +97 -0
  71. package/dist/animation/camera-ownership.d.ts +250 -0
  72. package/dist/animation/camera-ownership.d.ts.map +1 -0
  73. package/dist/animation/camera-ownership.js +169 -0
  74. package/dist/animation/cinematic-cues.d.ts +200 -0
  75. package/dist/animation/cinematic-cues.d.ts.map +1 -0
  76. package/dist/animation/cinematic-cues.js +213 -0
  77. package/dist/animation/clip-map.d.ts +12 -0
  78. package/dist/animation/clip-map.d.ts.map +1 -0
  79. package/dist/animation/clip-map.js +37 -0
  80. package/dist/animation/gsap-registration.d.ts +119 -0
  81. package/dist/animation/gsap-registration.d.ts.map +1 -0
  82. package/dist/animation/gsap-registration.js +92 -0
  83. package/dist/animation/theatre-clock-binding.d.ts +89 -0
  84. package/dist/animation/theatre-clock-binding.d.ts.map +1 -0
  85. package/dist/animation/theatre-clock-binding.js +29 -0
  86. package/dist/animation/theatre-director.d.ts +242 -0
  87. package/dist/animation/theatre-director.d.ts.map +1 -0
  88. package/dist/animation/theatre-director.js +235 -0
  89. package/dist/animation/theatre-object-binding.d.ts +305 -0
  90. package/dist/animation/theatre-object-binding.d.ts.map +1 -0
  91. package/dist/animation/theatre-object-binding.js +351 -0
  92. package/dist/animation/xstate-animation-binding.d.ts +111 -0
  93. package/dist/animation/xstate-animation-binding.d.ts.map +1 -0
  94. package/dist/animation/xstate-animation-binding.js +307 -0
  95. package/dist/animation/xstate-animation-meta.d.ts +228 -0
  96. package/dist/animation/xstate-animation-meta.d.ts.map +1 -0
  97. package/dist/animation/xstate-animation-meta.js +221 -0
  98. package/dist/assets.d.ts +26 -0
  99. package/dist/assets.d.ts.map +1 -0
  100. package/dist/assets.js +55 -0
  101. package/dist/audio/index.d.ts +4 -0
  102. package/dist/audio/index.d.ts.map +1 -0
  103. package/dist/audio/index.js +24 -0
  104. package/dist/audio/tone-clock-binding.d.ts +75 -0
  105. package/dist/audio/tone-clock-binding.d.ts.map +1 -0
  106. package/dist/audio/tone-clock-binding.js +29 -0
  107. package/dist/audio/tone-context.d.ts +114 -0
  108. package/dist/audio/tone-context.d.ts.map +1 -0
  109. package/dist/audio/tone-context.js +39 -0
  110. package/dist/audio/tone-offline-render.d.ts +90 -0
  111. package/dist/audio/tone-offline-render.d.ts.map +1 -0
  112. package/dist/audio/tone-offline-render.js +56 -0
  113. package/dist/audio/wav-encode.d.ts +38 -0
  114. package/dist/audio/wav-encode.d.ts.map +1 -0
  115. package/dist/audio/wav-encode.js +97 -0
  116. package/dist/core/game-loop.d.ts +21 -0
  117. package/dist/core/game-loop.d.ts.map +1 -0
  118. package/dist/core/game-loop.js +130 -0
  119. package/dist/core/system-runner.d.ts +120 -0
  120. package/dist/core/system-runner.d.ts.map +1 -0
  121. package/dist/core/system-runner.js +286 -0
  122. package/dist/core/types.d.ts +58 -0
  123. package/dist/core/types.d.ts.map +1 -0
  124. package/dist/core/types.js +25 -0
  125. package/dist/data/data-asset.d.ts +101 -0
  126. package/dist/data/data-asset.d.ts.map +1 -0
  127. package/dist/data/data-asset.js +122 -0
  128. package/dist/data/data-check-core.d.ts +110 -0
  129. package/dist/data/data-check-core.d.ts.map +1 -0
  130. package/dist/data/data-check-core.js +178 -0
  131. package/dist/data/data-ref.d.ts +79 -0
  132. package/dist/data/data-ref.d.ts.map +1 -0
  133. package/dist/data/data-ref.js +130 -0
  134. package/dist/data/vite-plugin-data.d.ts +79 -0
  135. package/dist/data/vite-plugin-data.d.ts.map +1 -0
  136. package/dist/data/vite-plugin-data.js +217 -0
  137. package/dist/dev/console-bridge.d.ts +22 -0
  138. package/dist/dev/console-bridge.d.ts.map +1 -0
  139. package/dist/dev/console-bridge.js +71 -0
  140. package/dist/dev/debug-draw.d.ts +24 -0
  141. package/dist/dev/debug-draw.d.ts.map +1 -0
  142. package/dist/dev/debug-draw.js +73 -0
  143. package/dist/dev/logger.d.ts +30 -0
  144. package/dist/dev/logger.d.ts.map +1 -0
  145. package/dist/dev/logger.js +90 -0
  146. package/dist/ecs/component-manager.d.ts +189 -0
  147. package/dist/ecs/component-manager.d.ts.map +1 -0
  148. package/dist/ecs/component-manager.js +676 -0
  149. package/dist/ecs/game-component.d.ts +97 -0
  150. package/dist/ecs/game-component.d.ts.map +1 -0
  151. package/dist/ecs/game-component.js +80 -0
  152. package/dist/ecs/hmr-swap-report.d.ts +53 -0
  153. package/dist/ecs/hmr-swap-report.d.ts.map +1 -0
  154. package/dist/ecs/hmr-swap-report.js +55 -0
  155. package/dist/index.d.ts +37 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +30 -0
  158. package/dist/input/input-manager.d.ts +596 -0
  159. package/dist/input/input-manager.d.ts.map +1 -0
  160. package/dist/input/input-manager.js +1564 -0
  161. package/dist/input/input-types.d.ts +171 -0
  162. package/dist/input/input-types.d.ts.map +1 -0
  163. package/dist/input/input-types.js +1 -0
  164. package/dist/input/prompt-labels.d.ts +21 -0
  165. package/dist/input/prompt-labels.d.ts.map +1 -0
  166. package/dist/input/prompt-labels.js +121 -0
  167. package/dist/input/rebind-controller.d.ts +59 -0
  168. package/dist/input/rebind-controller.d.ts.map +1 -0
  169. package/dist/input/rebind-controller.js +85 -0
  170. package/dist/input/schema.d.ts +16 -0
  171. package/dist/input/schema.d.ts.map +1 -0
  172. package/dist/input/schema.js +228 -0
  173. package/dist/loader.d.ts +43 -0
  174. package/dist/loader.d.ts.map +1 -0
  175. package/dist/loader.js +59 -0
  176. package/dist/manifest/index.d.ts +5 -0
  177. package/dist/manifest/index.d.ts.map +1 -0
  178. package/dist/manifest/index.js +8 -0
  179. package/dist/manifest/load-file.d.ts +4 -0
  180. package/dist/manifest/load-file.d.ts.map +1 -0
  181. package/dist/manifest/load-file.js +14 -0
  182. package/dist/manifest/load.d.ts +117 -0
  183. package/dist/manifest/load.d.ts.map +1 -0
  184. package/dist/manifest/load.js +255 -0
  185. package/dist/manifest/schema.d.ts +173 -0
  186. package/dist/manifest/schema.d.ts.map +1 -0
  187. package/dist/manifest/schema.js +302 -0
  188. package/dist/physics/collision-system.d.ts +41 -0
  189. package/dist/physics/collision-system.d.ts.map +1 -0
  190. package/dist/physics/collision-system.js +64 -0
  191. package/dist/physics/physics-registry.d.ts +45 -0
  192. package/dist/physics/physics-registry.d.ts.map +1 -0
  193. package/dist/physics/physics-registry.js +65 -0
  194. package/dist/physics/transform-writer.d.ts +16 -0
  195. package/dist/physics/transform-writer.d.ts.map +1 -0
  196. package/dist/physics/transform-writer.js +38 -0
  197. package/dist/physics/trigger-dispatch.d.ts +24 -0
  198. package/dist/physics/trigger-dispatch.d.ts.map +1 -0
  199. package/dist/physics/trigger-dispatch.js +80 -0
  200. package/dist/react/game-state.d.ts +105 -0
  201. package/dist/react/game-state.d.ts.map +1 -0
  202. package/dist/react/game-state.js +144 -0
  203. package/dist/react/use-data.d.ts +60 -0
  204. package/dist/react/use-data.d.ts.map +1 -0
  205. package/dist/react/use-data.js +96 -0
  206. package/dist/react/use-selection.d.ts +75 -0
  207. package/dist/react/use-selection.d.ts.map +1 -0
  208. package/dist/react/use-selection.js +90 -0
  209. package/dist/render/auto-batcher.d.ts +34 -0
  210. package/dist/render/auto-batcher.d.ts.map +1 -0
  211. package/dist/render/auto-batcher.js +140 -0
  212. package/dist/render/render-batch-system.d.ts +33 -0
  213. package/dist/render/render-batch-system.d.ts.map +1 -0
  214. package/dist/render/render-batch-system.js +230 -0
  215. package/dist/render/render-features.d.ts +47 -0
  216. package/dist/render/render-features.d.ts.map +1 -0
  217. package/dist/render/render-features.js +105 -0
  218. package/dist/render/render-settings.d.ts +36 -0
  219. package/dist/render/render-settings.d.ts.map +1 -0
  220. package/dist/render/render-settings.js +51 -0
  221. package/dist/runtime/create-runtime.d.ts +280 -0
  222. package/dist/runtime/create-runtime.d.ts.map +1 -0
  223. package/dist/runtime/create-runtime.js +795 -0
  224. package/dist/runtime/frame-selector-cache.d.ts +41 -0
  225. package/dist/runtime/frame-selector-cache.d.ts.map +1 -0
  226. package/dist/runtime/frame-selector-cache.js +65 -0
  227. package/dist/runtime/game.d.ts +433 -0
  228. package/dist/runtime/game.d.ts.map +1 -0
  229. package/dist/runtime/game.js +569 -0
  230. package/dist/runtime/input-router.d.ts +78 -0
  231. package/dist/runtime/input-router.d.ts.map +1 -0
  232. package/dist/runtime/input-router.js +171 -0
  233. package/dist/runtime/mount-game.d.ts +129 -0
  234. package/dist/runtime/mount-game.d.ts.map +1 -0
  235. package/dist/runtime/mount-game.js +152 -0
  236. package/dist/runtime/mount-manifest.d.ts +119 -0
  237. package/dist/runtime/mount-manifest.d.ts.map +1 -0
  238. package/dist/runtime/mount-manifest.js +204 -0
  239. package/dist/runtime/render-audio-control.d.ts +110 -0
  240. package/dist/runtime/render-audio-control.d.ts.map +1 -0
  241. package/dist/runtime/render-audio-control.js +111 -0
  242. package/dist/runtime/render-control.d.ts +291 -0
  243. package/dist/runtime/render-control.d.ts.map +1 -0
  244. package/dist/runtime/render-control.js +264 -0
  245. package/dist/runtime/render-seed.d.ts +57 -0
  246. package/dist/runtime/render-seed.d.ts.map +1 -0
  247. package/dist/runtime/render-seed.js +74 -0
  248. package/dist/runtime/scene-ui-bridge.d.ts +69 -0
  249. package/dist/runtime/scene-ui-bridge.d.ts.map +1 -0
  250. package/dist/runtime/scene-ui-bridge.js +23 -0
  251. package/dist/runtime/scene-ui-data.d.ts +13 -0
  252. package/dist/runtime/scene-ui-data.d.ts.map +1 -0
  253. package/dist/runtime/scene-ui-data.js +92 -0
  254. package/dist/runtime/state-bridge.d.ts +47 -0
  255. package/dist/runtime/state-bridge.d.ts.map +1 -0
  256. package/dist/runtime/state-bridge.js +53 -0
  257. package/dist/runtime/types.d.ts +179 -0
  258. package/dist/runtime/types.d.ts.map +1 -0
  259. package/dist/runtime/types.js +1 -0
  260. package/dist/scene/asset-loaders.d.ts +79 -0
  261. package/dist/scene/asset-loaders.d.ts.map +1 -0
  262. package/dist/scene/asset-loaders.js +141 -0
  263. package/dist/scene/asset-paths.d.ts +11 -0
  264. package/dist/scene/asset-paths.d.ts.map +1 -0
  265. package/dist/scene/asset-paths.js +108 -0
  266. package/dist/scene/asset-ref-check.d.ts +88 -0
  267. package/dist/scene/asset-ref-check.d.ts.map +1 -0
  268. package/dist/scene/asset-ref-check.js +214 -0
  269. package/dist/scene/asset-registry.d.ts +30 -0
  270. package/dist/scene/asset-registry.d.ts.map +1 -0
  271. package/dist/scene/asset-registry.js +50 -0
  272. package/dist/scene/collider-dimensions.d.ts +63 -0
  273. package/dist/scene/collider-dimensions.d.ts.map +1 -0
  274. package/dist/scene/collider-dimensions.js +98 -0
  275. package/dist/scene/component-registry.d.ts +17 -0
  276. package/dist/scene/component-registry.d.ts.map +1 -0
  277. package/dist/scene/component-registry.js +28 -0
  278. package/dist/scene/defaults.d.ts +252 -0
  279. package/dist/scene/defaults.d.ts.map +1 -0
  280. package/dist/scene/defaults.js +151 -0
  281. package/dist/scene/geometries/index.d.ts +8 -0
  282. package/dist/scene/geometries/index.d.ts.map +1 -0
  283. package/dist/scene/geometries/index.js +7 -0
  284. package/dist/scene/geometries/terrain.d.ts +2 -0
  285. package/dist/scene/geometries/terrain.d.ts.map +1 -0
  286. package/dist/scene/geometries/terrain.js +37 -0
  287. package/dist/scene/geometry-registry.d.ts +24 -0
  288. package/dist/scene/geometry-registry.d.ts.map +1 -0
  289. package/dist/scene/geometry-registry.js +20 -0
  290. package/dist/scene/instance-registry.d.ts +36 -0
  291. package/dist/scene/instance-registry.d.ts.map +1 -0
  292. package/dist/scene/instance-registry.js +55 -0
  293. package/dist/scene/instancers/grid.d.ts +2 -0
  294. package/dist/scene/instancers/grid.d.ts.map +1 -0
  295. package/dist/scene/instancers/grid.js +36 -0
  296. package/dist/scene/instancers/index.d.ts +8 -0
  297. package/dist/scene/instancers/index.d.ts.map +1 -0
  298. package/dist/scene/instancers/index.js +7 -0
  299. package/dist/scene/light-camera-factory.d.ts +23 -0
  300. package/dist/scene/light-camera-factory.d.ts.map +1 -0
  301. package/dist/scene/light-camera-factory.js +68 -0
  302. package/dist/scene/material-factory.d.ts +17 -0
  303. package/dist/scene/material-factory.d.ts.map +1 -0
  304. package/dist/scene/material-factory.js +197 -0
  305. package/dist/scene/material-registry.d.ts +40 -0
  306. package/dist/scene/material-registry.d.ts.map +1 -0
  307. package/dist/scene/material-registry.js +44 -0
  308. package/dist/scene/materials/index.d.ts +8 -0
  309. package/dist/scene/materials/index.d.ts.map +1 -0
  310. package/dist/scene/materials/index.js +7 -0
  311. package/dist/scene/materials/water.d.ts +2 -0
  312. package/dist/scene/materials/water.d.ts.map +1 -0
  313. package/dist/scene/materials/water.js +54 -0
  314. package/dist/scene/parse.d.ts +23 -0
  315. package/dist/scene/parse.d.ts.map +1 -0
  316. package/dist/scene/parse.js +179 -0
  317. package/dist/scene/particles-factory.d.ts +33 -0
  318. package/dist/scene/particles-factory.d.ts.map +1 -0
  319. package/dist/scene/particles-factory.js +282 -0
  320. package/dist/scene/scene-apply.d.ts +109 -0
  321. package/dist/scene/scene-apply.d.ts.map +1 -0
  322. package/dist/scene/scene-apply.js +326 -0
  323. package/dist/scene/scene-diff-schema.d.ts +285 -0
  324. package/dist/scene/scene-diff-schema.d.ts.map +1 -0
  325. package/dist/scene/scene-diff-schema.js +92 -0
  326. package/dist/scene/scene-diff-types.d.ts +40 -0
  327. package/dist/scene/scene-diff-types.d.ts.map +1 -0
  328. package/dist/scene/scene-diff-types.js +14 -0
  329. package/dist/scene/scene-loader.d.ts +177 -0
  330. package/dist/scene/scene-loader.d.ts.map +1 -0
  331. package/dist/scene/scene-loader.js +1213 -0
  332. package/dist/scene/scene-query.d.ts +11 -0
  333. package/dist/scene/scene-query.d.ts.map +1 -0
  334. package/dist/scene/scene-query.js +63 -0
  335. package/dist/scene/scene-types.d.ts +10 -0
  336. package/dist/scene/scene-types.d.ts.map +1 -0
  337. package/dist/scene/scene-types.js +8 -0
  338. package/dist/scene/scene-version.d.ts +26 -0
  339. package/dist/scene/scene-version.d.ts.map +1 -0
  340. package/dist/scene/scene-version.js +34 -0
  341. package/dist/scene/schema/animation.d.ts +8 -0
  342. package/dist/scene/schema/animation.d.ts.map +1 -0
  343. package/dist/scene/schema/animation.js +42 -0
  344. package/dist/scene/schema/audio.d.ts +13 -0
  345. package/dist/scene/schema/audio.d.ts.map +1 -0
  346. package/dist/scene/schema/audio.js +22 -0
  347. package/dist/scene/schema/camera.d.ts +28 -0
  348. package/dist/scene/schema/camera.d.ts.map +1 -0
  349. package/dist/scene/schema/camera.js +17 -0
  350. package/dist/scene/schema/collider.d.ts +40 -0
  351. package/dist/scene/schema/collider.d.ts.map +1 -0
  352. package/dist/scene/schema/collider.js +55 -0
  353. package/dist/scene/schema/entity-ref.d.ts +31 -0
  354. package/dist/scene/schema/entity-ref.d.ts.map +1 -0
  355. package/dist/scene/schema/entity-ref.js +61 -0
  356. package/dist/scene/schema/entity.d.ts +1036 -0
  357. package/dist/scene/schema/entity.d.ts.map +1 -0
  358. package/dist/scene/schema/entity.js +153 -0
  359. package/dist/scene/schema/environment.d.ts +425 -0
  360. package/dist/scene/schema/environment.d.ts.map +1 -0
  361. package/dist/scene/schema/environment.js +357 -0
  362. package/dist/scene/schema/index.d.ts +39 -0
  363. package/dist/scene/schema/index.d.ts.map +1 -0
  364. package/dist/scene/schema/index.js +20 -0
  365. package/dist/scene/schema/instances.d.ts +14 -0
  366. package/dist/scene/schema/instances.d.ts.map +1 -0
  367. package/dist/scene/schema/instances.js +28 -0
  368. package/dist/scene/schema/joint.d.ts +23 -0
  369. package/dist/scene/schema/joint.d.ts.map +1 -0
  370. package/dist/scene/schema/joint.js +23 -0
  371. package/dist/scene/schema/light.d.ts +38 -0
  372. package/dist/scene/schema/light.d.ts.map +1 -0
  373. package/dist/scene/schema/light.js +26 -0
  374. package/dist/scene/schema/material.d.ts +199 -0
  375. package/dist/scene/schema/material.d.ts.map +1 -0
  376. package/dist/scene/schema/material.js +99 -0
  377. package/dist/scene/schema/mesh.d.ts +48 -0
  378. package/dist/scene/schema/mesh.d.ts.map +1 -0
  379. package/dist/scene/schema/mesh.js +82 -0
  380. package/dist/scene/schema/particles.d.ts +2178 -0
  381. package/dist/scene/schema/particles.d.ts.map +1 -0
  382. package/dist/scene/schema/particles.js +321 -0
  383. package/dist/scene/schema/physics.d.ts +56 -0
  384. package/dist/scene/schema/physics.d.ts.map +1 -0
  385. package/dist/scene/schema/physics.js +37 -0
  386. package/dist/scene/schema/scene-file.d.ts +304 -0
  387. package/dist/scene/schema/scene-file.d.ts.map +1 -0
  388. package/dist/scene/schema/scene-file.js +262 -0
  389. package/dist/scene/schema/shadow.d.ts +28 -0
  390. package/dist/scene/schema/shadow.d.ts.map +1 -0
  391. package/dist/scene/schema/shadow.js +20 -0
  392. package/dist/scene/schema/spline.d.ts +25 -0
  393. package/dist/scene/schema/spline.d.ts.map +1 -0
  394. package/dist/scene/schema/spline.js +15 -0
  395. package/dist/scene/schema/tuples.d.ts +12 -0
  396. package/dist/scene/schema/tuples.d.ts.map +1 -0
  397. package/dist/scene/schema/tuples.js +14 -0
  398. package/dist/scene/schema/ui.d.ts +880 -0
  399. package/dist/scene/schema/ui.d.ts.map +1 -0
  400. package/dist/scene/schema/ui.js +506 -0
  401. package/dist/scene/user-data.d.ts +171 -0
  402. package/dist/scene/user-data.d.ts.map +1 -0
  403. package/dist/scene/user-data.js +137 -0
  404. package/dist/setup/setup-audio.d.ts +20 -0
  405. package/dist/setup/setup-audio.d.ts.map +1 -0
  406. package/dist/setup/setup-audio.js +41 -0
  407. package/dist/setup/setup-particles.d.ts +17 -0
  408. package/dist/setup/setup-particles.d.ts.map +1 -0
  409. package/dist/setup/setup-particles.js +16 -0
  410. package/dist/setup/setup-physics.d.ts +25 -0
  411. package/dist/setup/setup-physics.d.ts.map +1 -0
  412. package/dist/setup/setup-physics.js +51 -0
  413. package/dist/setup/setup-renderer.d.ts +69 -0
  414. package/dist/setup/setup-renderer.d.ts.map +1 -0
  415. package/dist/setup/setup-renderer.js +363 -0
  416. package/dist/tools/define-tool.d.ts +105 -0
  417. package/dist/tools/define-tool.d.ts.map +1 -0
  418. package/dist/tools/define-tool.js +82 -0
  419. package/dist/world2d/authoring-2d.d.ts +76 -0
  420. package/dist/world2d/authoring-2d.d.ts.map +1 -0
  421. package/dist/world2d/authoring-2d.js +176 -0
  422. package/dist/world2d/capture-to-scene2d.d.ts +5 -0
  423. package/dist/world2d/capture-to-scene2d.d.ts.map +1 -0
  424. package/dist/world2d/capture-to-scene2d.js +49 -0
  425. package/dist/world2d/collision-2d.d.ts +52 -0
  426. package/dist/world2d/collision-2d.d.ts.map +1 -0
  427. package/dist/world2d/collision-2d.js +70 -0
  428. package/dist/world2d/components-2d.d.ts +47 -0
  429. package/dist/world2d/components-2d.d.ts.map +1 -0
  430. package/dist/world2d/components-2d.js +77 -0
  431. package/dist/world2d/index.d.ts +34 -0
  432. package/dist/world2d/index.d.ts.map +1 -0
  433. package/dist/world2d/index.js +32 -0
  434. package/dist/world2d/ingest-iframe-2d.d.ts +82 -0
  435. package/dist/world2d/ingest-iframe-2d.d.ts.map +1 -0
  436. package/dist/world2d/ingest-iframe-2d.js +166 -0
  437. package/dist/world2d/ingest2d.d.ts +97 -0
  438. package/dist/world2d/ingest2d.d.ts.map +1 -0
  439. package/dist/world2d/ingest2d.js +40 -0
  440. package/dist/world2d/physics2d-registry.d.ts +24 -0
  441. package/dist/world2d/physics2d-registry.d.ts.map +1 -0
  442. package/dist/world2d/physics2d-registry.js +38 -0
  443. package/dist/world2d/pixi-game-adapter.d.ts +107 -0
  444. package/dist/world2d/pixi-game-adapter.d.ts.map +1 -0
  445. package/dist/world2d/pixi-game-adapter.js +211 -0
  446. package/dist/world2d/pixi-surface.d.ts +39 -0
  447. package/dist/world2d/pixi-surface.d.ts.map +1 -0
  448. package/dist/world2d/pixi-surface.js +47 -0
  449. package/dist/world2d/scene-capture-2d.d.ts +43 -0
  450. package/dist/world2d/scene-capture-2d.d.ts.map +1 -0
  451. package/dist/world2d/scene-capture-2d.js +92 -0
  452. package/dist/world2d/scene2d-loader.d.ts +27 -0
  453. package/dist/world2d/scene2d-loader.d.ts.map +1 -0
  454. package/dist/world2d/scene2d-loader.js +274 -0
  455. package/dist/world2d/schema/entity2d.d.ts +102 -0
  456. package/dist/world2d/schema/entity2d.d.ts.map +1 -0
  457. package/dist/world2d/schema/entity2d.js +119 -0
  458. package/dist/world2d/schema/physics2d.d.ts +46 -0
  459. package/dist/world2d/schema/physics2d.d.ts.map +1 -0
  460. package/dist/world2d/schema/physics2d.js +45 -0
  461. package/dist/world2d/schema/sprite.d.ts +42 -0
  462. package/dist/world2d/schema/sprite.d.ts.map +1 -0
  463. package/dist/world2d/schema/sprite.js +63 -0
  464. package/dist/world2d/schema/tilemap.d.ts +15 -0
  465. package/dist/world2d/schema/tilemap.d.ts.map +1 -0
  466. package/dist/world2d/schema/tilemap.js +19 -0
  467. package/dist/world2d/schema/tuples2d.d.ts +20 -0
  468. package/dist/world2d/schema/tuples2d.d.ts.map +1 -0
  469. package/dist/world2d/schema/tuples2d.js +19 -0
  470. package/dist/world2d/system-adapters-2d.d.ts +16 -0
  471. package/dist/world2d/system-adapters-2d.d.ts.map +1 -0
  472. package/dist/world2d/system-adapters-2d.js +37 -0
  473. package/dist/world2d/transform-writer-2d.d.ts +16 -0
  474. package/dist/world2d/transform-writer-2d.d.ts.map +1 -0
  475. package/dist/world2d/transform-writer-2d.js +22 -0
  476. package/dist/world2d/types.d.ts +53 -0
  477. package/dist/world2d/types.d.ts.map +1 -0
  478. package/dist/world2d/types.js +1 -0
  479. package/package.json +18 -4
  480. package/src/adapter/authoring.ts +10 -0
  481. package/src/adapter/first-party-systems.ts +23 -34
  482. package/src/adapter/index.ts +1 -3
  483. package/src/adapter/system-adapter.ts +15 -22
  484. package/src/adapter/vgai-scene-game-adapter.ts +5 -14
  485. package/src/animation/anim-graph-types.ts +12 -43
  486. package/src/animation/animation-clock.ts +479 -0
  487. package/src/animation/camera-ownership.ts +467 -0
  488. package/src/animation/cinematic-cues.ts +451 -0
  489. package/src/animation/clip-map.ts +41 -0
  490. package/src/animation/gsap-registration.ts +184 -0
  491. package/src/animation/theatre-clock-binding.ts +111 -0
  492. package/src/animation/theatre-director.ts +347 -0
  493. package/src/animation/theatre-object-binding.ts +661 -0
  494. package/src/animation/xstate-animation-binding.ts +398 -0
  495. package/src/animation/xstate-animation-meta.ts +282 -0
  496. package/src/audio/index.ts +39 -7
  497. package/src/audio/tone-clock-binding.ts +98 -0
  498. package/src/audio/tone-context.ts +129 -0
  499. package/src/audio/tone-offline-render.ts +167 -0
  500. package/src/audio/wav-encode.ts +119 -0
  501. package/src/core/game-loop.ts +17 -0
  502. package/src/core/types.ts +13 -0
  503. package/src/data/data-asset.ts +167 -0
  504. package/src/data/data-check-core.ts +242 -0
  505. package/src/data/data-ref.ts +145 -0
  506. package/src/data/vite-plugin-data.ts +290 -0
  507. package/src/index.ts +48 -0
  508. package/src/input/input-manager.ts +1206 -32
  509. package/src/input/input-types.ts +155 -3
  510. package/src/input/prompt-labels.ts +122 -0
  511. package/src/input/rebind-controller.ts +105 -0
  512. package/src/input/schema.ts +206 -52
  513. package/src/react/use-data.ts +114 -0
  514. package/src/react/use-selection.tsx +135 -0
  515. package/src/runtime/create-runtime.ts +30 -9
  516. package/src/runtime/render-audio-control.ts +168 -0
  517. package/src/runtime/render-control.ts +522 -0
  518. package/src/runtime/render-seed.ts +79 -0
  519. package/src/runtime/types.ts +0 -5
  520. package/src/scene/asset-loaders.ts +10 -36
  521. package/src/scene/asset-paths.ts +0 -2
  522. package/src/scene/asset-ref-check.ts +248 -0
  523. package/src/scene/parse.ts +133 -0
  524. package/src/scene/scene-loader.ts +81 -96
  525. package/src/scene/schema/animation.ts +30 -79
  526. package/src/scene/schema/entity.ts +20 -0
  527. package/src/scene/schema/index.ts +2 -12
  528. package/src/scene/user-data.ts +8 -9
  529. package/src/setup/setup-renderer.ts +9 -2
  530. package/src/tools/define-tool.ts +152 -0
  531. package/src/animation/anim-graph.ts +0 -406
  532. package/src/animation/anim-system.ts +0 -28
  533. package/src/animation/property-track.ts +0 -178
  534. package/src/animation/schema.ts +0 -204
  535. package/src/audio/ambient.ts +0 -300
  536. package/src/audio/impacts.ts +0 -212
  537. package/src/audio/movement.ts +0 -140
  538. package/src/audio/musical.ts +0 -200
  539. package/src/audio/ui-sounds.ts +0 -171
  540. package/src/audio/vehicle.ts +0 -235
  541. package/src/audio/weapons.ts +0 -152
@@ -0,0 +1,105 @@
1
+ import { z } from 'zod';
2
+ export const RENDER_FEATURES = [
3
+ {
4
+ key: 'autoBatch',
5
+ label: 'Auto-batching',
6
+ description: 'Automatically batch entities sharing geometry+material into one draw call (InstancedMesh/BatchedMesh) while keeping each Object3D as the handle. The headline perf win; opt out per-entity for custom-shader/skinned meshes.',
7
+ kind: 'toggle',
8
+ default: true,
9
+ apply: 'live',
10
+ perEntity: true,
11
+ },
12
+ {
13
+ key: 'frustumCulling',
14
+ label: 'Frustum culling',
15
+ description: 'Per-instance frustum culling for batched content.',
16
+ kind: 'toggle',
17
+ default: true,
18
+ apply: 'live',
19
+ perEntity: true,
20
+ },
21
+ {
22
+ key: 'lod',
23
+ label: 'Level of detail',
24
+ description: 'Distance-based geometry swap (LOD) for eligible entities.',
25
+ kind: 'toggle',
26
+ default: true,
27
+ apply: 'live',
28
+ perEntity: true,
29
+ },
30
+ {
31
+ key: 'shadows',
32
+ label: 'Shadows',
33
+ description: 'Enable the shadow map. Per-entity cast/receive still applies.',
34
+ kind: 'toggle',
35
+ default: true,
36
+ apply: 'live',
37
+ perEntity: true,
38
+ },
39
+ {
40
+ key: 'postProcessing',
41
+ label: 'Post-processing',
42
+ description: 'Master switch for the post-processing stack (individual effects nest beneath it).',
43
+ kind: 'toggle',
44
+ default: true,
45
+ apply: 'live',
46
+ perEntity: false,
47
+ },
48
+ {
49
+ key: 'resolutionScale',
50
+ label: 'Resolution scale',
51
+ description: 'Device-pixel-ratio multiplier (1.0 = native). The cheapest perf dial.',
52
+ kind: 'number',
53
+ default: 1,
54
+ apply: 'live',
55
+ perEntity: false,
56
+ range: [0.25, 2],
57
+ },
58
+ {
59
+ key: 'antialias',
60
+ label: 'Antialiasing',
61
+ description: 'MSAA via renderer construction. Applies on reload (renderer re-init).',
62
+ kind: 'toggle',
63
+ default: true,
64
+ apply: 'reload',
65
+ perEntity: false,
66
+ },
67
+ {
68
+ key: 'backend',
69
+ label: 'Renderer backend',
70
+ description: 'GPU backend: auto picks WebGPU when available, else WebGL2. Applies on reload.',
71
+ kind: 'enum',
72
+ default: 'auto',
73
+ apply: 'reload',
74
+ perEntity: false,
75
+ options: ['auto', 'webgl', 'webgpu'],
76
+ },
77
+ ];
78
+ /** Map for O(1) lookup by key. */
79
+ export const RENDER_FEATURE_BY_KEY = new Map(RENDER_FEATURES.map((f) => [f.key, f]));
80
+ /**
81
+ * Build a Zod object for the render settings, derived from the registry so the
82
+ * schema can never drift from the feature list. All fields optional — absence
83
+ * means "inherit" in the cascade. `perEntityOnly` builds the per-entity override
84
+ * schema (only features whose `perEntity` is true).
85
+ */
86
+ export function buildRenderingZod(opts = {}) {
87
+ const shape = {};
88
+ for (const f of RENDER_FEATURES) {
89
+ if (opts.perEntityOnly && !f.perEntity)
90
+ continue;
91
+ let base;
92
+ if (f.kind === 'toggle')
93
+ base = z.boolean();
94
+ else if (f.kind === 'number')
95
+ base = z.number();
96
+ else
97
+ base = z.enum(f.options);
98
+ shape[f.key] = base.optional().describe(f.description);
99
+ }
100
+ return z
101
+ .object(shape)
102
+ .describe(opts.perEntityOnly
103
+ ? 'Per-entity render overrides (omit a field to inherit from the scene/engine default)'
104
+ : 'Scene render settings (omit a field to inherit the engine default)');
105
+ }
@@ -0,0 +1,36 @@
1
+ import { type RenderFeatureValue } from './render-features';
2
+ /**
3
+ * Cascade resolution for render settings: engine default → scene → entity, with
4
+ * tri-state inherit (an absent value inherits from the next level up). See
5
+ * docs/research/RENDER-SETTINGS-UX.md.
6
+ */
7
+ /** A partial override map (scene-level or entity-level). Absent key = inherit. */
8
+ export type RenderScope = Partial<Record<string, RenderFeatureValue>>;
9
+ /** Fully-resolved settings: every registry key present. */
10
+ export type ResolvedRenderSettings = Record<string, RenderFeatureValue>;
11
+ /**
12
+ * Resolve effective settings. `entity` overrides only apply to features whose
13
+ * `perEntity` flag is set; non-per-entity features resolve across engine→scene
14
+ * only. `??` walks up the chain on `undefined` (inherit) but lets an explicit
15
+ * `false`/`0` override (they are not nullish).
16
+ */
17
+ export declare function resolveRenderSettings(scene?: RenderScope, entity?: RenderScope): ResolvedRenderSettings;
18
+ /**
19
+ * A small observable holding the live scene-level resolved settings. Live
20
+ * features re-apply when a value changes (subscribers are notified with the
21
+ * changed key). This is the seam a future player-facing graphics menu would
22
+ * drive — for now it backs the editor toggles + the runtime systems.
23
+ */
24
+ export declare class RenderSettings {
25
+ private values;
26
+ private listeners;
27
+ constructor(scene?: RenderScope);
28
+ get(key: string): RenderFeatureValue;
29
+ /** Set a scene-level value; notifies subscribers if it changed. */
30
+ set(key: string, value: RenderFeatureValue): void;
31
+ /** Resolve the effective value for an entity (entity override → scene → default). */
32
+ forEntity(key: string, entity?: RenderScope): RenderFeatureValue;
33
+ subscribe(fn: (key: string, value: RenderFeatureValue) => void): () => void;
34
+ snapshot(): ResolvedRenderSettings;
35
+ }
36
+ //# sourceMappingURL=render-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-settings.d.ts","sourceRoot":"","sources":["../../src/render/render-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE7E;;;;GAIG;AAEH,kFAAkF;AAClF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAEtE,2DAA2D;AAC3D,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,CAAC,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,sBAAsB,CAOxB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,SAAS,CAA+D;gBAEpE,KAAK,CAAC,EAAE,WAAW;IAI/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAIpC,mEAAmE;IACnE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAMjD,qFAAqF;IACrF,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,kBAAkB;IAKhE,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,MAAM,IAAI;IAK3E,QAAQ,IAAI,sBAAsB;CAGnC"}
@@ -0,0 +1,51 @@
1
+ import { RENDER_FEATURES } from './render-features';
2
+ /**
3
+ * Resolve effective settings. `entity` overrides only apply to features whose
4
+ * `perEntity` flag is set; non-per-entity features resolve across engine→scene
5
+ * only. `??` walks up the chain on `undefined` (inherit) but lets an explicit
6
+ * `false`/`0` override (they are not nullish).
7
+ */
8
+ export function resolveRenderSettings(scene, entity) {
9
+ const out = {};
10
+ for (const f of RENDER_FEATURES) {
11
+ const entityVal = f.perEntity ? entity?.[f.key] : undefined;
12
+ out[f.key] = entityVal ?? scene?.[f.key] ?? f.default;
13
+ }
14
+ return out;
15
+ }
16
+ /**
17
+ * A small observable holding the live scene-level resolved settings. Live
18
+ * features re-apply when a value changes (subscribers are notified with the
19
+ * changed key). This is the seam a future player-facing graphics menu would
20
+ * drive — for now it backs the editor toggles + the runtime systems.
21
+ */
22
+ export class RenderSettings {
23
+ values;
24
+ listeners = new Set();
25
+ constructor(scene) {
26
+ this.values = resolveRenderSettings(scene);
27
+ }
28
+ get(key) {
29
+ return this.values[key];
30
+ }
31
+ /** Set a scene-level value; notifies subscribers if it changed. */
32
+ set(key, value) {
33
+ if (this.values[key] === value)
34
+ return;
35
+ this.values[key] = value;
36
+ for (const fn of this.listeners)
37
+ fn(key, value);
38
+ }
39
+ /** Resolve the effective value for an entity (entity override → scene → default). */
40
+ forEntity(key, entity) {
41
+ const f = entity?.[key];
42
+ return f ?? this.values[key];
43
+ }
44
+ subscribe(fn) {
45
+ this.listeners.add(fn);
46
+ return () => this.listeners.delete(fn);
47
+ }
48
+ snapshot() {
49
+ return { ...this.values };
50
+ }
51
+ }
@@ -0,0 +1,280 @@
1
+ import * as THREE from 'three';
2
+ import type { GameAdapter, MountedGame, MountedReactWorld } from '../adapter/game-adapter';
3
+ import { type VgaiSceneConfig } from '../adapter/vgai-scene-game-adapter';
4
+ import type { MountedGame2D, World2DHost } from '../world2d/pixi-game-adapter';
5
+ import { type Game, type GameInternal, type WorldInstance } from './game';
6
+ export { adoptSceneCamera } from '../adapter/vgai-scene-game-adapter';
7
+ /**
8
+ * Register a threejs world onto the Game shell. `opts.id` defaults to
9
+ * `'main'` — the single-world callers (`createGameRuntime`, slice-1/2 tests)
10
+ * are unaffected; a second/third world (T7.1 slice 3's two-world proof, and
11
+ * real multi-world manifests later) pass an explicit id. This is the ONE
12
+ * registration code path for a threejs world, whatever its id.
13
+ */
14
+ export declare function registerThreeWorld(game: GameInternal, adapter: GameAdapter, mounted: MountedGame, opts?: {
15
+ id?: string | undefined;
16
+ pausable?: boolean | undefined;
17
+ }): WorldInstance;
18
+ /** Thin alias kept for existing single-world callers (`createGameRuntime`,
19
+ * `test/game-root.test.ts`, `test/frame-order.test.ts`) — registers the
20
+ * default `'main'` world via the SAME `registerThreeWorld` code path. */
21
+ export declare function registerDefaultThreeWorld(game: GameInternal, adapter: GameAdapter, mounted: MountedGame): WorldInstance;
22
+ export declare function registerPixiWorld(game: GameInternal, adapter: Pixi2DGameAdapter, mounted: MountedGame2D, opts?: {
23
+ id?: string | undefined;
24
+ pausable?: boolean | undefined;
25
+ }): WorldInstance;
26
+ /**
27
+ * Register a react world onto the Game shell (T6.2 slice 1,
28
+ * `docs/REACT-WORLD-DESIGN.md` §1.B) — the react analog of
29
+ * {@link registerThreeWorld}/{@link registerPixiWorld}. A react world has no
30
+ * `ComponentManager` to adopt (D8: react entities host no GameComponents —
31
+ * there is nothing for `adoptWorld` to backfill, unlike the three/pixi
32
+ * siblings above) and no `frame` hooks (react's own `createRoot` schedules
33
+ * its commits; `GameInternal.runFrame` correctly leaves a world with no
34
+ * `frame` untouched by its opaque-`update` fallback too, since
35
+ * `MountedReactGame` declares no `update`). `adapter` is typed as the real
36
+ * {@link ReactWorldAdapter} shape (T7.5, same reasoning as
37
+ * `registerPixiWorld`'s doc comment above) — `WorldInstance.adapter` only
38
+ * needs `.id`, so this passes through with zero cast.
39
+ */
40
+ export declare function registerReactWorld(game: GameInternal, adapter: ReactWorldAdapter, mounted: MountedReactGame, container: HTMLElement, opts?: {
41
+ id?: string | undefined;
42
+ pausable?: boolean | undefined;
43
+ }): WorldInstance;
44
+ /**
45
+ * Configuration for {@link createGameRuntime}.
46
+ *
47
+ * The host depends on a {@link GameAdapter}. For convenience, the legacy
48
+ * first-party fields (`setup`/`scenePath`/`sceneData`/…) are accepted and wrapped
49
+ * in a {@link VgaiSceneGameAdapter} when no explicit `adapter` is given — so the
50
+ * host's default implementer is first-party, but the host itself only ever
51
+ * mounts "a GameAdapter".
52
+ *
53
+ * This is the LEGACY (single-world) shape — preserved byte-for-byte (T6.1
54
+ * slice 1, docs/MULTI-WORLD-DESIGN.md §1.A): every existing caller and test
55
+ * passes this shape unmodified. See {@link WorldsRuntimeConfig} for the new
56
+ * multi-world alternative and {@link RuntimeConfig} for the union.
57
+ */
58
+ export interface LegacyRuntimeConfig extends VgaiSceneConfig {
59
+ canvas: HTMLCanvasElement;
60
+ width?: number | undefined;
61
+ height?: number | undefined;
62
+ /** An explicit game adapter to mount (first-party OR external). */
63
+ adapter?: GameAdapter | undefined;
64
+ }
65
+ /**
66
+ * A pixijs-shaped adapter — the structural contract `WorldMountSpec`'s
67
+ * `pixijs` variant requires. `PixiSceneGameAdapter` (`world2d/
68
+ * pixi-game-adapter.ts`) satisfies this today; it is deliberately NOT named
69
+ * here as a concrete type so an external pixi adapter can satisfy the same
70
+ * shape without importing the first-party implementer.
71
+ */
72
+ export interface Pixi2DGameAdapter {
73
+ readonly id: string;
74
+ mount(host: World2DHost): Promise<MountedGame2D>;
75
+ }
76
+ /**
77
+ * One world to mount in the {@link WorldsRuntimeConfig} worlds path (T6.1
78
+ * slice 1) — the host-facing mirror of `manifest/load.ts`'s
79
+ * `ResolvedWorldEntry` (same `id`/`zOrder`/`pausable`/`loop` fields; the
80
+ * manifest-to-host translation itself is the editor's job, not this file's).
81
+ *
82
+ * `react` (T6.2 slice 1, `docs/REACT-WORLD-DESIGN.md`) mounts as a DOM-root
83
+ * layer `<div>` in the SAME stack instead of a canvas — see
84
+ * {@link ReactWorldMountSpec}/{@link ReactWorldAdapter} below.
85
+ */
86
+ export interface WorldMountSpecBase {
87
+ /** Manifest id — must be unique within one `worlds` array. */
88
+ readonly id: string;
89
+ /** Canvas stacking order (COMPOSITION-DESIGN D5 §1); ties broken by array
90
+ * order, mirroring `manifest/load.ts`'s `loadGameManifest` sort. Defaults
91
+ * to `0`. */
92
+ readonly zOrder?: number | undefined;
93
+ /** Whether play-mode pause/step applies to this world (D10). Defaults to `true`. */
94
+ readonly pausable?: boolean | undefined;
95
+ /** `'gated'` (host-driven, default) or `'self-driven'` (this world drives
96
+ * its own loop — D5's "composited, unsynchronized" tier). Carried through
97
+ * for parity with `ResolvedWorldEntry`; T6.1 slice 1 does not yet
98
+ * validate it against the mounted adapter's actual `drivesOwnLoop` (that
99
+ * cross-check, if ever needed, is T7.6's loop-gate surface). */
100
+ readonly loop?: 'gated' | 'self-driven' | undefined;
101
+ /**
102
+ * Optional claim predicate for the delegating input router (D5 §2a), over
103
+ * a point RELATIVE TO THE CONTAINER. Absent means: this world claims only
104
+ * if it ends up the bottom (lowest zOrder) world — see
105
+ * `input-router.ts`'s `resolveClaimingWorld`. A pixijs world with no
106
+ * explicit `hitTest` gets a REAL default derived from its own mounted
107
+ * stage's `EventBoundary.hitTest` (see `derivePixiHitTest` below) — a
108
+ * threejs world with no explicit `hitTest` gets no default (three has no
109
+ * cheap universal "is this pixel interactive" answer).
110
+ */
111
+ readonly hitTest?: ((x: number, y: number) => boolean) | undefined;
112
+ }
113
+ export interface ThreeWorldMountSpec extends WorldMountSpecBase {
114
+ readonly kind: 'threejs';
115
+ readonly adapter: GameAdapter;
116
+ }
117
+ export interface PixiWorldMountSpec extends WorldMountSpecBase {
118
+ readonly kind: 'pixijs';
119
+ readonly adapter: Pixi2DGameAdapter;
120
+ }
121
+ /**
122
+ * The host-facing surface handed to a {@link ReactWorldAdapter}'s `mount`
123
+ * (T6.2 slice 1, `docs/REACT-WORLD-DESIGN.md` §1.B) — the react analog of
124
+ * {@link World2DHost}. `container` is the absolutely-positioned, z-ordered
125
+ * DOM-root layer `<div>` the host already created and stacked (same box/
126
+ * z-order rules as a canvas per COMPOSITION-DESIGN D5 §1) — the adapter's
127
+ * `mount` renders its react tree INTO this exact element via `createRoot`;
128
+ * it must never create its own root element (mirrors `HostContext`'s
129
+ * "the world's runtime renders into the surface it is handed" rule for
130
+ * canvases, `docs/GAME-ROOT-DESIGN.md` §2).
131
+ */
132
+ export interface ReactWorldHost {
133
+ readonly container: HTMLElement;
134
+ /**
135
+ * The Game this world is being mounted into — symmetric with
136
+ * `HostContext.game`; what a react adapter hands to `<GameProvider>` so
137
+ * `useGameState` selectors read live state (T7.4 bridge).
138
+ *
139
+ * Optional as of D-V3 (docs/WAVE5-MULTIWORLD-INGEST-DESIGN.md, F24
140
+ * composite): a `default-react` sibling mounted BESIDE an ingest world
141
+ * (`packages/editor/src/ingest-siblings.ts`) has no native `Game` to hand
142
+ * it — there is no first-party `GameContext`/loop for the sibling to join,
143
+ * only the ingested world's own foreign runtime — so its host carries no
144
+ * `game` at all rather than fabricating an empty one (anti-shim rule); the
145
+ * sibling mounts its entry component bare, with no `<GameProvider>` wrap.
146
+ * `mountOneReactWorld` below (the NATIVE multi-world runtime path) still
147
+ * ALWAYS supplies a real `game` — this optionality is reached only by the
148
+ * composite sibling's own hand-built host, never by weakening the native
149
+ * path's guarantee.
150
+ */
151
+ readonly game?: Game;
152
+ }
153
+ /**
154
+ * A live, mounted react world (T6.2 slice 1) — the react analog of
155
+ * {@link MountedGame2D}. React worlds host no ticking components (D8 —
156
+ * `ecs/component-manager.ts` already throws on any attach to a react-kind
157
+ * manager) and render from game state via the T7.4 bridge instead of a
158
+ * per-frame `update`, so this shape carries no `update`/`fixedUpdate`/
159
+ * `ctx`/`frame` — `drivesOwnLoop` is always `false` (react's `createRoot`
160
+ * schedules its OWN commits; the host's fixed-step loop never drives it,
161
+ * and it is correctly skipped by `GameInternal.runFrame`'s per-world
162
+ * `frame`-hooks/opaque-`update` dispatch — see `registerReactWorld` below,
163
+ * which registers this `WorldInstance` with no `frame`, same as any other
164
+ * opaque mount with nothing to tick).
165
+ *
166
+ * Deliberately carries NO `firstParty: true` brand: that brand specifically
167
+ * means "has a `.ctx: GameContext`" (`isFirstPartyMounted`,
168
+ * `runtime/game.ts`) — a react world has no Rapier/ComponentManager/
169
+ * GameContext at all, so branding it first-party would be a type lie.
170
+ * `Game.registerWorld`'s "no state bridge" console warning
171
+ * (`docs/REACT-STATE-BRIDGE.md` §4) explicitly exempts `kind: 'react'`
172
+ * (§7.1-15): a react world has no `observe` BY DESIGN — that hook is scoped
173
+ * to `useWorldObservation` (the ingested/foreign-world case), not
174
+ * `useGameState` (`ui/game-state.tsx`), which a react world's own mounted
175
+ * tree uses instead — it reads `Game.state` directly (T7.4's actual bridge
176
+ * for first-party-observable state), never a per-world `observe`.
177
+ *
178
+ * `kind`/`container` (T7.5) satisfy `MountedReactWorld` (`adapter/
179
+ * game-adapter.ts`) — `container` is the SAME `ReactWorldHost.container` the
180
+ * adapter's `mount` was handed (identity matters, mirroring `threeRoot()`/
181
+ * `pixiRoot()`'s "same instance the adapter mounted" contract); every
182
+ * `ReactWorldAdapter` implementer echoes it back here so `mounted` alone
183
+ * (with no separately-threaded `container`) satisfies the union
184
+ * `WorldInstanceInit.mounted`/`WorldInstance.mounted` with zero cast.
185
+ */
186
+ export interface MountedReactGame extends MountedReactWorld {
187
+ readonly drivesOwnLoop: false;
188
+ }
189
+ /**
190
+ * A react-shaped adapter — the structural contract `WorldMountSpec`'s
191
+ * `react` variant requires. Mirrors {@link Pixi2DGameAdapter}: deliberately
192
+ * NOT tied to a concrete implementer here so an editor-resolved adapter (the
193
+ * `default-react` resolver branch, T6.2's editor-side follow-up) can satisfy
194
+ * this shape without this file importing react-dom or any editor code.
195
+ */
196
+ export interface ReactWorldAdapter {
197
+ readonly id: string;
198
+ mount(host: ReactWorldHost): Promise<MountedReactGame>;
199
+ }
200
+ export interface ReactWorldMountSpec extends WorldMountSpecBase {
201
+ readonly kind: 'react';
202
+ readonly adapter: ReactWorldAdapter;
203
+ }
204
+ export type WorldMountSpec = ThreeWorldMountSpec | PixiWorldMountSpec | ReactWorldMountSpec;
205
+ /**
206
+ * The NEW multi-world alternative to {@link LegacyRuntimeConfig} (T6.1 slice
207
+ * 1, docs/MULTI-WORLD-DESIGN.md §1.A; react worlds T6.2 slice 1,
208
+ * docs/REACT-WORLD-DESIGN.md §1.B): mount N worlds (threejs + pixijs + react)
209
+ * on ONE `Game`, stacked in `container` per COMPOSITION-DESIGN D5 §1.
210
+ * Internally the legacy signature maps to a one-element worlds list —
211
+ * `worlds[0]` (by `Game.defaultWorld`'s existing "first threejs world, else
212
+ * first world" rule) is the default world, so
213
+ * `GameSession.scene`/`.camera`/`.mounted` keep aliasing exactly as they do
214
+ * today.
215
+ */
216
+ export interface WorldsRuntimeConfig {
217
+ /** The host creates one absolutely-positioned surface per world inside
218
+ * this element (D5 §1) — a canvas for threejs/pixijs, a DOM-root `<div>`
219
+ * layer for react — plus one shared UI overlay above all of them. */
220
+ container: HTMLElement;
221
+ worlds: WorldMountSpec[];
222
+ width?: number | undefined;
223
+ height?: number | undefined;
224
+ /**
225
+ * Mirrors `HostContext.headless` (Node conformance tests — no GPU): skips
226
+ * real `WebGLRenderer` construction for every threejs world in this
227
+ * session (a stand-in renderer is used instead, exactly as
228
+ * `VgaiSceneGameAdapter.mount` already special-cases `host.headless`
229
+ * internally). Pixijs worlds are unaffected — Pixi already falls back to
230
+ * a 2D canvas renderer with no GPU. Never set `true` in a real host.
231
+ */
232
+ headless?: boolean | undefined;
233
+ }
234
+ /** The full config union `createGameRuntime` accepts — the legacy
235
+ * single-`{canvas, adapter}` shape, or the new worlds path. */
236
+ export type RuntimeConfig = LegacyRuntimeConfig | WorldsRuntimeConfig;
237
+ /**
238
+ * Handle returned by createGameRuntime() for controlling the running game.
239
+ *
240
+ * This is the GENERIC host handle — it has no first-party concepts (no
241
+ * `GameContext`, no `GameSetupFn`). First-party features (the live `GameContext`,
242
+ * warm-restart hot reload) are reached by casting `mounted` to `VgaiMountedGame`
243
+ * (the editor does this for HMR/physics-sync — those are inherently first-party).
244
+ *
245
+ * `scene`/`camera`/`mounted` alias the Game's `defaultWorld` (T6.1 slice 1):
246
+ * for the legacy single-world path this is the only world, byte-identical to
247
+ * before; for the worlds path it is the first threejs world (else the first
248
+ * world) by DECLARATION order, per `Game.defaultWorld`'s existing rule —
249
+ * independent of `zOrder`/canvas stacking, which is a rendering-only concern.
250
+ */
251
+ export interface GameSession {
252
+ stop(): void;
253
+ pause(): void;
254
+ resume(): void;
255
+ step(): void;
256
+ resize(width: number, height: number): void;
257
+ readonly scene: THREE.Scene;
258
+ readonly camera: THREE.PerspectiveCamera;
259
+ /** The mounted game (interface surface). Cast to `VgaiMountedGame` for first-party extras. */
260
+ readonly mounted: MountedGame;
261
+ /** The Game root (T6.1 slice 1) — the multi-world entry point
262
+ * (`game.worlds`/`game.world(id)`/`game.queryByComponent`) for callers
263
+ * that need more than the default-world aliases above. */
264
+ readonly game: Game;
265
+ }
266
+ /**
267
+ * Bootstrap the game host and mount a game adapter.
268
+ *
269
+ * `createGameRuntime` is the HOST: it owns the canvas/renderer(s), the loop,
270
+ * the UI overlay, and the asset cache, and it mounts a {@link GameAdapter}
271
+ * (or several, via the worlds path — T6.1 slice 1) against that context. It
272
+ * knows nothing about `.vscn`, `GameComponent`, Rapier, or `GameSetupFn` —
273
+ * those live inside the first-party {@link VgaiSceneGameAdapter}, which is
274
+ * the default implementer when no explicit `adapter` is supplied on the
275
+ * legacy path. Dispatches on `config`'s shape: {@link WorldsRuntimeConfig}
276
+ * (`worlds` present) goes through {@link createWorldsGameRuntime};
277
+ * everything else is the byte-compatible legacy single-world path.
278
+ */
279
+ export declare function createGameRuntime(config: RuntimeConfig): Promise<GameSession>;
280
+ //# sourceMappingURL=create-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/create-runtime.ts"],"names":[],"mappings":"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"}