@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,41 @@
1
+ /**
2
+ * Pure, react-free frame-version cache (T7.4 slice 1 — `docs/
3
+ * REACT-STATE-BRIDGE.md` §3). `useGameState` (`packages/editor/template/src/
4
+ * ui/game-state.tsx`) is a thin `useSyncExternalStore` wrapper
5
+ * around this: `getSnapshot` re-runs the selector once per `frameVersion`
6
+ * bump (`GameStateBridge`, `runtime/state-bridge.ts`), caches by version,
7
+ * and returns the PREVIOUS reference when `equals` holds against the fresh
8
+ * result — that reference stability is what lets `useSyncExternalStore`
9
+ * (and thus React) bail out of a re-render.
10
+ *
11
+ * Extracted to its own react-free module (no react import here, or anywhere
12
+ * under `runtime/`) so this cache/equality logic — the part of the hook
13
+ * that has real branching to get wrong — is unit-testable headlessly under
14
+ * `packages/engine/test/`, without needing a react test harness (none
15
+ * exists in this repo today; see `test/frame-selector-cache.test.ts`).
16
+ */
17
+ /** Equality comparator for `FrameSelectorCache`/`useGameState`. Defaults to
18
+ * `Object.is` (T7.4 §3); pass {@link shallow} for tuples/plain objects. */
19
+ export type Equals<T> = (a: T, b: T) => boolean;
20
+ /**
21
+ * One-level shallow-equality helper (own enumerable keys, `Object.is` per
22
+ * value) — the opt-in equality for selectors that return a fresh
23
+ * object/array/tuple every call. Two non-object values fall back to
24
+ * `Object.is`; a non-object compared against an object is never equal.
25
+ */
26
+ export declare function shallow<T>(a: T, b: T): boolean;
27
+ export interface FrameSelectorCache<T> {
28
+ /**
29
+ * Return the cached value for `frameVersion` if it's the SAME version as
30
+ * the last call (selector not re-run at all). Otherwise call `compute()`
31
+ * once: if the fresh result is `equals` to the previously cached value,
32
+ * the PREVIOUS reference is returned (and re-tagged with this
33
+ * `frameVersion`, so the next same-version call also short-circuits);
34
+ * otherwise the fresh value is cached and returned.
35
+ */
36
+ get(frameVersion: number, compute: () => T): T;
37
+ }
38
+ /** Construct a fresh per-subscriber cache. One per `useGameState` call site
39
+ * (a fresh cache each mount — see the hook). */
40
+ export declare function createFrameSelectorCache<T>(equals?: Equals<T>): FrameSelectorCache<T>;
41
+ //# sourceMappingURL=frame-selector-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-selector-cache.d.ts","sourceRoot":"","sources":["../../src/runtime/frame-selector-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;4EAC4E;AAC5E,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAa9C;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC;;;;;;;OAOG;IACH,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;CAChD;AAED;iDACiD;AACjD,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAE,MAAM,CAAC,CAAC,CAAa,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAwBhG"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Pure, react-free frame-version cache (T7.4 slice 1 — `docs/
3
+ * REACT-STATE-BRIDGE.md` §3). `useGameState` (`packages/editor/template/src/
4
+ * ui/game-state.tsx`) is a thin `useSyncExternalStore` wrapper
5
+ * around this: `getSnapshot` re-runs the selector once per `frameVersion`
6
+ * bump (`GameStateBridge`, `runtime/state-bridge.ts`), caches by version,
7
+ * and returns the PREVIOUS reference when `equals` holds against the fresh
8
+ * result — that reference stability is what lets `useSyncExternalStore`
9
+ * (and thus React) bail out of a re-render.
10
+ *
11
+ * Extracted to its own react-free module (no react import here, or anywhere
12
+ * under `runtime/`) so this cache/equality logic — the part of the hook
13
+ * that has real branching to get wrong — is unit-testable headlessly under
14
+ * `packages/engine/test/`, without needing a react test harness (none
15
+ * exists in this repo today; see `test/frame-selector-cache.test.ts`).
16
+ */
17
+ /**
18
+ * One-level shallow-equality helper (own enumerable keys, `Object.is` per
19
+ * value) — the opt-in equality for selectors that return a fresh
20
+ * object/array/tuple every call. Two non-object values fall back to
21
+ * `Object.is`; a non-object compared against an object is never equal.
22
+ */
23
+ export function shallow(a, b) {
24
+ if (Object.is(a, b))
25
+ return true;
26
+ if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) {
27
+ return false;
28
+ }
29
+ const aKeys = Object.keys(a);
30
+ const bKeys = Object.keys(b);
31
+ if (aKeys.length !== bKeys.length)
32
+ return false;
33
+ const bRecord = b;
34
+ for (const key of aKeys) {
35
+ if (!Object.is(a[key], bRecord[key]))
36
+ return false;
37
+ }
38
+ return true;
39
+ }
40
+ /** Construct a fresh per-subscriber cache. One per `useGameState` call site
41
+ * (a fresh cache each mount — see the hook). */
42
+ export function createFrameSelectorCache(equals = Object.is) {
43
+ let hasValue = false;
44
+ let cachedVersion = -1;
45
+ let cachedValue;
46
+ return {
47
+ get(frameVersion, compute) {
48
+ if (hasValue && frameVersion === cachedVersion) {
49
+ return cachedValue;
50
+ }
51
+ const next = compute();
52
+ if (hasValue && equals(cachedValue, next)) {
53
+ // Bail-out: keep the PREVIOUS reference, but remember we're current
54
+ // as of this frameVersion so a repeat call at the same version
55
+ // doesn't even re-run `compute`.
56
+ cachedVersion = frameVersion;
57
+ return cachedValue;
58
+ }
59
+ cachedValue = next;
60
+ cachedVersion = frameVersion;
61
+ hasValue = true;
62
+ return cachedValue;
63
+ },
64
+ };
65
+ }
@@ -0,0 +1,433 @@
1
+ /**
2
+ * Game root — T7.1 slice 1 ("introduce Game internally") + slice 2 ("world
3
+ * registry + ordered frame algorithm"), extended in T7.3 slice 1 with real
4
+ * `'pixijs'`-kind `WorldInstance` support (`stage`/`physics2d`/`collisions2d`,
5
+ * a real `pixiRoot()`) so `world2d/pixi-game-adapter.ts` can register its
6
+ * world onto a real `Game` instead of driving its own loop, and in T7.3
7
+ * slice 2 with a construction-time stage check (symmetric with the
8
+ * threejs/scene check) and the two-world (threejs + pixijs) proof
9
+ * (`test/game-three-plus-pixi.test.ts`). T6.2 slice 1 adds real `'react'`-kind
10
+ * `WorldInstance` support (`container`, a real `reactRoot()`) — the DOM-root
11
+ * world surface `runtime/create-runtime.ts`'s worlds path now mounts (see
12
+ * `docs/REACT-WORLD-DESIGN.md` §1.B); react worlds host no `ComponentManager`
13
+ * (D8 — components attaching to a react-kind manager already throw,
14
+ * `ecs/component-manager.ts`), so `physics`/`collisions`/`camera`/`frame`
15
+ * stay `undefined` for them exactly like an opaque/foreign mount.
16
+ *
17
+ * See `docs/GAME-ROOT-DESIGN.md` (D6), particularly §4 (the frame algorithm)
18
+ * and §8 stage 2, for the full target shape. This file holds the Game/
19
+ * WorldInstance shell, the NEW game-scoped `SystemRunner`, and the
20
+ * host-facing `runFrame` frame executor. The public surface is NOT frozen
21
+ * yet — do not add these exports to a barrel/index; only the in-scope
22
+ * runtime/adapter files import this module directly. The `gpu` per-world
23
+ * cache is the one remaining slice-1 omission.
24
+ */
25
+ import type * as PIXI from 'pixi.js';
26
+ import type * as THREE from 'three';
27
+ import type { MountedWorld } from '../adapter/game-adapter';
28
+ import type { SystemAdapters } from '../adapter/system-adapter';
29
+ import type { VgaiMountedGame } from '../adapter/vgai-scene-game-adapter';
30
+ import type { WorldKind as WorldKindLeaf } from '../adapter/world-kind';
31
+ import type { AssetCache } from '../assets';
32
+ import type { createGameLoop } from '../core/game-loop';
33
+ import { type SystemRunner } from '../core/system-runner';
34
+ import { type SystemPhaseName } from '../core/types';
35
+ import type { ComponentManager } from '../ecs/component-manager';
36
+ import type { GameComponent } from '../ecs/game-component';
37
+ import type { InputManager } from '../input/input-manager';
38
+ import type { CollisionSystem } from '../physics/collision-system';
39
+ import type { PhysicsRegistry } from '../physics/physics-registry';
40
+ import type { AudioContext as GameAudio } from '../setup/setup-audio';
41
+ import type { Collision2DSystem } from '../world2d/collision-2d';
42
+ import type { Physics2DRegistry } from '../world2d/physics2d-registry';
43
+ import { type GameStateBridge } from './state-bridge';
44
+ /** The one loop type — `createGameLoop`'s return shape (D1, fixed-step). */
45
+ export type GameLoop = ReturnType<typeof createGameLoop>;
46
+ /**
47
+ * Game-level play-state control surface (D10, T7.6 — `docs/DECISIONS-PENDING.md`
48
+ * §D10): pause/resume/step as ONE control surface on the running game, with
49
+ * PER-WORLD `pausable` semantics (`WorldInstance.pausable`) — a menu/HUD world
50
+ * declaring `pausable: false` keeps ticking (input, components, physics) while
51
+ * every `pausable: true` world freezes. Interacts with D1 (deliberate
52
+ * fixed-rate rendering): a paused-and-pausable world's `render` phase still
53
+ * runs every substep (with `dt` forced to `0`, so time-based render effects —
54
+ * e.g. a post-processing pass with its own internal clock — don't silently
55
+ * keep animating under a "frozen" scene) — simulation freezes, the screen does
56
+ * not go black. `GameLoop.timeScale` (unaffected by this) remains the
57
+ * orthogonal "speed up/slow down" axis — pausing never touches it, so the
58
+ * host's accumulator/rAF loop keeps ticking at its normal cadence and keeps
59
+ * calling `runFrame`, which is what makes "paused still renders" possible
60
+ * (the previous `GameSession.pause()` implementation set `loop.timeScale = 0`,
61
+ * which — per D1 — starves the accumulator and stops rendering too; that was
62
+ * the bug this control surface replaces, not a compatible behavior to keep).
63
+ */
64
+ export interface PlayState {
65
+ /** Whether the game is currently paused (game-level — see the per-world
66
+ * `pausable` caveat above: a `pausable: false` world ignores this). */
67
+ readonly paused: boolean;
68
+ /**
69
+ * Freeze every `pausable` world's simulation (idempotent — a second call
70
+ * while already paused is a no-op) and, for every `pausable`, self-driven
71
+ * (`drivesOwnLoop`) world, invoke its loop-gate capability
72
+ * (`mounted.setPaused(true)`) — reporting loudly, once per world, when that
73
+ * capability is absent (an honest "cannot gate" instead of a silent no-op,
74
+ * `docs/CAPABILITY-TIERS.md` §d). Also silences every `pausable` world's
75
+ * audio via its `SystemAdapters.audio` (absent ⇒ the same loud, once-only
76
+ * report).
77
+ */
78
+ pause(): void;
79
+ /** Resume every `pausable` world — the inverse of `pause()`, same
80
+ * idempotency and loop-gate/audio fan-out (no re-reporting; a world that
81
+ * couldn't be gated on pause simply never was, so resume has nothing to
82
+ * undo for it). */
83
+ resume(): void;
84
+ /**
85
+ * Advance exactly the currently-FROZEN worlds by one fixed substep: the
86
+ * `pausable`, host-driven (`!drivesOwnLoop`) worlds while `paused` is
87
+ * true. While NOT paused this is a whole-call no-op — under D10 the loop
88
+ * never stops, so every non-frozen world is already being ticked; an
89
+ * unconditional extra tick was the §7.1-2 double-tick bug (probe4). A
90
+ * `pausable`, self-driven world that was actually gated by `pause()`
91
+ * (adapter has `setPaused`) steps via its own loop-gate `step()`
92
+ * capability instead (absent ⇒ the same loud report as `pause()`); a
93
+ * self-driven world the gate couldn't reach is still running and is left
94
+ * alone. `dt` defaults to the engine's fixed timestep (1/60s — every real
95
+ * host constructs its loop with this value; see `create-runtime.ts`).
96
+ */
97
+ step(dt?: number): void;
98
+ }
99
+ /**
100
+ * The kinds of render surface a world can be. `'threejs'` and `'pixijs'`
101
+ * worlds are real as of T7.3 slice 1 (`create-runtime.ts`'s default threejs
102
+ * world; `world2d/pixi-game-adapter.ts`'s pixi world); `'react'` is named
103
+ * here so the type is already shaped for T7.4 and no caller has to widen a
104
+ * union later.
105
+ *
106
+ * Re-exported from `adapter/world-kind.ts` (T7.5) — moved there so
107
+ * `adapter/game-adapter.ts`'s kind-tagged `MountedWorld` types can name it
108
+ * without an import cycle back to this file. This re-export keeps every
109
+ * existing `import type { WorldKind } from '../runtime/game'` call site
110
+ * (`ecs/game-component.ts`, `ecs/component-manager.ts`) compiling unchanged.
111
+ */
112
+ export type WorldKind = WorldKindLeaf;
113
+ /**
114
+ * A world's per-phase frame hooks (GAME-ROOT-DESIGN §4, T7.1 slice 2).
115
+ * Populated on a `WorldInstance` only for first-party mounts — an opaque/
116
+ * foreign mount has no phase-partitioned entry point, so it stays
117
+ * `undefined` and the Game's frame executor (`GameInternal.runFrame`) falls
118
+ * back to calling its single `mounted.update(dt)` once per substep instead.
119
+ */
120
+ export interface WorldFrameHooks {
121
+ /** Run this world's engine systems + component ticks + world-bound game
122
+ * systems for one phase. For a first-party world this delegates to the
123
+ * SAME `SystemRunner.runPhase` its (legacy) `mounted.update` uses. */
124
+ runPhase(phase: SystemPhaseName, dt: number): void;
125
+ /** Run once per substep, after ALL phases have run for ALL worlds this
126
+ * substep (mirrors where `mounted.update`'s post-`systems.run` work sat
127
+ * today — e.g. `input.endFrame()`). Optional: a world may have nothing
128
+ * to do here. */
129
+ endFrame?(): void;
130
+ }
131
+ /**
132
+ * A single world instance: the unit of adaptation (GAME-ROOT-DESIGN §3).
133
+ * Slice-1 subset — `gpu` (per-world GPU resource cache, §6.2) is omitted
134
+ * until the slice that builds it.
135
+ */
136
+ export interface WorldInstance {
137
+ /** Manifest id (T3.1). Slice 1 always registers exactly one: `'main'`. */
138
+ readonly id: string;
139
+ readonly kind: WorldKind;
140
+ /** Per-world play/pause semantics (D10, T7.6). Slice 1 always `true`. */
141
+ readonly pausable: boolean;
142
+ /** The GameAdapter that produced `mounted` — first-party or external.
143
+ * Deliberately narrower than `GameAdapter<K>` (T7.5): this field is only
144
+ * ever read for `.id` (`Game.registerWorld`'s diagnostic message below) —
145
+ * never re-invoked — and `GameAdapter<K>`'s `mount` signature legitimately
146
+ * differs per kind's host type (a pixijs adapter's `World2DHost`, a react
147
+ * adapter's `ReactWorldHost`, vs a threejs adapter's `HostContext`), so
148
+ * requiring the FULL interface here would force a cast at every non-
149
+ * threejs registration site for no behavioral gain — see `AdapterHandle`
150
+ * below. */
151
+ readonly adapter: AdapterHandle;
152
+ /** The live mounted surface — one of `MountedWorld`'s kind-tagged shapes
153
+ * (T7.5; `MountedThreeWorld` for a threejs world, `MountedPixiWorld` for
154
+ * pixijs, `MountedReactWorld` for react). */
155
+ readonly mounted: MountedWorld;
156
+ /** Kind-narrowed accessor: throws a descriptive error when this world is
157
+ * not a threejs world. */
158
+ threeRoot(): THREE.Scene;
159
+ /** Kind-narrowed accessor for pixijs worlds (T7.3): returns the stage
160
+ * passed to `createWorldInstance` for a `'pixijs'`-kind world. Throws
161
+ * descriptively for a non-pixijs world, or a pixijs world built without
162
+ * a `stage` (see `WorldInstanceInit.stage`). */
163
+ pixiRoot(): PIXI.Container;
164
+ /** Kind-narrowed accessor for react worlds (T6.2 slice 1,
165
+ * `docs/REACT-WORLD-DESIGN.md` §1.B): returns the DOM-root layer
166
+ * `<div>` the host mounted this world's react tree into (the SAME
167
+ * element passed as `container` to `createWorldInstance` — identity
168
+ * matters, mirroring `threeRoot()`/`pixiRoot()`'s "same instance the
169
+ * adapter mounted" contract). Throws descriptively for a non-react
170
+ * world, or a react world built without a `container` (see
171
+ * `WorldInstanceInit.container`). */
172
+ reactRoot(): HTMLElement;
173
+ /** Present only when the world's mount is first-party (Rapier3D for
174
+ * threejs worlds). */
175
+ readonly physics?: PhysicsRegistry | undefined;
176
+ readonly collisions?: CollisionSystem | undefined;
177
+ /** Present only when the world's mount is a first-party pixijs world
178
+ * (Rapier2D, T7.3) — the 2D analog of `physics`/`collisions` above. Kept
179
+ * as separate fields (not folded into `physics`/`collisions` as a union)
180
+ * so 3D call sites keep their non-union `PhysicsRegistry`/`CollisionSystem`
181
+ * typing unchanged. */
182
+ readonly physics2d?: Physics2DRegistry | undefined;
183
+ readonly collisions2d?: Collision2DSystem | undefined;
184
+ /** Kind-typed via `mounted` in T7.5; `unknown` here deliberately. */
185
+ readonly camera?: unknown;
186
+ /** Phase-partitioned frame entry point (T7.1 slice 2) — present only for
187
+ * first-party mounts. `undefined` for an opaque/foreign mount, which
188
+ * `GameInternal.runFrame` drives via its single `mounted.update` call
189
+ * instead (unless it `drivesOwnLoop`, in which case it isn't ticked at
190
+ * all — see `runFrame`). */
191
+ readonly frame?: WorldFrameHooks | undefined;
192
+ }
193
+ /**
194
+ * Minimal identity surface `WorldInstance.adapter` needs (T7.5) — see that
195
+ * field's doc comment for why it's narrower than `GameAdapter<K>`. Any real
196
+ * adapter object (a NAMED type, not a fresh object literal) — `GameAdapter<K>`,
197
+ * `Pixi2DGameAdapter`, `ReactWorldAdapter`, or a project's own custom adapter —
198
+ * satisfies this trivially (extra members beyond `id` are always fine for a
199
+ * non-literal source); a bare `{ id, mount }` object literal built INLINE at
200
+ * a `createWorldInstance`/`registerXWorld` call site needs an intermediate
201
+ * `const` (excess-property checking only special-cases fresh literals).
202
+ */
203
+ export interface AdapterHandle {
204
+ readonly id: string;
205
+ }
206
+ /** Inputs to {@link createWorldInstance}. */
207
+ export interface WorldInstanceInit {
208
+ readonly id: string;
209
+ readonly kind: WorldKind;
210
+ /** Defaults to `true` (D10's per-world default). */
211
+ readonly pausable?: boolean;
212
+ readonly adapter: AdapterHandle;
213
+ readonly mounted: MountedWorld;
214
+ /** Required when `kind === 'threejs'` — backs `threeRoot()`. */
215
+ readonly scene?: THREE.Scene | undefined;
216
+ /** Required when `kind === 'pixijs'` — backs `pixiRoot()` (T7.3 slice 2,
217
+ * symmetric with `scene` for threejs above). */
218
+ readonly stage?: PIXI.Container | undefined;
219
+ /** Required when `kind === 'react'` — backs `reactRoot()` (T6.2 slice 1,
220
+ * symmetric with `scene`/`stage` above): the DOM-root layer `<div>` this
221
+ * world's react tree is mounted into. */
222
+ readonly container?: HTMLElement | undefined;
223
+ readonly physics?: PhysicsRegistry | undefined;
224
+ readonly collisions?: CollisionSystem | undefined;
225
+ readonly physics2d?: Physics2DRegistry | undefined;
226
+ readonly collisions2d?: Collision2DSystem | undefined;
227
+ readonly camera?: unknown;
228
+ readonly frame?: WorldFrameHooks | undefined;
229
+ }
230
+ /**
231
+ * Build a `WorldInstance` whose kind-narrowed accessors throw descriptively
232
+ * on kind mismatch (GAME-ROOT-DESIGN §3). This is the one place that builds
233
+ * `threeRoot`/`pixiRoot`, so every world (however it's constructed, in this
234
+ * slice or later ones) gets identical throw behavior.
235
+ */
236
+ export declare function createWorldInstance(init: WorldInstanceInit): WorldInstance;
237
+ /**
238
+ * Type guard for whether a `MountedGame` is a first-party
239
+ * `VgaiSceneGameAdapter` mount (has a live `GameContext` at `.ctx`). Used to
240
+ * decide whether a world's `physics`/`collisions`/`camera` (and, on `Game`,
241
+ * `components`/`input`/`audio`) can be populated from it — an external
242
+ * adapter's mount has none of these first-party handles.
243
+ *
244
+ * Checks the `firstParty: true` brand (checklist item 1), NOT `'ctx' in
245
+ * mounted` — world2d's `MountedGame2D` (`world2d/pixi-game-adapter.ts`) also
246
+ * has a `ctx` key (a `World2DContext`, unrelated to `GameContext`), so a
247
+ * structural `'ctx' in mounted` check would misfire once T7.3 registers 2D
248
+ * worlds onto the same `Game`. The probe is a plain property read, not an
249
+ * `instanceof`/value import of `vgai-scene-game-adapter.ts` — the
250
+ * `VgaiMountedGame` import above stays type-only.
251
+ */
252
+ export declare function isFirstPartyMounted(mounted: MountedWorld): mounted is VgaiMountedGame;
253
+ /**
254
+ * The Game root (GAME-ROOT-DESIGN §3). Owns the one loop, the raw-asset
255
+ * cache, the world registry, and (T7.1 slice 2) the game-scoped
256
+ * `SystemRunner`. `components`/`input`/`audio` remain slice-1 late
257
+ * additions: they delegate to the default world's first-party mount so
258
+ * existing single-world call sites keep working; hoisting them to true
259
+ * Game ownership (GAME-ROOT-DESIGN §3's target shape) is a later slice's
260
+ * work, not this one's.
261
+ */
262
+ export interface Game {
263
+ readonly loop: GameLoop;
264
+ readonly assets: AssetCache;
265
+ /**
266
+ * The game-scoped `SystemRunner` (GAME-ROOT-DESIGN §4, T7.1 slice 2) — a
267
+ * NEW bucket, separate from any world's own runner. Within each phase,
268
+ * `GameInternal.runFrame` runs THIS runner's `runPhase` first, before any
269
+ * world's engine systems/component ticks/world-bound game systems (e.g.
270
+ * `ctx.systems.add`, which stays world-bound to the default world — see
271
+ * `runtime/types.ts`). Empty for every existing game (nothing registers
272
+ * against it yet), so `runFrame`'s behavior for a single-world game is
273
+ * unchanged by its presence.
274
+ */
275
+ readonly systems: SystemRunner;
276
+ /** Declaration-ordered. Slice 1 registers exactly one (the default
277
+ * threejs world) — this is the SAME array reference `registerWorld`
278
+ * mutates, not a snapshot, so holders (e.g. `GameContext.worlds`) observe
279
+ * later registrations. */
280
+ readonly worlds: ReadonlyArray<WorldInstance>;
281
+ world(id: string): WorldInstance | null;
282
+ /** First threejs world, else first world. Throws descriptively when no
283
+ * world has been registered yet. */
284
+ readonly defaultWorld: WorldInstance;
285
+ /**
286
+ * Game-scoped aggregation of every world's `SystemAdapters` (§7.1-3,
287
+ * `docs/GAME-ROOT-DESIGN.md` §3: "`registerSystemAdapter` is game-scoped" —
288
+ * the recorded decision this getter finally implements; probe1). Each
289
+ * mounted world builds its OWN `mounted.systems` object (a game registers
290
+ * capabilities like `networking` from ITS OWN `setup()`, via
291
+ * `ctx.registerSystemAdapter`, per-world) — this merges every world's
292
+ * `mounted.systems` into ONE `SystemAdapters`, in `worlds` REGISTRATION
293
+ * order, first registration wins per key. A later world registering the
294
+ * SAME kind (e.g. two worlds both exposing `networking`) does not
295
+ * override the first — instead this warns ONCE per (game instance, key)
296
+ * naming both world ids, matching this file's `[game] world "<id>" …`
297
+ * console idiom (see `registerWorld` below). NOT to be confused with
298
+ * `Game.systems` (the game-scoped `SystemRunner` bucket, an entirely
299
+ * different concept — see that field's doc comment) — this name was
300
+ * deliberately chosen not to collide with it.
301
+ *
302
+ * A plain getter (recomputed on every read, not cached) so a LATER
303
+ * `registerWorld` call (or a world's setup registering a NEW adapter kind
304
+ * after this was first read) is always reflected — only the COLLISION
305
+ * warning is deduped (once per key, for the lifetime of this `Game`).
306
+ * Includes every world regardless of first-party-ness — `mounted.systems`
307
+ * is a capability any adapter (first-party or foreign) may expose.
308
+ */
309
+ readonly systemAdapters: SystemAdapters;
310
+ /** Delegates to the default world's first-party `ComponentManager`.
311
+ * Throws when the default world is not a first-party mount. */
312
+ readonly components: ComponentManager;
313
+ /** Delegates to the default world's first-party `InputManager`. Throws
314
+ * when the default world is not a first-party mount. */
315
+ readonly input: InputManager;
316
+ /** Delegates to the default world's first-party audio context. Throws
317
+ * when the default world is not a first-party mount. */
318
+ readonly audio: GameAudio;
319
+ /**
320
+ * Frame-versioned state bridge (T7.4 slice 1 — `docs/REACT-STATE-BRIDGE.md`
321
+ * §2). Bumped once per completed `runFrame`, after all phases of all
322
+ * worlds and all `endFrame` hooks (see `runFrame`'s tail below). This is
323
+ * the ONE subscription surface `useGameState`
324
+ * (`packages/editor/template/src/ui/game-state.tsx`) — or any
325
+ * other frame-versioned consumer — subscribes to; `state-bridge.ts` itself
326
+ * has no react import, matching the rest of `runtime/`.
327
+ */
328
+ readonly state: GameStateBridge;
329
+ /** Game-level play-state control surface (D10, T7.6) — see {@link PlayState}. */
330
+ readonly play: PlayState;
331
+ /**
332
+ * Cross-world component query (GAME-ROOT-DESIGN §5, T7.1 slice 3) — the
333
+ * game-level half; `ComponentManager.queryByComponent` (`ecs/
334
+ * component-manager.ts`) is the per-world half this aggregates.
335
+ *
336
+ * Iterates `worlds` in declaration order, skipping any world whose mount
337
+ * is not first-party (an opaque/foreign mount has no `ComponentManager`
338
+ * to query), applying `opts.worldId`/`opts.kind` as world-level filters,
339
+ * and concatenating each remaining world's `queryByComponent(cls)`
340
+ * result. No filter (`opts` omitted) spans **every** world — that is the
341
+ * whole point of this API existing (D7's "cross-world flow is ordinary
342
+ * component access", e.g. a pixi minimap component querying the 3D
343
+ * world's tank components).
344
+ *
345
+ * Returns component **instances**, not nodes — `inst.world`/typed node
346
+ * accessors (`inst.object3D`, the generic `inst.node`) are T7.2's; this
347
+ * API's contract freezes HERE. The physical ONE-`ComponentManager`
348
+ * unification (partitioning one manager by (phase, world) instead of one
349
+ * manager per world) lands with T7.2/T7.3 — this per-world-aggregation
350
+ * implementation is the compatible interim: callers written against this
351
+ * signature keep working unchanged once the manager is unified
352
+ * underneath.
353
+ *
354
+ * `T extends GameComponent<WorldKind>` (not the bare default-`'threejs'`
355
+ * `GameComponent`, T7.3 slice 2) — the whole point of a CROSS-WORLD query
356
+ * is spanning every kind in one call (the T7.3 AC,
357
+ * `test/game-three-plus-pixi.test.ts`), so a `GameComponent<'pixijs'>`
358
+ * subclass must type-check here exactly like a default-kind one does.
359
+ */
360
+ queryByComponent<T extends GameComponent<WorldKind>>(cls: new () => T, opts?: {
361
+ worldId?: string;
362
+ kind?: WorldKind;
363
+ }): T[];
364
+ }
365
+ /**
366
+ * Host-internal extension of {@link Game}: adds `registerWorld` (the host's
367
+ * wiring surface for populating the world registry) and `runFrame` (the
368
+ * frame executor). NEITHER is part of the game-facing `Game` surface —
369
+ * games/components never call either directly; the host loop
370
+ * (`createGameRuntime`) and `GameSession.step()` are the only callers of
371
+ * `runFrame`.
372
+ */
373
+ export interface GameInternal extends Game {
374
+ /** Append a world in declaration order. Throws on a duplicate id. */
375
+ registerWorld(world: WorldInstance): void;
376
+ /**
377
+ * Run ONE fixed substep across every phase and every world
378
+ * (GAME-ROOT-DESIGN §4):
379
+ *
380
+ * ```
381
+ * for phase in PHASE_ORDER:
382
+ * game.systems.runPhase(phase, dt) // game-scoped, first
383
+ * for world in worlds (declaration order):
384
+ * if world.mounted.drivesOwnLoop: continue
385
+ * world.frame?.runPhase(phase, dt)
386
+ * for world in worlds: // after ALL phases
387
+ * if world.mounted.drivesOwnLoop: continue
388
+ * if world.frame: world.frame.endFrame?.()
389
+ * else: world.mounted.update?.(dt) // opaque world fallback
390
+ * ```
391
+ *
392
+ * For today's single first-party world this is byte-identical to the
393
+ * legacy `mounted.update(dt)` (`game.systems` is empty; the one world's
394
+ * `frame.runPhase` delegates to the SAME `SystemRunner.runPhase` its
395
+ * `update` used; `endFrame` is the same `postFrame` call). A
396
+ * `drivesOwnLoop` world is never ticked here at all — matching its
397
+ * exclusion from the legacy `!mountedRef.drivesOwnLoop` guard. An opaque
398
+ * host-driven world (no `frame`) gets exactly one `update(dt)` call per
399
+ * substep, after the phase loop — unchanged cadence from today.
400
+ *
401
+ * D10/T7.6 play-state addendum: when `Game.play.paused` is true, every
402
+ * `pausable` (and non-`drivesOwnLoop`) world skips every phase EXCEPT
403
+ * `render` (still called, every substep, with `dt` forced to `0`) and skips
404
+ * its `endFrame`/opaque-`update` call entirely — a `pausable: false` world
405
+ * is completely unaffected. `opts.ignorePause` runs this call as if nothing
406
+ * were paused, regardless of the live `paused` flag; kept for external
407
+ * byte-compatibility (no first-party caller passes it today — grep finds
408
+ * none) but is no longer how `Game.play.step()` works (§7.1-2 fix,
409
+ * probe4: the old `ignorePause` full-frame re-run double-ticked every
410
+ * already-running `pausable: false` world, since D10's ordinary loop never
411
+ * stops ticking them). `Game.play.step()` now drives this function via the
412
+ * internal-only `onlyFrozen` mode instead (see `runFrameImpl` — not part of
413
+ * this public, host-facing signature): it ticks EXACTLY the currently
414
+ * frozen set (host-driven, `pausable`, and `paused`) through every phase +
415
+ * `endFrame` with the real `dt` (not the render-phase's forced `0`), and
416
+ * touches no other world at all — a natural no-op while not paused, since
417
+ * the frozen set is then empty.
418
+ */
419
+ runFrame(dt: number, opts?: {
420
+ ignorePause?: boolean;
421
+ }): void;
422
+ }
423
+ /**
424
+ * Construct the (host-internal) Game shell. Callers: `createGameRuntime`
425
+ * builds this BEFORE mounting its one adapter, then registers the default
426
+ * threejs world once mount resolves (see `registerDefaultThreeWorld` in
427
+ * `create-runtime.ts`).
428
+ */
429
+ export declare function createGame(opts: {
430
+ loop: GameLoop;
431
+ assets: AssetCache;
432
+ }): GameInternal;
433
+ //# sourceMappingURL=game.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../../src/runtime/game.ts"],"names":[],"mappings":"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"}