@vgai/engine 0.3.0 → 0.4.0-canary.20260715.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 (559) hide show
  1. package/package.json +8 -2
  2. package/schemas/engine-api.json +124 -0
  3. package/schemas/engine-api.md +53 -0
  4. package/schemas/engine-capabilities.json +124 -0
  5. package/schemas/inputmap.schema.json +314 -0
  6. package/schemas/mat.schema.json +286 -0
  7. package/schemas/prefab.schema.json +10148 -0
  8. package/schemas/scn2d.schema.json +475 -0
  9. package/schemas/vgai-game.schema.json +383 -0
  10. package/schemas/vscn.schema.json +11007 -0
  11. package/src/adapter/{world-kind.ts → adapter-surface.ts} +6 -6
  12. package/src/adapter/authoring.ts +67 -0
  13. package/src/adapter/game-adapter.ts +8 -8
  14. package/src/adapter/host-context.ts +2 -4
  15. package/src/adapter/index.ts +3 -1
  16. package/src/adapter/system-adapter.ts +73 -0
  17. package/src/adapter/vgai-scene-game-adapter.ts +239 -180
  18. package/src/animation/xstate-animation-binding.ts +300 -262
  19. package/src/animation/xstate-animation-meta.ts +50 -13
  20. package/src/character/cloth-sim.ts +533 -0
  21. package/src/character/spring-chain.ts +307 -0
  22. package/src/core/game-loop.ts +41 -3
  23. package/src/core/seeded-random.ts +161 -0
  24. package/src/core/system-runner.ts +20 -3
  25. package/src/core/types.ts +37 -0
  26. package/src/data/data-asset.ts +1 -1
  27. package/src/dev/performance-profiler.ts +213 -0
  28. package/src/dev/webgl-gpu-timer.ts +53 -0
  29. package/src/ecs/component-manager.ts +45 -12
  30. package/src/ecs/game-component.ts +95 -11
  31. package/src/humanoid/bake.operation.ts +326 -0
  32. package/src/humanoid/body.ts +663 -0
  33. package/src/humanoid/clips.ts +149 -0
  34. package/src/humanoid/compose.ts +209 -0
  35. package/src/humanoid/generate.ts +189 -0
  36. package/src/humanoid/index.ts +36 -0
  37. package/src/humanoid/schema.ts +108 -0
  38. package/src/humanoid/skeleton.ts +345 -0
  39. package/src/index.ts +5 -5
  40. package/src/input/input-manager.ts +701 -22
  41. package/src/input/input-types.ts +5 -2
  42. package/src/manifest/index.ts +5 -5
  43. package/src/manifest/load.ts +125 -72
  44. package/src/manifest/schema.ts +362 -255
  45. package/src/react/game-state.tsx +135 -32
  46. package/src/react/root-adapter.tsx +49 -0
  47. package/src/react/unmanaged-root-detector.ts +66 -0
  48. package/src/react/use-data.ts +12 -2
  49. package/src/runtime/create-runtime.ts +100 -282
  50. package/src/runtime/debug-bridge.ts +483 -0
  51. package/src/runtime/debug-registry.ts +856 -0
  52. package/src/runtime/game.ts +342 -93
  53. package/src/runtime/gameplay-rng-trap.ts +134 -0
  54. package/src/runtime/input-router.ts +7 -7
  55. package/src/runtime/mount-game.ts +40 -38
  56. package/src/runtime/mount-manifest.ts +169 -37
  57. package/src/runtime/render-control.ts +13 -13
  58. package/src/runtime/render-seed.ts +1 -1
  59. package/src/runtime/state-bridge.ts +24 -10
  60. package/src/runtime/types.ts +110 -28
  61. package/src/scene/asset-registry.ts +22 -0
  62. package/src/scene/component-registry.ts +14 -3
  63. package/src/scene/defaults.ts +1 -0
  64. package/src/scene/light-camera-factory.ts +11 -3
  65. package/src/scene/scene-apply.ts +55 -4
  66. package/src/scene/scene-loader.ts +10 -27
  67. package/src/scene/scene-types.ts +0 -1
  68. package/src/scene/schema/index.ts +0 -34
  69. package/src/scene/schema/light.ts +16 -1
  70. package/src/scene/schema/material.ts +96 -91
  71. package/src/scene/schema/scene-file.ts +1 -7
  72. package/src/scene/user-data.ts +14 -1
  73. package/src/setup/setup-renderer.ts +1 -1
  74. package/src/tools/define-tool.ts +50 -11
  75. package/src/world2d/authoring-2d.ts +17 -1
  76. package/src/world2d/collision-2d.ts +1 -1
  77. package/src/world2d/pixi-game-adapter.ts +19 -17
  78. package/src/world2d/scene2d-loader.ts +1 -0
  79. package/src/world2d/types.ts +8 -2
  80. package/dist/adapter/authoring.d.ts +0 -404
  81. package/dist/adapter/authoring.d.ts.map +0 -1
  82. package/dist/adapter/authoring.js +0 -22
  83. package/dist/adapter/colyseus-networking-adapter.d.ts +0 -43
  84. package/dist/adapter/colyseus-networking-adapter.d.ts.map +0 -1
  85. package/dist/adapter/colyseus-networking-adapter.js +0 -38
  86. package/dist/adapter/first-party-systems.d.ts +0 -38
  87. package/dist/adapter/first-party-systems.d.ts.map +0 -1
  88. package/dist/adapter/first-party-systems.js +0 -77
  89. package/dist/adapter/game-adapter.d.ts +0 -133
  90. package/dist/adapter/game-adapter.d.ts.map +0 -1
  91. package/dist/adapter/game-adapter.js +0 -10
  92. package/dist/adapter/host-context.d.ts +0 -73
  93. package/dist/adapter/host-context.d.ts.map +0 -1
  94. package/dist/adapter/host-context.js +0 -16
  95. package/dist/adapter/index.d.ts +0 -22
  96. package/dist/adapter/index.d.ts.map +0 -1
  97. package/dist/adapter/index.js +0 -15
  98. package/dist/adapter/ingest/game-contract.d.ts +0 -53
  99. package/dist/adapter/ingest/game-contract.d.ts.map +0 -1
  100. package/dist/adapter/ingest/game-contract.js +0 -30
  101. package/dist/adapter/ingest/overlay-applier.d.ts +0 -118
  102. package/dist/adapter/ingest/overlay-applier.d.ts.map +0 -1
  103. package/dist/adapter/ingest/overlay-applier.js +0 -132
  104. package/dist/adapter/ingest/overlay-apply.d.ts +0 -60
  105. package/dist/adapter/ingest/overlay-apply.d.ts.map +0 -1
  106. package/dist/adapter/ingest/overlay-apply.js +0 -101
  107. package/dist/adapter/ingest/overlay-file.d.ts +0 -79
  108. package/dist/adapter/ingest/overlay-file.d.ts.map +0 -1
  109. package/dist/adapter/ingest/overlay-file.js +0 -66
  110. package/dist/adapter/ingest/overlay-report.d.ts +0 -113
  111. package/dist/adapter/ingest/overlay-report.d.ts.map +0 -1
  112. package/dist/adapter/ingest/overlay-report.js +0 -103
  113. package/dist/adapter/ingest/scene-capture.d.ts +0 -97
  114. package/dist/adapter/ingest/scene-capture.d.ts.map +0 -1
  115. package/dist/adapter/ingest/scene-capture.js +0 -248
  116. package/dist/adapter/ingest/upstream-pin.d.ts +0 -47
  117. package/dist/adapter/ingest/upstream-pin.d.ts.map +0 -1
  118. package/dist/adapter/ingest/upstream-pin.js +0 -50
  119. package/dist/adapter/loop-gate-report.d.ts +0 -34
  120. package/dist/adapter/loop-gate-report.d.ts.map +0 -1
  121. package/dist/adapter/loop-gate-report.js +0 -37
  122. package/dist/adapter/rapier-physics-adapter.d.ts +0 -12
  123. package/dist/adapter/rapier-physics-adapter.d.ts.map +0 -1
  124. package/dist/adapter/rapier-physics-adapter.js +0 -46
  125. package/dist/adapter/system-adapter.d.ts +0 -133
  126. package/dist/adapter/system-adapter.d.ts.map +0 -1
  127. package/dist/adapter/system-adapter.js +0 -13
  128. package/dist/adapter/transform.d.ts +0 -18
  129. package/dist/adapter/transform.d.ts.map +0 -1
  130. package/dist/adapter/transform.js +0 -1
  131. package/dist/adapter/vgai-scene-game-adapter.d.ts +0 -116
  132. package/dist/adapter/vgai-scene-game-adapter.d.ts.map +0 -1
  133. package/dist/adapter/vgai-scene-game-adapter.js +0 -714
  134. package/dist/adapter/world-kind.d.ts +0 -30
  135. package/dist/adapter/world-kind.d.ts.map +0 -1
  136. package/dist/adapter/world-kind.js +0 -18
  137. package/dist/ai/navigation.d.ts +0 -64
  138. package/dist/ai/navigation.d.ts.map +0 -1
  139. package/dist/ai/navigation.js +0 -133
  140. package/dist/animation/anim-graph-types.d.ts +0 -25
  141. package/dist/animation/anim-graph-types.d.ts.map +0 -1
  142. package/dist/animation/anim-graph-types.js +0 -1
  143. package/dist/animation/animation-clock.d.ts +0 -213
  144. package/dist/animation/animation-clock.d.ts.map +0 -1
  145. package/dist/animation/animation-clock.js +0 -301
  146. package/dist/animation/blend-node.d.ts +0 -22
  147. package/dist/animation/blend-node.d.ts.map +0 -1
  148. package/dist/animation/blend-node.js +0 -97
  149. package/dist/animation/camera-ownership.d.ts +0 -250
  150. package/dist/animation/camera-ownership.d.ts.map +0 -1
  151. package/dist/animation/camera-ownership.js +0 -169
  152. package/dist/animation/cinematic-cues.d.ts +0 -200
  153. package/dist/animation/cinematic-cues.d.ts.map +0 -1
  154. package/dist/animation/cinematic-cues.js +0 -213
  155. package/dist/animation/clip-map.d.ts +0 -12
  156. package/dist/animation/clip-map.d.ts.map +0 -1
  157. package/dist/animation/clip-map.js +0 -37
  158. package/dist/animation/gsap-registration.d.ts +0 -119
  159. package/dist/animation/gsap-registration.d.ts.map +0 -1
  160. package/dist/animation/gsap-registration.js +0 -92
  161. package/dist/animation/theatre-clock-binding.d.ts +0 -89
  162. package/dist/animation/theatre-clock-binding.d.ts.map +0 -1
  163. package/dist/animation/theatre-clock-binding.js +0 -29
  164. package/dist/animation/theatre-director.d.ts +0 -242
  165. package/dist/animation/theatre-director.d.ts.map +0 -1
  166. package/dist/animation/theatre-director.js +0 -235
  167. package/dist/animation/theatre-object-binding.d.ts +0 -305
  168. package/dist/animation/theatre-object-binding.d.ts.map +0 -1
  169. package/dist/animation/theatre-object-binding.js +0 -351
  170. package/dist/animation/xstate-animation-binding.d.ts +0 -111
  171. package/dist/animation/xstate-animation-binding.d.ts.map +0 -1
  172. package/dist/animation/xstate-animation-binding.js +0 -307
  173. package/dist/animation/xstate-animation-meta.d.ts +0 -228
  174. package/dist/animation/xstate-animation-meta.d.ts.map +0 -1
  175. package/dist/animation/xstate-animation-meta.js +0 -221
  176. package/dist/assets.d.ts +0 -26
  177. package/dist/assets.d.ts.map +0 -1
  178. package/dist/assets.js +0 -55
  179. package/dist/audio/index.d.ts +0 -4
  180. package/dist/audio/index.d.ts.map +0 -1
  181. package/dist/audio/index.js +0 -24
  182. package/dist/audio/tone-clock-binding.d.ts +0 -75
  183. package/dist/audio/tone-clock-binding.d.ts.map +0 -1
  184. package/dist/audio/tone-clock-binding.js +0 -29
  185. package/dist/audio/tone-context.d.ts +0 -114
  186. package/dist/audio/tone-context.d.ts.map +0 -1
  187. package/dist/audio/tone-context.js +0 -39
  188. package/dist/audio/tone-offline-render.d.ts +0 -90
  189. package/dist/audio/tone-offline-render.d.ts.map +0 -1
  190. package/dist/audio/tone-offline-render.js +0 -56
  191. package/dist/audio/wav-encode.d.ts +0 -38
  192. package/dist/audio/wav-encode.d.ts.map +0 -1
  193. package/dist/audio/wav-encode.js +0 -97
  194. package/dist/core/game-loop.d.ts +0 -21
  195. package/dist/core/game-loop.d.ts.map +0 -1
  196. package/dist/core/game-loop.js +0 -130
  197. package/dist/core/system-runner.d.ts +0 -120
  198. package/dist/core/system-runner.d.ts.map +0 -1
  199. package/dist/core/system-runner.js +0 -286
  200. package/dist/core/types.d.ts +0 -58
  201. package/dist/core/types.d.ts.map +0 -1
  202. package/dist/core/types.js +0 -25
  203. package/dist/data/data-asset.d.ts +0 -101
  204. package/dist/data/data-asset.d.ts.map +0 -1
  205. package/dist/data/data-asset.js +0 -122
  206. package/dist/data/data-check-core.d.ts +0 -110
  207. package/dist/data/data-check-core.d.ts.map +0 -1
  208. package/dist/data/data-check-core.js +0 -178
  209. package/dist/data/data-ref.d.ts +0 -79
  210. package/dist/data/data-ref.d.ts.map +0 -1
  211. package/dist/data/data-ref.js +0 -130
  212. package/dist/data/vite-plugin-data.d.ts +0 -79
  213. package/dist/data/vite-plugin-data.d.ts.map +0 -1
  214. package/dist/data/vite-plugin-data.js +0 -217
  215. package/dist/dev/console-bridge.d.ts +0 -22
  216. package/dist/dev/console-bridge.d.ts.map +0 -1
  217. package/dist/dev/console-bridge.js +0 -71
  218. package/dist/dev/debug-draw.d.ts +0 -24
  219. package/dist/dev/debug-draw.d.ts.map +0 -1
  220. package/dist/dev/debug-draw.js +0 -73
  221. package/dist/dev/logger.d.ts +0 -30
  222. package/dist/dev/logger.d.ts.map +0 -1
  223. package/dist/dev/logger.js +0 -90
  224. package/dist/ecs/component-manager.d.ts +0 -189
  225. package/dist/ecs/component-manager.d.ts.map +0 -1
  226. package/dist/ecs/component-manager.js +0 -676
  227. package/dist/ecs/game-component.d.ts +0 -97
  228. package/dist/ecs/game-component.d.ts.map +0 -1
  229. package/dist/ecs/game-component.js +0 -80
  230. package/dist/ecs/hmr-swap-report.d.ts +0 -53
  231. package/dist/ecs/hmr-swap-report.d.ts.map +0 -1
  232. package/dist/ecs/hmr-swap-report.js +0 -55
  233. package/dist/index.d.ts +0 -37
  234. package/dist/index.d.ts.map +0 -1
  235. package/dist/index.js +0 -30
  236. package/dist/input/input-manager.d.ts +0 -596
  237. package/dist/input/input-manager.d.ts.map +0 -1
  238. package/dist/input/input-manager.js +0 -1564
  239. package/dist/input/input-types.d.ts +0 -171
  240. package/dist/input/input-types.d.ts.map +0 -1
  241. package/dist/input/input-types.js +0 -1
  242. package/dist/input/prompt-labels.d.ts +0 -21
  243. package/dist/input/prompt-labels.d.ts.map +0 -1
  244. package/dist/input/prompt-labels.js +0 -121
  245. package/dist/input/rebind-controller.d.ts +0 -59
  246. package/dist/input/rebind-controller.d.ts.map +0 -1
  247. package/dist/input/rebind-controller.js +0 -85
  248. package/dist/input/schema.d.ts +0 -16
  249. package/dist/input/schema.d.ts.map +0 -1
  250. package/dist/input/schema.js +0 -228
  251. package/dist/loader.d.ts +0 -43
  252. package/dist/loader.d.ts.map +0 -1
  253. package/dist/loader.js +0 -59
  254. package/dist/manifest/index.d.ts +0 -5
  255. package/dist/manifest/index.d.ts.map +0 -1
  256. package/dist/manifest/index.js +0 -8
  257. package/dist/manifest/load-file.d.ts +0 -4
  258. package/dist/manifest/load-file.d.ts.map +0 -1
  259. package/dist/manifest/load-file.js +0 -14
  260. package/dist/manifest/load.d.ts +0 -117
  261. package/dist/manifest/load.d.ts.map +0 -1
  262. package/dist/manifest/load.js +0 -255
  263. package/dist/manifest/schema.d.ts +0 -173
  264. package/dist/manifest/schema.d.ts.map +0 -1
  265. package/dist/manifest/schema.js +0 -302
  266. package/dist/physics/collision-system.d.ts +0 -41
  267. package/dist/physics/collision-system.d.ts.map +0 -1
  268. package/dist/physics/collision-system.js +0 -64
  269. package/dist/physics/physics-registry.d.ts +0 -45
  270. package/dist/physics/physics-registry.d.ts.map +0 -1
  271. package/dist/physics/physics-registry.js +0 -65
  272. package/dist/physics/transform-writer.d.ts +0 -16
  273. package/dist/physics/transform-writer.d.ts.map +0 -1
  274. package/dist/physics/transform-writer.js +0 -38
  275. package/dist/physics/trigger-dispatch.d.ts +0 -24
  276. package/dist/physics/trigger-dispatch.d.ts.map +0 -1
  277. package/dist/physics/trigger-dispatch.js +0 -80
  278. package/dist/react/game-state.d.ts +0 -105
  279. package/dist/react/game-state.d.ts.map +0 -1
  280. package/dist/react/game-state.js +0 -144
  281. package/dist/react/use-data.d.ts +0 -60
  282. package/dist/react/use-data.d.ts.map +0 -1
  283. package/dist/react/use-data.js +0 -96
  284. package/dist/react/use-selection.d.ts +0 -75
  285. package/dist/react/use-selection.d.ts.map +0 -1
  286. package/dist/react/use-selection.js +0 -90
  287. package/dist/render/auto-batcher.d.ts +0 -34
  288. package/dist/render/auto-batcher.d.ts.map +0 -1
  289. package/dist/render/auto-batcher.js +0 -140
  290. package/dist/render/render-batch-system.d.ts +0 -33
  291. package/dist/render/render-batch-system.d.ts.map +0 -1
  292. package/dist/render/render-batch-system.js +0 -230
  293. package/dist/render/render-features.d.ts +0 -47
  294. package/dist/render/render-features.d.ts.map +0 -1
  295. package/dist/render/render-features.js +0 -105
  296. package/dist/render/render-settings.d.ts +0 -36
  297. package/dist/render/render-settings.d.ts.map +0 -1
  298. package/dist/render/render-settings.js +0 -51
  299. package/dist/runtime/create-runtime.d.ts +0 -280
  300. package/dist/runtime/create-runtime.d.ts.map +0 -1
  301. package/dist/runtime/create-runtime.js +0 -795
  302. package/dist/runtime/frame-selector-cache.d.ts +0 -41
  303. package/dist/runtime/frame-selector-cache.d.ts.map +0 -1
  304. package/dist/runtime/frame-selector-cache.js +0 -65
  305. package/dist/runtime/game.d.ts +0 -433
  306. package/dist/runtime/game.d.ts.map +0 -1
  307. package/dist/runtime/game.js +0 -569
  308. package/dist/runtime/input-router.d.ts +0 -78
  309. package/dist/runtime/input-router.d.ts.map +0 -1
  310. package/dist/runtime/input-router.js +0 -171
  311. package/dist/runtime/mount-game.d.ts +0 -129
  312. package/dist/runtime/mount-game.d.ts.map +0 -1
  313. package/dist/runtime/mount-game.js +0 -152
  314. package/dist/runtime/mount-manifest.d.ts +0 -119
  315. package/dist/runtime/mount-manifest.d.ts.map +0 -1
  316. package/dist/runtime/mount-manifest.js +0 -204
  317. package/dist/runtime/render-audio-control.d.ts +0 -110
  318. package/dist/runtime/render-audio-control.d.ts.map +0 -1
  319. package/dist/runtime/render-audio-control.js +0 -111
  320. package/dist/runtime/render-control.d.ts +0 -291
  321. package/dist/runtime/render-control.d.ts.map +0 -1
  322. package/dist/runtime/render-control.js +0 -264
  323. package/dist/runtime/render-seed.d.ts +0 -57
  324. package/dist/runtime/render-seed.d.ts.map +0 -1
  325. package/dist/runtime/render-seed.js +0 -74
  326. package/dist/runtime/scene-ui-bridge.d.ts +0 -69
  327. package/dist/runtime/scene-ui-bridge.d.ts.map +0 -1
  328. package/dist/runtime/scene-ui-bridge.js +0 -23
  329. package/dist/runtime/scene-ui-data.d.ts +0 -13
  330. package/dist/runtime/scene-ui-data.d.ts.map +0 -1
  331. package/dist/runtime/scene-ui-data.js +0 -92
  332. package/dist/runtime/state-bridge.d.ts +0 -47
  333. package/dist/runtime/state-bridge.d.ts.map +0 -1
  334. package/dist/runtime/state-bridge.js +0 -53
  335. package/dist/runtime/types.d.ts +0 -179
  336. package/dist/runtime/types.d.ts.map +0 -1
  337. package/dist/runtime/types.js +0 -1
  338. package/dist/scene/asset-loaders.d.ts +0 -79
  339. package/dist/scene/asset-loaders.d.ts.map +0 -1
  340. package/dist/scene/asset-loaders.js +0 -141
  341. package/dist/scene/asset-paths.d.ts +0 -11
  342. package/dist/scene/asset-paths.d.ts.map +0 -1
  343. package/dist/scene/asset-paths.js +0 -108
  344. package/dist/scene/asset-ref-check.d.ts +0 -88
  345. package/dist/scene/asset-ref-check.d.ts.map +0 -1
  346. package/dist/scene/asset-ref-check.js +0 -214
  347. package/dist/scene/asset-registry.d.ts +0 -30
  348. package/dist/scene/asset-registry.d.ts.map +0 -1
  349. package/dist/scene/asset-registry.js +0 -50
  350. package/dist/scene/collider-dimensions.d.ts +0 -63
  351. package/dist/scene/collider-dimensions.d.ts.map +0 -1
  352. package/dist/scene/collider-dimensions.js +0 -98
  353. package/dist/scene/component-registry.d.ts +0 -17
  354. package/dist/scene/component-registry.d.ts.map +0 -1
  355. package/dist/scene/component-registry.js +0 -28
  356. package/dist/scene/defaults.d.ts +0 -252
  357. package/dist/scene/defaults.d.ts.map +0 -1
  358. package/dist/scene/defaults.js +0 -151
  359. package/dist/scene/geometries/index.d.ts +0 -8
  360. package/dist/scene/geometries/index.d.ts.map +0 -1
  361. package/dist/scene/geometries/index.js +0 -7
  362. package/dist/scene/geometries/terrain.d.ts +0 -2
  363. package/dist/scene/geometries/terrain.d.ts.map +0 -1
  364. package/dist/scene/geometries/terrain.js +0 -37
  365. package/dist/scene/geometry-registry.d.ts +0 -24
  366. package/dist/scene/geometry-registry.d.ts.map +0 -1
  367. package/dist/scene/geometry-registry.js +0 -20
  368. package/dist/scene/instance-registry.d.ts +0 -36
  369. package/dist/scene/instance-registry.d.ts.map +0 -1
  370. package/dist/scene/instance-registry.js +0 -55
  371. package/dist/scene/instancers/grid.d.ts +0 -2
  372. package/dist/scene/instancers/grid.d.ts.map +0 -1
  373. package/dist/scene/instancers/grid.js +0 -36
  374. package/dist/scene/instancers/index.d.ts +0 -8
  375. package/dist/scene/instancers/index.d.ts.map +0 -1
  376. package/dist/scene/instancers/index.js +0 -7
  377. package/dist/scene/light-camera-factory.d.ts +0 -23
  378. package/dist/scene/light-camera-factory.d.ts.map +0 -1
  379. package/dist/scene/light-camera-factory.js +0 -68
  380. package/dist/scene/material-factory.d.ts +0 -17
  381. package/dist/scene/material-factory.d.ts.map +0 -1
  382. package/dist/scene/material-factory.js +0 -197
  383. package/dist/scene/material-registry.d.ts +0 -40
  384. package/dist/scene/material-registry.d.ts.map +0 -1
  385. package/dist/scene/material-registry.js +0 -44
  386. package/dist/scene/materials/index.d.ts +0 -8
  387. package/dist/scene/materials/index.d.ts.map +0 -1
  388. package/dist/scene/materials/index.js +0 -7
  389. package/dist/scene/materials/water.d.ts +0 -2
  390. package/dist/scene/materials/water.d.ts.map +0 -1
  391. package/dist/scene/materials/water.js +0 -54
  392. package/dist/scene/parse.d.ts +0 -23
  393. package/dist/scene/parse.d.ts.map +0 -1
  394. package/dist/scene/parse.js +0 -179
  395. package/dist/scene/particles-factory.d.ts +0 -33
  396. package/dist/scene/particles-factory.d.ts.map +0 -1
  397. package/dist/scene/particles-factory.js +0 -282
  398. package/dist/scene/scene-apply.d.ts +0 -109
  399. package/dist/scene/scene-apply.d.ts.map +0 -1
  400. package/dist/scene/scene-apply.js +0 -326
  401. package/dist/scene/scene-diff-schema.d.ts +0 -285
  402. package/dist/scene/scene-diff-schema.d.ts.map +0 -1
  403. package/dist/scene/scene-diff-schema.js +0 -92
  404. package/dist/scene/scene-diff-types.d.ts +0 -40
  405. package/dist/scene/scene-diff-types.d.ts.map +0 -1
  406. package/dist/scene/scene-diff-types.js +0 -14
  407. package/dist/scene/scene-loader.d.ts +0 -177
  408. package/dist/scene/scene-loader.d.ts.map +0 -1
  409. package/dist/scene/scene-loader.js +0 -1213
  410. package/dist/scene/scene-query.d.ts +0 -11
  411. package/dist/scene/scene-query.d.ts.map +0 -1
  412. package/dist/scene/scene-query.js +0 -63
  413. package/dist/scene/scene-types.d.ts +0 -10
  414. package/dist/scene/scene-types.d.ts.map +0 -1
  415. package/dist/scene/scene-types.js +0 -8
  416. package/dist/scene/scene-version.d.ts +0 -26
  417. package/dist/scene/scene-version.d.ts.map +0 -1
  418. package/dist/scene/scene-version.js +0 -34
  419. package/dist/scene/schema/animation.d.ts +0 -8
  420. package/dist/scene/schema/animation.d.ts.map +0 -1
  421. package/dist/scene/schema/animation.js +0 -42
  422. package/dist/scene/schema/audio.d.ts +0 -13
  423. package/dist/scene/schema/audio.d.ts.map +0 -1
  424. package/dist/scene/schema/audio.js +0 -22
  425. package/dist/scene/schema/camera.d.ts +0 -28
  426. package/dist/scene/schema/camera.d.ts.map +0 -1
  427. package/dist/scene/schema/camera.js +0 -17
  428. package/dist/scene/schema/collider.d.ts +0 -40
  429. package/dist/scene/schema/collider.d.ts.map +0 -1
  430. package/dist/scene/schema/collider.js +0 -55
  431. package/dist/scene/schema/entity-ref.d.ts +0 -31
  432. package/dist/scene/schema/entity-ref.d.ts.map +0 -1
  433. package/dist/scene/schema/entity-ref.js +0 -61
  434. package/dist/scene/schema/entity.d.ts +0 -1036
  435. package/dist/scene/schema/entity.d.ts.map +0 -1
  436. package/dist/scene/schema/entity.js +0 -153
  437. package/dist/scene/schema/environment.d.ts +0 -425
  438. package/dist/scene/schema/environment.d.ts.map +0 -1
  439. package/dist/scene/schema/environment.js +0 -357
  440. package/dist/scene/schema/index.d.ts +0 -39
  441. package/dist/scene/schema/index.d.ts.map +0 -1
  442. package/dist/scene/schema/index.js +0 -20
  443. package/dist/scene/schema/instances.d.ts +0 -14
  444. package/dist/scene/schema/instances.d.ts.map +0 -1
  445. package/dist/scene/schema/instances.js +0 -28
  446. package/dist/scene/schema/joint.d.ts +0 -23
  447. package/dist/scene/schema/joint.d.ts.map +0 -1
  448. package/dist/scene/schema/joint.js +0 -23
  449. package/dist/scene/schema/light.d.ts +0 -38
  450. package/dist/scene/schema/light.d.ts.map +0 -1
  451. package/dist/scene/schema/light.js +0 -26
  452. package/dist/scene/schema/material.d.ts +0 -199
  453. package/dist/scene/schema/material.d.ts.map +0 -1
  454. package/dist/scene/schema/material.js +0 -99
  455. package/dist/scene/schema/mesh.d.ts +0 -48
  456. package/dist/scene/schema/mesh.d.ts.map +0 -1
  457. package/dist/scene/schema/mesh.js +0 -82
  458. package/dist/scene/schema/particles.d.ts +0 -2178
  459. package/dist/scene/schema/particles.d.ts.map +0 -1
  460. package/dist/scene/schema/particles.js +0 -321
  461. package/dist/scene/schema/physics.d.ts +0 -56
  462. package/dist/scene/schema/physics.d.ts.map +0 -1
  463. package/dist/scene/schema/physics.js +0 -37
  464. package/dist/scene/schema/scene-file.d.ts +0 -304
  465. package/dist/scene/schema/scene-file.d.ts.map +0 -1
  466. package/dist/scene/schema/scene-file.js +0 -262
  467. package/dist/scene/schema/shadow.d.ts +0 -28
  468. package/dist/scene/schema/shadow.d.ts.map +0 -1
  469. package/dist/scene/schema/shadow.js +0 -20
  470. package/dist/scene/schema/spline.d.ts +0 -25
  471. package/dist/scene/schema/spline.d.ts.map +0 -1
  472. package/dist/scene/schema/spline.js +0 -15
  473. package/dist/scene/schema/tuples.d.ts +0 -12
  474. package/dist/scene/schema/tuples.d.ts.map +0 -1
  475. package/dist/scene/schema/tuples.js +0 -14
  476. package/dist/scene/schema/ui.d.ts +0 -880
  477. package/dist/scene/schema/ui.d.ts.map +0 -1
  478. package/dist/scene/schema/ui.js +0 -506
  479. package/dist/scene/user-data.d.ts +0 -171
  480. package/dist/scene/user-data.d.ts.map +0 -1
  481. package/dist/scene/user-data.js +0 -137
  482. package/dist/setup/setup-audio.d.ts +0 -20
  483. package/dist/setup/setup-audio.d.ts.map +0 -1
  484. package/dist/setup/setup-audio.js +0 -41
  485. package/dist/setup/setup-particles.d.ts +0 -17
  486. package/dist/setup/setup-particles.d.ts.map +0 -1
  487. package/dist/setup/setup-particles.js +0 -16
  488. package/dist/setup/setup-physics.d.ts +0 -25
  489. package/dist/setup/setup-physics.d.ts.map +0 -1
  490. package/dist/setup/setup-physics.js +0 -51
  491. package/dist/setup/setup-renderer.d.ts +0 -69
  492. package/dist/setup/setup-renderer.d.ts.map +0 -1
  493. package/dist/setup/setup-renderer.js +0 -363
  494. package/dist/tools/define-tool.d.ts +0 -105
  495. package/dist/tools/define-tool.d.ts.map +0 -1
  496. package/dist/tools/define-tool.js +0 -82
  497. package/dist/world2d/authoring-2d.d.ts +0 -76
  498. package/dist/world2d/authoring-2d.d.ts.map +0 -1
  499. package/dist/world2d/authoring-2d.js +0 -176
  500. package/dist/world2d/capture-to-scene2d.d.ts +0 -5
  501. package/dist/world2d/capture-to-scene2d.d.ts.map +0 -1
  502. package/dist/world2d/capture-to-scene2d.js +0 -49
  503. package/dist/world2d/collision-2d.d.ts +0 -52
  504. package/dist/world2d/collision-2d.d.ts.map +0 -1
  505. package/dist/world2d/collision-2d.js +0 -70
  506. package/dist/world2d/components-2d.d.ts +0 -47
  507. package/dist/world2d/components-2d.d.ts.map +0 -1
  508. package/dist/world2d/components-2d.js +0 -77
  509. package/dist/world2d/index.d.ts +0 -34
  510. package/dist/world2d/index.d.ts.map +0 -1
  511. package/dist/world2d/index.js +0 -32
  512. package/dist/world2d/ingest-iframe-2d.d.ts +0 -82
  513. package/dist/world2d/ingest-iframe-2d.d.ts.map +0 -1
  514. package/dist/world2d/ingest-iframe-2d.js +0 -166
  515. package/dist/world2d/ingest2d.d.ts +0 -97
  516. package/dist/world2d/ingest2d.d.ts.map +0 -1
  517. package/dist/world2d/ingest2d.js +0 -40
  518. package/dist/world2d/physics2d-registry.d.ts +0 -24
  519. package/dist/world2d/physics2d-registry.d.ts.map +0 -1
  520. package/dist/world2d/physics2d-registry.js +0 -38
  521. package/dist/world2d/pixi-game-adapter.d.ts +0 -107
  522. package/dist/world2d/pixi-game-adapter.d.ts.map +0 -1
  523. package/dist/world2d/pixi-game-adapter.js +0 -211
  524. package/dist/world2d/pixi-surface.d.ts +0 -39
  525. package/dist/world2d/pixi-surface.d.ts.map +0 -1
  526. package/dist/world2d/pixi-surface.js +0 -47
  527. package/dist/world2d/scene-capture-2d.d.ts +0 -43
  528. package/dist/world2d/scene-capture-2d.d.ts.map +0 -1
  529. package/dist/world2d/scene-capture-2d.js +0 -92
  530. package/dist/world2d/scene2d-loader.d.ts +0 -27
  531. package/dist/world2d/scene2d-loader.d.ts.map +0 -1
  532. package/dist/world2d/scene2d-loader.js +0 -274
  533. package/dist/world2d/schema/entity2d.d.ts +0 -102
  534. package/dist/world2d/schema/entity2d.d.ts.map +0 -1
  535. package/dist/world2d/schema/entity2d.js +0 -119
  536. package/dist/world2d/schema/physics2d.d.ts +0 -46
  537. package/dist/world2d/schema/physics2d.d.ts.map +0 -1
  538. package/dist/world2d/schema/physics2d.js +0 -45
  539. package/dist/world2d/schema/sprite.d.ts +0 -42
  540. package/dist/world2d/schema/sprite.d.ts.map +0 -1
  541. package/dist/world2d/schema/sprite.js +0 -63
  542. package/dist/world2d/schema/tilemap.d.ts +0 -15
  543. package/dist/world2d/schema/tilemap.d.ts.map +0 -1
  544. package/dist/world2d/schema/tilemap.js +0 -19
  545. package/dist/world2d/schema/tuples2d.d.ts +0 -20
  546. package/dist/world2d/schema/tuples2d.d.ts.map +0 -1
  547. package/dist/world2d/schema/tuples2d.js +0 -19
  548. package/dist/world2d/system-adapters-2d.d.ts +0 -16
  549. package/dist/world2d/system-adapters-2d.d.ts.map +0 -1
  550. package/dist/world2d/system-adapters-2d.js +0 -37
  551. package/dist/world2d/transform-writer-2d.d.ts +0 -16
  552. package/dist/world2d/transform-writer-2d.d.ts.map +0 -1
  553. package/dist/world2d/transform-writer-2d.js +0 -22
  554. package/dist/world2d/types.d.ts +0 -53
  555. package/dist/world2d/types.d.ts.map +0 -1
  556. package/dist/world2d/types.js +0 -1
  557. package/src/runtime/scene-ui-bridge.ts +0 -86
  558. package/src/runtime/scene-ui-data.ts +0 -119
  559. package/src/scene/schema/ui.ts +0 -602
@@ -1,248 +0,0 @@
1
- /**
2
- * Scene capture — the core primitive of unmodified-game ingestion.
3
- *
4
- * An external three.js game owns its own `WebGLRenderer`, `Scene`, camera, and
5
- * render loop. To let the editor inspect/edit that live scene WITHOUT touching
6
- * the game's code, we need a handle to the game's `Scene`+camera the moment it
7
- * first renders. The robust way to obtain it is an **accessor trap** on
8
- * `WebGLRenderer.prototype.render`:
9
- *
10
- * - `WebGLRenderer` assigns `this.render` as an OWN instance property inside
11
- * its constructor (not on the prototype), and `THREE.WebGLRenderer` is a
12
- * read-only module export (can't subclass-swap it). A naive "wrap render"
13
- * hook therefore captures nothing.
14
- * - Installing a getter/setter for `render` on the PROTOTYPE means the
15
- * constructor's `this.render = realFn` hits our setter (the instance has no
16
- * own `render` yet), we stash the real fn, and our getter returns a wrapper
17
- * that captures `(scene, camera, renderer)` on the first real frame.
18
- *
19
- * This is the hardened, typed form of the `ingest-study` spike
20
- * (`docs/ingest-study-spike/vgai-ingest-adapter.js`), proven against an
21
- * unmodified `three.js/examples/games_fps` game.
22
- *
23
- * CRITICAL: the trap must be installed on the SAME `three` module instance the
24
- * game uses. In a bundler/dev-server that dedupes `three` (one `node_modules/
25
- * three`), an external ESM game's `import 'three'` resolves to that one instance,
26
- * so passing the host's `THREE` here traps the game's renderer too. A game that
27
- * bundles its own copy of `three` cannot be captured this way (see
28
- * `docs/UNMODIFIED-GAME-INGESTION-STUDY.md` §4A — the module-identity gatekeeper).
29
- *
30
- * Wave 17 (`docs/WAVE17-F13-COMPOSER-RESIZE-FIX-DESIGN.md`) adds an OPTIONAL,
31
- * ADDITIVE composer capture: a game rendering through its own three.js addon
32
- * `EffectComposer` (`three/examples/jsm/postprocessing/EffectComposer.js`)
33
- * still trips the `render` trap above (its `RenderPass` calls
34
- * `renderer.render(scene,camera)` internally), but the renderer holds no
35
- * reference back to the composer, so the host previously could not resize the
36
- * composer's own (intentionally non-1:1, progressively-downsampled — see
37
- * `UnrealBloomPass`) render targets when the host resizes the game's pane.
38
- * Unlike `WebGLRenderer`, `EffectComposer` is a plain ES class whose methods
39
- * (including `render`) live on the PROTOTYPE, not assigned as own instance
40
- * properties in the constructor — so a direct method-wrapper (no getter/
41
- * setter indirection) on `EffectComposer.prototype.render` is sufficient: it
42
- * calls through to the real `render`, then — AFTER that call, so any nested
43
- * `renderer.render()` the pass makes has already hit the trap above and set
44
- * `captured` — records `this` (the composer instance) if its `.renderer` is
45
- * the captured one. This is deduped/shared-trappable for the same reason
46
- * `WebGLRenderer` is: `EffectComposer.js` is a FILE inside the same `three`
47
- * package tree Vite's `resolve.dedupe: ['three', …]` already collapses to one
48
- * instance — not a separate package with its own dedupe question. Proven
49
- * live against the `bloom-composer` fixture
50
- * (`docs/f13-bloom-composer-proof/record-fixed.mjs`).
51
- */
52
- /**
53
- * Install the render accessor trap on `threeNamespace.WebGLRenderer.prototype`.
54
- * Pass the host's `three` module so the game (which shares it) is trapped.
55
- *
56
- * `effectComposerCtor` is OPTIONAL (Wave 17, D-C2): pass the host's
57
- * `EffectComposer` class (`three/examples/jsm/postprocessing/EffectComposer.js`)
58
- * to also trap composer construction/rendering on that shared addon, so
59
- * `resizeComposers()` can reach it. Omitting it (or a game never constructing
60
- * one) leaves capture byte-identical to before this wave.
61
- *
62
- * Idempotent per call site is NOT guaranteed — install once per ingest session
63
- * and `uninstall()` on teardown.
64
- */
65
- export function installSceneCapture(threeNamespace, effectComposerCtor) {
66
- const THREE_NS = threeNamespace;
67
- const proto = THREE_NS.WebGLRenderer.prototype;
68
- // Stash the real render fn per-instance under a unique symbol so multiple
69
- // renderers (editor's + game's) never collide.
70
- const REAL = Symbol('vgai.realRender');
71
- let captured = null;
72
- let drawCount = 0;
73
- const waiters = [];
74
- // Preserve any descriptor already on the prototype so uninstall can restore it.
75
- const priorDescriptor = Object.getOwnPropertyDescriptor(proto, 'render');
76
- // Trap setAnimationLoop to record each renderer's game loop callback, so the host
77
- // can freeze (set null) and resume (re-set) the game's own rAF for stable editing.
78
- // CRITICAL: like `render`, WebGLRenderer assigns `this.setAnimationLoop` as an OWN
79
- // instance property in its constructor — NOT on the prototype. A naive value-wrapper
80
- // on the prototype is therefore shadowed by the instance's own property and never
81
- // runs (resume could never recover the callback). So we mirror the `render` trap: a
82
- // prototype getter/setter. The constructor's `this.setAnimationLoop = realFn` hits
83
- // our SETTER (the instance has no own property yet) and we stash realFn per-instance;
84
- // the GETTER returns a wrapper that records each non-null callback before forwarding.
85
- const REAL_SAL = Symbol('vgai.realSetAnimationLoop');
86
- const loopCallbacks = new WeakMap();
87
- const priorSAL = Object.getOwnPropertyDescriptor(proto, 'setAnimationLoop');
88
- Object.defineProperty(proto, 'setAnimationLoop', {
89
- configurable: true,
90
- set(fn) {
91
- this[REAL_SAL] = fn;
92
- },
93
- get() {
94
- const self = this;
95
- return function setAnimationLoop(cb) {
96
- if (cb)
97
- loopCallbacks.set(self, cb);
98
- const real = self[REAL_SAL];
99
- return typeof real === 'function'
100
- ? real.call(self, cb)
101
- : undefined;
102
- };
103
- },
104
- });
105
- Object.defineProperty(proto, 'render', {
106
- configurable: true,
107
- set(fn) {
108
- this[REAL] = fn;
109
- },
110
- get() {
111
- const self = this;
112
- return function render(...args) {
113
- const [scene, camera] = args;
114
- drawCount++;
115
- if (!captured && scene && scene.isScene) {
116
- captured = {
117
- scene: scene,
118
- camera: camera,
119
- renderer: self,
120
- };
121
- for (const resolve of waiters.splice(0))
122
- resolve(captured);
123
- }
124
- // Forward to the renderer's real render with the original args.
125
- return self[REAL].apply(self, args);
126
- };
127
- },
128
- });
129
- // ---- Wave 17 (D-C2): additive composer capture, only when a composer ctor
130
- // was passed. `EffectComposer` methods (including `render`) live on the
131
- // PROTOTYPE (a plain ES class — the constructor never does `this.render =
132
- // …`), so a direct method-wrapper suffices — no getter/setter indirection
133
- // like the `render`/`setAnimationLoop` traps above need. ----
134
- const composers = new Set();
135
- let composerProto;
136
- let priorComposerRender;
137
- if (effectComposerCtor) {
138
- const EC = effectComposerCtor;
139
- composerProto = EC.prototype;
140
- priorComposerRender = composerProto['render'];
141
- composerProto['render'] = function (...args) {
142
- // Call the real render FIRST: a composer's RenderPass calls
143
- // `renderer.render(scene,camera)` internally, which is what actually
144
- // sets `captured` (above) on the game's first frame. Checking after
145
- // ensures a composer's very first render is still collected.
146
- const result = priorComposerRender?.apply(this, args);
147
- if (captured && this.renderer === captured.renderer) {
148
- composers.add(this);
149
- }
150
- return result;
151
- };
152
- }
153
- // Extracted so `uninstall()`'s own cognitive complexity doesn't grow with
154
- // this additive Wave-17 restore step (biome's noExcessiveCognitiveComplexity).
155
- function restoreComposerTrap() {
156
- if (!composerProto)
157
- return;
158
- if (priorComposerRender)
159
- composerProto['render'] = priorComposerRender;
160
- else
161
- delete composerProto['render'];
162
- }
163
- return {
164
- get captured() {
165
- return captured;
166
- },
167
- getDrawCount() {
168
- return drawCount;
169
- },
170
- getAnimationLoop(renderer) {
171
- return loopCallbacks.get(renderer) ?? null;
172
- },
173
- resizeComposers(w, h) {
174
- // No composer ctor passed (or none constructed yet) → no-op, and never
175
- // touches `renderer.getPixelRatio()` — a non-composer game's captured
176
- // renderer need not even expose that method for this to stay a no-op.
177
- if (!captured || composers.size === 0)
178
- return;
179
- const pixelRatio = captured.renderer.getPixelRatio();
180
- for (const composer of composers) {
181
- composer.setSize(w, h);
182
- composer.setPixelRatio(pixelRatio);
183
- }
184
- },
185
- waitForCapture(timeoutMs = 10_000) {
186
- if (captured)
187
- return Promise.resolve(captured);
188
- return new Promise((resolve, reject) => {
189
- const timer = setTimeout(() => {
190
- const i = waiters.indexOf(wrapped);
191
- if (i >= 0)
192
- waiters.splice(i, 1);
193
- reject(new Error(`Scene capture timed out after ${timeoutMs}ms — the game never rendered, ` +
194
- `or it bundles its own (un-shared) copy of three.`));
195
- }, timeoutMs);
196
- const wrapped = (rt) => {
197
- clearTimeout(timer);
198
- resolve(rt);
199
- };
200
- waiters.push(wrapped);
201
- });
202
- },
203
- uninstall() {
204
- // Restore the captured renderer's real render as an OWN property so its
205
- // loop keeps working after the prototype trap is removed.
206
- if (captured) {
207
- const r = captured.renderer;
208
- const real = r[REAL];
209
- if (typeof real === 'function') {
210
- Object.defineProperty(captured.renderer, 'render', {
211
- configurable: true,
212
- writable: true,
213
- value: real,
214
- });
215
- }
216
- }
217
- if (priorDescriptor) {
218
- Object.defineProperty(proto, 'render', priorDescriptor);
219
- }
220
- else {
221
- delete proto['render'];
222
- }
223
- // Restore the captured renderer's real setAnimationLoop as an OWN property (the
224
- // prototype getter/setter intercepted the constructor's assignment, so the
225
- // instance has none) — else removing the prototype trap would leave it without
226
- // setAnimationLoop and freeze its loop.
227
- if (captured) {
228
- const r = captured.renderer;
229
- const realSal = r[REAL_SAL];
230
- if (typeof realSal === 'function') {
231
- Object.defineProperty(captured.renderer, 'setAnimationLoop', {
232
- configurable: true,
233
- writable: true,
234
- value: realSal,
235
- });
236
- }
237
- }
238
- if (priorSAL)
239
- Object.defineProperty(proto, 'setAnimationLoop', priorSAL);
240
- else
241
- delete proto['setAnimationLoop'];
242
- // Wave 17: fully restore the composer addon's `render` (a plain
243
- // prototype method — no per-instance own-property to restore, unlike
244
- // the renderer/loop traps above).
245
- restoreComposerTrap();
246
- },
247
- };
248
- }
@@ -1,47 +0,0 @@
1
- /**
2
- * Upstream-pin extraction — R5 (docs/MASTER-ARCHITECTURE-REVIEW.md §4(c)/
3
- * §7.1 item 9): the fix for the overlay identity gap the structural-id +
4
- * `authoredAgainst.gameVersion` scheme (T7.7/D9) does not close. A re-vendor
5
- * of a vendored upstream game that keeps a slot's shape (index + three.js
6
- * type + name unchanged) reapplies a saved overlay onto a semantically
7
- * different object with `applied: 1, orphanedIds: []` — silent wrong-meaning
8
- * success — because `authoredAgainst.gameVersion` is the MANIFEST's own
9
- * `version` (hand-set by whoever wrote `vgai.game.json`, e.g. every
10
- * `public/ingest/*` vendored game ships `"version": "0.1.0"` regardless of
11
- * which upstream commit it vendors — see `public/ingest/{tanks,racing-game,
12
- * simcity}/vgai.game.json`), never tied to the thing that actually changes on
13
- * a re-vendor: the `UPSTREAM.md` pin.
14
- *
15
- * This module is the pure, dependency-free half (parse text -> pin, or
16
- * `null`): NO file I/O here, so it is usable from any context (editor
17
- * save/apply-time hooks over a fetched `/UPSTREAM.md`, a future Node-side
18
- * CLI check, tests). READ-ONLY by construction — it has no writer; this
19
- * codebase never generates or edits an `UPSTREAM.md` (the anti-shim rule:
20
- * adapters never fabricate first-party data, and a game's own vendoring
21
- * provenance is exactly that).
22
- *
23
- * Format (established convention, not invented here — see every
24
- * `public/ingest/*\/UPSTREAM.md`'s `## Upstream` section, e.g.
25
- * `public/ingest/tanks/UPSTREAM.md`):
26
- *
27
- * ## Upstream
28
- *
29
- * - Repo: https://github.com/colyseus/realtime-tanks-demo
30
- * - Commit: **`6339493130b4b1d4d28f0f52d17b2fba738c7d47`**
31
- *
32
- * i.e. a Markdown bullet whose label is `Commit:` and whose value is a bold,
33
- * backtick-code full (or abbreviated) git SHA. Every vendored game in this
34
- * repo (`tanks`, `racing-game`, `simcity`) follows this exact shape.
35
- */
36
- /**
37
- * Extract the pinned upstream commit hash from a vendored game's
38
- * `UPSTREAM.md` prose, or `null` if the file doesn't follow the convention
39
- * (or wasn't found — the caller decides what a missing file means; this
40
- * function only parses text it's handed). Never throws — an unparseable
41
- * document is an honest `null`, not an error (anti-shim: no guessing, no
42
- * fabricating a pin from a game folder that doesn't declare one, e.g. an
43
- * externally-authored non-vendored project opened via the CLI-on-folder
44
- * route).
45
- */
46
- export declare function extractUpstreamPin(markdown: string): string | null;
47
- //# sourceMappingURL=upstream-pin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upstream-pin.d.ts","sourceRoot":"","sources":["../../../src/adapter/ingest/upstream-pin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAKH;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE"}
@@ -1,50 +0,0 @@
1
- /**
2
- * Upstream-pin extraction — R5 (docs/MASTER-ARCHITECTURE-REVIEW.md §4(c)/
3
- * §7.1 item 9): the fix for the overlay identity gap the structural-id +
4
- * `authoredAgainst.gameVersion` scheme (T7.7/D9) does not close. A re-vendor
5
- * of a vendored upstream game that keeps a slot's shape (index + three.js
6
- * type + name unchanged) reapplies a saved overlay onto a semantically
7
- * different object with `applied: 1, orphanedIds: []` — silent wrong-meaning
8
- * success — because `authoredAgainst.gameVersion` is the MANIFEST's own
9
- * `version` (hand-set by whoever wrote `vgai.game.json`, e.g. every
10
- * `public/ingest/*` vendored game ships `"version": "0.1.0"` regardless of
11
- * which upstream commit it vendors — see `public/ingest/{tanks,racing-game,
12
- * simcity}/vgai.game.json`), never tied to the thing that actually changes on
13
- * a re-vendor: the `UPSTREAM.md` pin.
14
- *
15
- * This module is the pure, dependency-free half (parse text -> pin, or
16
- * `null`): NO file I/O here, so it is usable from any context (editor
17
- * save/apply-time hooks over a fetched `/UPSTREAM.md`, a future Node-side
18
- * CLI check, tests). READ-ONLY by construction — it has no writer; this
19
- * codebase never generates or edits an `UPSTREAM.md` (the anti-shim rule:
20
- * adapters never fabricate first-party data, and a game's own vendoring
21
- * provenance is exactly that).
22
- *
23
- * Format (established convention, not invented here — see every
24
- * `public/ingest/*\/UPSTREAM.md`'s `## Upstream` section, e.g.
25
- * `public/ingest/tanks/UPSTREAM.md`):
26
- *
27
- * ## Upstream
28
- *
29
- * - Repo: https://github.com/colyseus/realtime-tanks-demo
30
- * - Commit: **`6339493130b4b1d4d28f0f52d17b2fba738c7d47`**
31
- *
32
- * i.e. a Markdown bullet whose label is `Commit:` and whose value is a bold,
33
- * backtick-code full (or abbreviated) git SHA. Every vendored game in this
34
- * repo (`tanks`, `racing-game`, `simcity`) follows this exact shape.
35
- */
36
- /** Matches `- Commit: **\`<sha>\`**` (any amount of internal whitespace, case-insensitive hex). */
37
- const COMMIT_BULLET_RE = /-\s*Commit:\s*\*\*`([0-9a-fA-F]{7,40})`\*\*/;
38
- /**
39
- * Extract the pinned upstream commit hash from a vendored game's
40
- * `UPSTREAM.md` prose, or `null` if the file doesn't follow the convention
41
- * (or wasn't found — the caller decides what a missing file means; this
42
- * function only parses text it's handed). Never throws — an unparseable
43
- * document is an honest `null`, not an error (anti-shim: no guessing, no
44
- * fabricating a pin from a game folder that doesn't declare one, e.g. an
45
- * externally-authored non-vendored project opened via the CLI-on-folder
46
- * route).
47
- */
48
- export function extractUpstreamPin(markdown) {
49
- return COMMIT_BULLET_RE.exec(markdown)?.[1] ?? null;
50
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * Capability-gate shortfall reporting (D10, T7.6) — the honesty half of the
3
- * play-control contract. `docs/CAPABILITY-TIERS.md` §(d) draws the `loop` axis
4
- * (`gated | self-driven`) as independent of capability tier: a `self-driven`
5
- * world (an ingested game driving its own rAF/ticker) pauses for real ONLY if
6
- * its adapter implements an explicit loop-gate capability
7
- * (`MountedWorldBase.setPaused`/`step`) — otherwise it "honestly reports so"
8
- * rather than a silent no-op (the D5/COMPOSITION-DESIGN.md §5.2 finding: gating
9
- * a raw-rAF loop from outside was demonstrated and REJECTED). The audio seam
10
- * (`SystemAdapters.AudioAdapter`) has the identical shape: absent or unable to
11
- * silence a world's audio on pause must report, not pretend.
12
- *
13
- * Pure compute + message-formatting, same split as `achieved-tier.ts`
14
- * (`packages/editor/src/achieved-tier.ts`) — callers own the actual
15
- * `console.warn`/`editorConsole.warn` call; this module never logs.
16
- */
17
- /** Greppable prefix for a loop-gate shortfall (pause requested, world's loop
18
- * could not actually be gated). */
19
- export declare const LOOP_GATE_PREFIX = "loop-gate";
20
- /** Greppable prefix for an audio-gate shortfall (pause requested, world's
21
- * audio could not actually be silenced). */
22
- export declare const AUDIO_GATE_PREFIX = "audio-gate";
23
- /** One shortfall instance: which world, and why the capability wasn't there. */
24
- export interface CapabilityGateReport {
25
- readonly worldId: string;
26
- readonly reason: string;
27
- }
28
- /** Format a loop-gate shortfall message (a `self-driven` world with no
29
- * working pause capability). */
30
- export declare function formatLoopGateMessage(report: CapabilityGateReport): string;
31
- /** Format an audio-gate shortfall message (a world with no `AudioAdapter`, or
32
- * whose adapter cannot actually silence it). */
33
- export declare function formatAudioGateMessage(report: CapabilityGateReport): string;
34
- //# sourceMappingURL=loop-gate-report.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loop-gate-report.d.ts","sourceRoot":"","sources":["../../src/adapter/loop-gate-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;oCACoC;AACpC,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C;6CAC6C;AAC7C,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAcD;iCACiC;AACjC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAE1E;AAED;iDACiD;AACjD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAE3E"}
@@ -1,37 +0,0 @@
1
- /**
2
- * Capability-gate shortfall reporting (D10, T7.6) — the honesty half of the
3
- * play-control contract. `docs/CAPABILITY-TIERS.md` §(d) draws the `loop` axis
4
- * (`gated | self-driven`) as independent of capability tier: a `self-driven`
5
- * world (an ingested game driving its own rAF/ticker) pauses for real ONLY if
6
- * its adapter implements an explicit loop-gate capability
7
- * (`MountedWorldBase.setPaused`/`step`) — otherwise it "honestly reports so"
8
- * rather than a silent no-op (the D5/COMPOSITION-DESIGN.md §5.2 finding: gating
9
- * a raw-rAF loop from outside was demonstrated and REJECTED). The audio seam
10
- * (`SystemAdapters.AudioAdapter`) has the identical shape: absent or unable to
11
- * silence a world's audio on pause must report, not pretend.
12
- *
13
- * Pure compute + message-formatting, same split as `achieved-tier.ts`
14
- * (`packages/editor/src/achieved-tier.ts`) — callers own the actual
15
- * `console.warn`/`editorConsole.warn` call; this module never logs.
16
- */
17
- /** Greppable prefix for a loop-gate shortfall (pause requested, world's loop
18
- * could not actually be gated). */
19
- export const LOOP_GATE_PREFIX = 'loop-gate';
20
- /** Greppable prefix for an audio-gate shortfall (pause requested, world's
21
- * audio could not actually be silenced). */
22
- export const AUDIO_GATE_PREFIX = 'audio-gate';
23
- function formatGateMessage(prefix, capability, report) {
24
- return (`${prefix} world "${report.worldId}": pause requested but ${capability} cannot be gated ` +
25
- `(${report.reason}) — reporting honestly instead of silently no-op-ing ` +
26
- `(docs/CAPABILITY-TIERS.md §d). ${prefix} ${JSON.stringify(report)}`);
27
- }
28
- /** Format a loop-gate shortfall message (a `self-driven` world with no
29
- * working pause capability). */
30
- export function formatLoopGateMessage(report) {
31
- return formatGateMessage(LOOP_GATE_PREFIX, "this world's loop", report);
32
- }
33
- /** Format an audio-gate shortfall message (a world with no `AudioAdapter`, or
34
- * whose adapter cannot actually silence it). */
35
- export function formatAudioGateMessage(report) {
36
- return formatGateMessage(AUDIO_GATE_PREFIX, "this world's audio", report);
37
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * RapierPhysicsAdapter — the first-party `PhysicsAdapter` over the existing
3
- * `PhysicsRegistry` (Object3D ↔ Rapier body/collider). This is the generalized,
4
- * behind-the-interface form of the old `setEcsSyncTransform` teleport: it lets
5
- * the editor freeze a body, apply a gizmo edit, and resume — without the editor
6
- * knowing Rapier exists.
7
- */
8
- import type * as THREE from 'three';
9
- import type { PhysicsRegistry } from '../physics/physics-registry';
10
- import type { PhysicsAdapter } from './system-adapter';
11
- export declare function createRapierPhysicsAdapter(registry: PhysicsRegistry, debugMesh?: THREE.Object3D | null): PhysicsAdapter;
12
- //# sourceMappingURL=rapier-physics-adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rapier-physics-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/rapier-physics-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,eAAe,EACzB,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,GAChC,cAAc,CAsChB"}
@@ -1,46 +0,0 @@
1
- /**
2
- * RapierPhysicsAdapter — the first-party `PhysicsAdapter` over the existing
3
- * `PhysicsRegistry` (Object3D ↔ Rapier body/collider). This is the generalized,
4
- * behind-the-interface form of the old `setEcsSyncTransform` teleport: it lets
5
- * the editor freeze a body, apply a gizmo edit, and resume — without the editor
6
- * knowing Rapier exists.
7
- */
8
- export function createRapierPhysicsAdapter(registry, debugMesh) {
9
- /** Saved body types while frozen, so unfreeze can restore them. */
10
- const frozen = new Map();
11
- return {
12
- ownerOf(o) {
13
- const body = registry.get(o)?.body;
14
- if (!body)
15
- return 'editor';
16
- // A fixed body never moves on its own → the editor owns its transform.
17
- return body.isFixed() ? 'editor' : 'physics';
18
- },
19
- freeze(o) {
20
- const body = registry.get(o)?.body;
21
- if (!body || frozen.has(body))
22
- return;
23
- frozen.set(body, body.bodyType());
24
- // Kinematic-position: the body stops simulating but tracks the pose we set.
25
- body.setBodyType(2 /* KinematicPositionBased */, true);
26
- },
27
- commit(o, t) {
28
- const body = registry.get(o)?.body;
29
- if (!body)
30
- return;
31
- body.setTranslation({ x: t.position[0], y: t.position[1], z: t.position[2] }, true);
32
- body.setRotation({ x: t.rotation[0], y: t.rotation[1], z: t.rotation[2], w: t.rotation[3] }, true);
33
- },
34
- unfreeze(o) {
35
- const body = registry.get(o)?.body;
36
- if (!body)
37
- return;
38
- const prev = frozen.get(body);
39
- if (prev !== undefined) {
40
- body.setBodyType(prev, true);
41
- frozen.delete(body);
42
- }
43
- },
44
- debugDraw: () => debugMesh ?? null,
45
- };
46
- }
@@ -1,133 +0,0 @@
1
- /**
2
- * System adapters — optional subsystem capability providers hung off a mounted
3
- * game (`MountedGame.systems`). Each is a thin capability boundary the editor can
4
- * coordinate with WITHOUT owning the implementation. The first-party
5
- * implementers wrap Rapier / Colyseus / the InputManager; an external game
6
- * supplies its own or none, and the editor degrades per `capabilities`.
7
- *
8
- * These are introspection/coordination boundaries, NOT re-implementations: e.g.
9
- * `NetworkingAdapter` is not a transport, and `PhysicsAdapter` does not replace
10
- * Rapier — it lets the editor ask "who owns this object" and "freeze it while I
11
- * edit it".
12
- */
13
- import type * as THREE from 'three';
14
- import type { ActionValueType, Vector2 } from '../input/input-types';
15
- import type { Transform, TransformOwner } from './transform';
16
- /**
17
- * Physics coordination so the editor can stably edit an object a simulation
18
- * would otherwise overwrite every frame: `freeze → apply → unfreeze`.
19
- */
20
- export interface PhysicsAdapter {
21
- /** Returns `'physics'` when a body drives this object, else another owner. */
22
- ownerOf(o: THREE.Object3D): TransformOwner;
23
- /** Pause the body driving `o` (kinematic / sleep / detach) for editing. */
24
- freeze(o: THREE.Object3D): void;
25
- /** Teleport the body to the edited pose (so the sim continues from there). */
26
- commit(o: THREE.Object3D, t: Transform): void;
27
- /** Resume simulation of `o`. */
28
- unfreeze(o: THREE.Object3D): void;
29
- /** Optional debug-draw object (collider wireframes). */
30
- debugDraw?(): THREE.Object3D | null;
31
- }
32
- export interface NetPeer {
33
- id: string;
34
- label?: string;
35
- }
36
- /** The live connection lifecycle, for the editor's network inspector. */
37
- export type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'error';
38
- /** Identity of the room the local peer is currently in, or `null` when not connected. */
39
- export interface RoomInfo {
40
- roomId: string;
41
- sessionId: string;
42
- roomName: string;
43
- }
44
- /** Lightweight replication counters for the editor's network inspector. */
45
- export interface ReplicationStats {
46
- /** Number of replicated entities currently known (e.g. players + NPCs). */
47
- entities: number;
48
- /** Approximate inbound replication activity (state changes observed per second). */
49
- msgsInPerSec: number;
50
- /** Approximate outbound message rate (client → server sends per second). */
51
- msgsOutPerSec: number;
52
- }
53
- export type Unsubscribe = () => void;
54
- /** INTROSPECTION over replication state — NOT a networking transport. */
55
- export interface NetworkingAdapter {
56
- peers(): NetPeer[];
57
- networkId(o: THREE.Object3D): string | null;
58
- authority(o: THREE.Object3D): 'local' | 'remote' | 'server';
59
- /** Remote/server-authoritative objects → inspect-only in the editor. */
60
- editable(o: THREE.Object3D): boolean;
61
- /** Current connection lifecycle state. */
62
- getConnectionState(): ConnectionState;
63
- /** The active room's identity, or `null` when not connected to a room. */
64
- getRoomInfo(): RoomInfo | null;
65
- /** Replication activity snapshot, for a live network inspector panel. */
66
- getReplicationStats(): ReplicationStats;
67
- /** Subscribe to changes in connection state / room / replication stats. */
68
- subscribe(cb: () => void): Unsubscribe;
69
- }
70
- /** One action's current value, tagged with its declared shape (F1 `ActionValueType`) so a
71
- * consumer (editor input inspector, conformance suite) can render/assert on the real typed
72
- * value instead of a lossy digital coercion. `value` is a `number` for `'digital'`
73
- * (1 = pressed, 0 = not) and `'scalar'`, or a `Vector2` for `'vector2'`/`'pointerDelta'`/
74
- * `'pointerPosition'` — narrow on `type` to know which. */
75
- export interface ActionValueSnapshot {
76
- type: ActionValueType;
77
- value: number | Vector2;
78
- }
79
- export interface InputAdapter {
80
- poll(): void;
81
- /** Every named action's current value, faithfully typed per its declared `ActionValueType`
82
- * (F1, spec §12) — digital reads as 1/0, scalar as its float, vector2/pointerDelta/
83
- * pointerPosition as `{x,y}`. Never coerces a non-digital action down to 0/1. */
84
- actions(): Readonly<Record<string, ActionValueSnapshot>>;
85
- }
86
- /** URL remap so an ingested game's relative asset paths resolve under the host. */
87
- export interface AssetAdapter {
88
- resolve(url: string): string;
89
- }
90
- export interface NavPoint {
91
- x: number;
92
- y: number;
93
- z: number;
94
- }
95
- /**
96
- * Inspect a game's navigation mesh: whether one is built, query a path, and get a
97
- * debug overlay. Coordination/introspection only — the editor doesn't own the build.
98
- */
99
- export interface NavigationAdapter {
100
- hasNavMesh(): boolean;
101
- findPath(start: NavPoint, end: NavPoint): NavPoint[];
102
- debugMesh(scene: THREE.Scene): THREE.Object3D | null;
103
- }
104
- /**
105
- * Silence/restore a world's own audio (D10, T7.6) — NOT a mixer/bus API. This
106
- * is the seam `Game.play.pause()` calls so a paused world's audio goes quiet
107
- * too (`docs/DECISIONS-PENDING.md` §D10: "an audio seam in `SystemAdapters` so
108
- * pause can silence game audio (howler et al.) or explicitly report it
109
- * cannot"). Absence on a world's `mounted.systems` means exactly that:
110
- * `Game.play.pause()` reports it loudly once per world rather than silently
111
- * leaving that world's audio playing under a "paused" game.
112
- */
113
- export interface AudioAdapter {
114
- /** `true` silences this world's audio; `false` restores it to whatever
115
- * level it was at before silencing (an implementer's own concern — the
116
- * first-party adapter restores its master-gain value, not a hardcoded 1). */
117
- setMuted(muted: boolean): void;
118
- /** Current muted state, for inspection (editor mute UI, proofs). */
119
- isMuted(): boolean;
120
- }
121
- /**
122
- * The set of optional subsystem providers a mounted game may expose. Absence of
123
- * a provider means "capability not supported" — the editor degrades gracefully.
124
- */
125
- export interface SystemAdapters {
126
- physics?: PhysicsAdapter;
127
- networking?: NetworkingAdapter;
128
- input?: InputAdapter;
129
- assets?: AssetAdapter;
130
- navigation?: NavigationAdapter;
131
- audio?: AudioAdapter;
132
- }
133
- //# sourceMappingURL=system-adapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"system-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/system-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC;IAC3C,2EAA2E;IAC3E,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAChC,8EAA8E;IAC9E,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9C,gCAAgC;IAChC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAClC,wDAAwD;IACxD,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAEpF,yFAAyF;AACzF,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,YAAY,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,KAAK,IAAI,OAAO,EAAE,CAAC;IACnB,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5C,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5D,wEAAwE;IACxE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IACrC,0CAA0C;IAC1C,kBAAkB,IAAI,eAAe,CAAC;IACtC,0EAA0E;IAC1E,WAAW,IAAI,QAAQ,GAAG,IAAI,CAAC;IAC/B,yEAAyE;IACzE,mBAAmB,IAAI,gBAAgB,CAAC;IACxC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC;CACxC;AAED;;;;4DAI4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,IAAI,IAAI,CAAC;IACb;;sFAEkF;IAClF,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;CAC1D;AAED,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,IAAI,OAAO,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC;IACrD,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;CACtD;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B;;kFAE8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,oEAAoE;IACpE,OAAO,IAAI,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB"}
@@ -1,13 +0,0 @@
1
- /**
2
- * System adapters — optional subsystem capability providers hung off a mounted
3
- * game (`MountedGame.systems`). Each is a thin capability boundary the editor can
4
- * coordinate with WITHOUT owning the implementation. The first-party
5
- * implementers wrap Rapier / Colyseus / the InputManager; an external game
6
- * supplies its own or none, and the editor degrades per `capabilities`.
7
- *
8
- * These are introspection/coordination boundaries, NOT re-implementations: e.g.
9
- * `NetworkingAdapter` is not a transport, and `PhysicsAdapter` does not replace
10
- * Rapier — it lets the editor ask "who owns this object" and "freeze it while I
11
- * edit it".
12
- */
13
- export {};