@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,63 +0,0 @@
1
- import { z } from 'zod';
2
- import { Vec2Schema } from './tuples2d';
3
- /**
4
- * `sprite` authored section — engine-owned 2D sprite data, NOT a `PIXI.Sprite`.
5
- *
6
- * Per ARCHITECTURE.md §Render Surfaces: authored data says `sprite`, and a runtime
7
- * adapter instantiates it onto the appropriate backend (here, a `PIXI.Sprite` on
8
- * the world2d surface). A 1x1 white texture is used when `texture` is omitted, so a
9
- * tinted rectangle sprite needs no asset.
10
- */
11
- export const SpriteSchema = z
12
- .object({
13
- texture: z
14
- .string()
15
- .optional()
16
- .describe('Texture asset URL (loaded via PIXI.Assets). Omit for a tintable 1x1 white texture'),
17
- frame: z
18
- .string()
19
- .optional()
20
- .describe('Spritesheet frame/sub-texture name when `texture` is a spritesheet atlas'),
21
- anchor: Vec2Schema.optional().describe('Normalized anchor [x, y] (0..1). Default [0.5, 0.5]'),
22
- tint: z
23
- .string()
24
- .optional()
25
- .describe("Tint color as hex string (e.g. '#ff8800'). Default white"),
26
- alpha: z.number().min(0).max(1).optional().describe('Opacity 0..1. Default 1'),
27
- width: z
28
- .number()
29
- .optional()
30
- .describe('Explicit display width in pixels (overrides texture size)'),
31
- height: z
32
- .number()
33
- .optional()
34
- .describe('Explicit display height in pixels (overrides texture size)'),
35
- blendMode: z
36
- .enum(['normal', 'add', 'multiply', 'screen'])
37
- .optional()
38
- .describe('PixiJS blend mode. Default normal'),
39
- interactive: z
40
- .boolean()
41
- .optional()
42
- .describe('Enable federated pointer events (eventMode=static) so this sprite can be picked'),
43
- filter: z
44
- .enum(['none', 'blur', 'desaturate'])
45
- .optional()
46
- .describe('Apply a PixiJS filter (BlurFilter / ColorMatrix desaturate). Default none'),
47
- animationFrames: z
48
- .number()
49
- .int()
50
- .optional()
51
- .describe('If set, build an AnimatedSprite cycling N generated tinted frames'),
52
- fps: z.number().optional().describe('AnimatedSprite playback speed in frames/sec. Default 8'),
53
- })
54
- .describe('2D sprite appearance (world2d). Instantiated as a PIXI.Sprite or AnimatedSprite');
55
- /** `text` authored section — a world-space PIXI.Text label (world-space UI). */
56
- export const Text2DSchema = z
57
- .object({
58
- text: z.string().describe('The string to display'),
59
- fontSize: z.number().optional().describe('Font size in pixels. Default 24'),
60
- fill: z.string().optional().describe("Text color as hex string. Default '#ffffff'"),
61
- anchor: Vec2Schema.optional().describe('Normalized anchor [x, y] (0..1). Default [0.5, 0.5]'),
62
- })
63
- .describe('2D world-space text label (world2d). Instantiated as a PIXI.Text');
@@ -1,15 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * `tilemap` authored section — engine-owned 2D tilemap data (NOT a CompositeTilemap),
4
- * instantiated to a `@pixi/tilemap` CompositeTilemap by the 2D spawn path. Asset-light:
5
- * a `palette` of hex colors generates one tile texture each, and `tiles` is a row-major
6
- * grid of palette indices. A real tileset texture/Tiled `.tmj` import is the natural
7
- * extension (per the spec's optional Tiled note).
8
- */
9
- export declare const TilemapSchema: z.ZodObject<{
10
- tileSize: z.ZodNumber;
11
- palette: z.ZodArray<z.ZodString>;
12
- tiles: z.ZodArray<z.ZodArray<z.ZodNumber>>;
13
- }, z.core.$strip>;
14
- export type SceneTilemap = z.infer<typeof TilemapSchema>;
15
- //# sourceMappingURL=tilemap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tilemap.d.ts","sourceRoot":"","sources":["../../../src/world2d/schema/tilemap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;;;;iBAU2D,CAAC;AAEtF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -1,19 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * `tilemap` authored section — engine-owned 2D tilemap data (NOT a CompositeTilemap),
4
- * instantiated to a `@pixi/tilemap` CompositeTilemap by the 2D spawn path. Asset-light:
5
- * a `palette` of hex colors generates one tile texture each, and `tiles` is a row-major
6
- * grid of palette indices. A real tileset texture/Tiled `.tmj` import is the natural
7
- * extension (per the spec's optional Tiled note).
8
- */
9
- export const TilemapSchema = z
10
- .object({
11
- tileSize: z.number().describe('Tile width/height in pixels'),
12
- palette: z
13
- .array(z.string())
14
- .describe('Hex colors; one generated tile texture per entry (index → color)'),
15
- tiles: z
16
- .array(z.array(z.number().int()))
17
- .describe('Row-major grid of palette indices (each row is an array of tile indices)'),
18
- })
19
- .describe('2D tilemap (world2d). Instantiated as a @pixi/tilemap CompositeTilemap');
@@ -1,20 +0,0 @@
1
- import { z } from 'zod';
2
- /** 2D vector as [x, y]. The world2d analog of the 3D Vec3. */
3
- export declare const Vec2Schema: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
4
- export type Vec2 = z.infer<typeof Vec2Schema>;
5
- /**
6
- * 2D local transform — the world2d analog of the 3D TransformSchema.
7
- *
8
- * Orientation is a single scalar `rotation` (radians, about the screen Z axis),
9
- * NOT a quaternion: PixiJS display objects rotate in the plane. The runtime/editor
10
- * neutral `Transform` tuple (position[3]/quaternion[4]/scale[3]) maps onto this as
11
- * z = 0 and rotation about Z (see PIXI-WORLD2D-MAXIMAL-SPEC model-transform2d-section).
12
- */
13
- export declare const Transform2DSchema: z.ZodObject<{
14
- position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
15
- rotation: z.ZodOptional<z.ZodNumber>;
16
- scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
17
- pivot: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
18
- }, z.core.$strip>;
19
- export type SceneTransform2D = z.infer<typeof Transform2DSchema>;
20
- //# sourceMappingURL=tuples2d.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tuples2d.d.ts","sourceRoot":"","sources":["../../../src/world2d/schema/tuples2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8DAA8D;AAC9D,eAAO,MAAM,UAAU,8CAAoE,CAAC;AAE5F,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB;;;;;iBAOwC,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1,19 +0,0 @@
1
- import { z } from 'zod';
2
- /** 2D vector as [x, y]. The world2d analog of the 3D Vec3. */
3
- export const Vec2Schema = z.tuple([z.number(), z.number()]).describe('2D vector as [x, y]');
4
- /**
5
- * 2D local transform — the world2d analog of the 3D TransformSchema.
6
- *
7
- * Orientation is a single scalar `rotation` (radians, about the screen Z axis),
8
- * NOT a quaternion: PixiJS display objects rotate in the plane. The runtime/editor
9
- * neutral `Transform` tuple (position[3]/quaternion[4]/scale[3]) maps onto this as
10
- * z = 0 and rotation about Z (see PIXI-WORLD2D-MAXIMAL-SPEC model-transform2d-section).
11
- */
12
- export const Transform2DSchema = z
13
- .object({
14
- position: Vec2Schema.optional().describe('Local position [x, y] in world2d pixels'),
15
- rotation: z.number().optional().describe('Rotation in radians about the Z axis. Default 0'),
16
- scale: Vec2Schema.optional().describe('Scale per axis [x, y]. Default [1, 1]'),
17
- pivot: Vec2Schema.optional().describe('Local pivot point [x, y] (center of rotation/scale)'),
18
- })
19
- .describe('2D local transform relative to parent (world2d surface)');
@@ -1,16 +0,0 @@
1
- import type { Container } from 'pixi.js';
2
- import type { Physics2DRegistry } from './physics2d-registry';
3
- /**
4
- * PhysicsAdapter2D — the world2d analog of the 3D PhysicsAdapter (rapier-physics-adapter).
5
- * Lets the editor coordinate editing of a Rapier-2D-driven entity WITHOUT owning the
6
- * simulation: report transform ownership, then freeze → commit → unfreeze so a drag
7
- * sticks instead of being stomped by the next physics step.
8
- */
9
- export interface PhysicsAdapter2D {
10
- ownerOf(display: Container): 'physics' | 'none';
11
- freeze(display: Container): void;
12
- commit(display: Container, position: [number, number], rotation: number): void;
13
- unfreeze(display: Container): void;
14
- }
15
- export declare function createPhysicsAdapter2D(physics: Physics2DRegistry): PhysicsAdapter2D;
16
- //# sourceMappingURL=system-adapters-2d.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"system-adapters-2d.d.ts","sourceRoot":"","sources":["../../src/world2d/system-adapters-2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IAChD,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/E,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAgCnF"}
@@ -1,37 +0,0 @@
1
- export function createPhysicsAdapter2D(physics) {
2
- // Remember each frozen body's prior type so unfreeze restores it.
3
- const frozen = new WeakMap();
4
- return {
5
- ownerOf(display) {
6
- const refs = physics.get(display);
7
- if (!refs)
8
- return 'none';
9
- return refs.body.isDynamic() || refs.body.isKinematic() ? 'physics' : 'none';
10
- },
11
- freeze(display) {
12
- const refs = physics.get(display);
13
- if (!refs)
14
- return;
15
- frozen.set(display, refs.body.bodyType());
16
- // Kinematic-position bodies hold a pose without being driven by forces.
17
- refs.body.setBodyType(2 /* KinematicPositionBased */, true);
18
- },
19
- commit(display, position, rotation) {
20
- const refs = physics.get(display);
21
- if (!refs)
22
- return;
23
- refs.body.setTranslation({ x: position[0], y: position[1] }, true);
24
- refs.body.setRotation(rotation, true);
25
- },
26
- unfreeze(display) {
27
- const refs = physics.get(display);
28
- if (!refs)
29
- return;
30
- const prior = frozen.get(display);
31
- if (prior !== undefined) {
32
- refs.body.setBodyType(prior, true);
33
- frozen.delete(display);
34
- }
35
- },
36
- };
37
- }
@@ -1,16 +0,0 @@
1
- import type { Physics2DRegistry } from './physics2d-registry';
2
- /**
3
- * Build the single postPhysics transform writer for world2d — the ~5-line 2D
4
- * analog of `createTransformWriter`.
5
- *
6
- * Rapier 2D reports `translation()` as `{x, y}` and `rotation()` as a SCALAR angle
7
- * (radians), so the writeback is simply `display.position.set(x, y)` +
8
- * `display.rotation = angle`. Scale is left untouched (Rapier carries no scale).
9
- *
10
- * Bodies are simulated in world2d pixel space directly (the surface uses a
11
- * y-down, pixel-unit world), so no unit conversion is needed; parented entities
12
- * are kept flat under the world container by the loader, mirroring the 3D writer's
13
- * scene-root fast path.
14
- */
15
- export declare function createTransformWriter2D(physics: Physics2DRegistry): () => void;
16
- //# sourceMappingURL=transform-writer-2d.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform-writer-2d.d.ts","sourceRoot":"","sources":["../../src/world2d/transform-writer-2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,SAC3B,IAAI,CAO1C"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Build the single postPhysics transform writer for world2d — the ~5-line 2D
3
- * analog of `createTransformWriter`.
4
- *
5
- * Rapier 2D reports `translation()` as `{x, y}` and `rotation()` as a SCALAR angle
6
- * (radians), so the writeback is simply `display.position.set(x, y)` +
7
- * `display.rotation = angle`. Scale is left untouched (Rapier carries no scale).
8
- *
9
- * Bodies are simulated in world2d pixel space directly (the surface uses a
10
- * y-down, pixel-unit world), so no unit conversion is needed; parented entities
11
- * are kept flat under the world container by the loader, mirroring the 3D writer's
12
- * scene-root fast path.
13
- */
14
- export function createTransformWriter2D(physics) {
15
- return function writeTransforms2D() {
16
- for (const [display, { body }] of physics.entries()) {
17
- const t = body.translation();
18
- display.position.set(t.x, t.y);
19
- display.rotation = body.rotation();
20
- }
21
- };
22
- }
@@ -1,53 +0,0 @@
1
- import type RAPIER from '@dimforge/rapier2d-compat';
2
- import type { Application, Container } from 'pixi.js';
3
- import type { z } from 'zod';
4
- import type { createSystemRunner } from '../core/system-runner';
5
- import type { SystemPhaseName } from '../core/types';
6
- import type { ComponentManager } from '../ecs/component-manager';
7
- import type { GameComponent } from '../ecs/game-component';
8
- import type { Collision2DSystem } from './collision-2d';
9
- import type { Physics2DRegistry } from './physics2d-registry';
10
- /**
11
- * All world2d subsystems, passed to every world2d `setup(ctx)` and to each
12
- * `GameComponent<'pixijs'>` lifecycle method — the 2D analog of `GameContext`.
13
- *
14
- * Raw libraries (call directly, no wrappers): `app` / `stage` (PixiJS),
15
- * `rapier2dWorld` / `rapier2d` (Rapier 2D). Engine handles bridge them into the
16
- * SAME phase-ordered loop the 3D path uses (`systems` is the very same
17
- * `createSystemRunner`, and `PHASE_ORDER` is shared).
18
- */
19
- export interface World2DContext {
20
- /** The PixiJS application. Its renderer draws `stage`; auto-ticker is disabled. */
21
- app: Application;
22
- /** The world2d scene-graph root (the camera/world container under app.stage). */
23
- stage: Container;
24
- /** The Rapier 2D physics `World`. One shared world per world2d scene. */
25
- rapier2dWorld: RAPIER.World;
26
- /** The Rapier 2D module namespace (RigidBodyDesc, ColliderDesc, Vector2, …). */
27
- rapier2d: typeof RAPIER;
28
- /** `Container ↔ Rapier2D body/collider` registry (+ collider→entity reverse index). */
29
- physics2d: Physics2DRegistry;
30
- /** Rapier 2D collision/trigger event dispatcher; drained each postPhysics. */
31
- collisions2d: Collision2DSystem;
32
- /** Manager for all live GameComponent instances in this pixi world — the
33
- * unified `ComponentManager` (`ecs/component-manager.ts`, constructed with
34
- * `{ kind: 'pixijs' }`). The world2d-silo-only manager this replaced
35
- * (T7.3) is deleted; every 2D component attaches here, exactly like a
36
- * threejs component attaches onto its world's manager. */
37
- components: ComponentManager;
38
- /** The phase-ordered system runner (shared with the 3D path). */
39
- systems: ReturnType<typeof createSystemRunner>;
40
- /** DOM overlay for screen-space React/HUD UI (pointer-events:none by default). */
41
- uiContainer: HTMLDivElement;
42
- }
43
- /** Constructor type for `GameComponent<'pixijs'>` subclasses used in a world2d
44
- * registry (carries static phase/schema) — the 2D-registry analog of
45
- * `GameComponentClass` (`ecs/game-component.ts`), narrowed to the pixijs kind
46
- * so `new Cls()` returns a properly-typed `GameComponent<'pixijs'>` without a cast. */
47
- export type Pixi2DComponentClass = (new () => GameComponent<'pixijs'>) & {
48
- phase?: SystemPhaseName;
49
- schema?: z.ZodObject<z.ZodRawShape>;
50
- };
51
- /** Component registry for world2d — a plain name→class map (the 2D analog). */
52
- export type Component2DRegistry = Record<string, Pixi2DComponentClass>;
53
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/world2d/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,GAAG,EAAE,WAAW,CAAC;IACjB,iFAAiF;IACjF,KAAK,EAAE,SAAS,CAAC;IACjB,yEAAyE;IACzE,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,EAAE,OAAO,MAAM,CAAC;IACxB,uFAAuF;IACvF,SAAS,EAAE,iBAAiB,CAAC;IAC7B,8EAA8E;IAC9E,YAAY,EAAE,iBAAiB,CAAC;IAChC;;;;+DAI2D;IAC3D,UAAU,EAAE,gBAAgB,CAAC;IAC7B,iEAAiE;IACjE,OAAO,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC/C,kFAAkF;IAClF,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED;;;wFAGwF;AACxF,MAAM,MAAM,oBAAoB,GAAG,CAAC,UAAU,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG;IACvE,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,86 +0,0 @@
1
- /**
2
- * Scene-UI render bridge (B1, widened design/24-scene-ui.md D3) — the injection
3
- * seam that keeps the engine React-free.
4
- *
5
- * The engine knows the scene carries a `ui` tree (data), but it does NOT know how to
6
- * render React. An editor-side module registers a renderer here (a thin wrapper over
7
- * the React `mountSceneUI`); the first-party scene adapter calls it at game-time to
8
- * mount the scene's UI into `host.ui` and disposes it on teardown. Fully decoupled:
9
- * the engine treats `sceneUI` and the handle as opaque. The optional third `services`
10
- * argument carries game-sourced data/components/events/projector (D2-D7) — still
11
- * opaque to the engine, still zero React import here.
12
- */
13
-
14
- /**
15
- * Structural match for `@vgai/scene-ui`'s `UIDataSource` — engine stays React-free
16
- * (this interface is duck-typed against the real one, not imported from it).
17
- */
18
- export interface SceneUIDataSourceLike {
19
- get(path: string): unknown;
20
- set(path: string, value: unknown): void;
21
- subscribe(listener: () => void): () => void;
22
- version(): number;
23
- }
24
-
25
- /**
26
- * Game-time services fed into a scene's UI mount (D2's "dynamic" layer). Every
27
- * field is optional: a renderer falls back to its own registration-time registry
28
- * (D2 merge rule) or built-in default when a field is absent. `components`/
29
- * `transforms`/`strings` stay `unknown`-valued here — they're React things the
30
- * scene-ui renderer casts to its real `UIComponentRegistry`/`TransformRegistry`/
31
- * `StringTables`.
32
- */
33
- export interface SceneUIGameServices {
34
- /** Reactive game state the UI binds against (D4's `gameStateDataSource`, or a
35
- * game's own bus). Absent -> the renderer falls back to an empty static store. */
36
- data?: SceneUIDataSourceLike;
37
- /** `kind:"component"` leaf implementations, keyed by the name authored in the scene. */
38
- components?: Record<string, unknown>;
39
- /** Named binding transforms (`$bind.transform`). */
40
- transforms?: Record<string, unknown>;
41
- /** Localized string tables, keyed by locale then textKey. */
42
- strings?: Record<string, Record<string, string>>;
43
- locale?: string;
44
- /** Routes a `kind:"button"` (etc.) `events.onClick` handler id to the game.
45
- * Absent -> a loud console.warn per event (D6 — no magic engine event bus). */
46
- onEvent?: (handlerId: string, payload?: unknown) => void;
47
- /** Projects an entity id to a screen-space point for world-tracked canvases
48
- * (D5). Returns null when the entity is unknown or behind the camera. */
49
- worldProjector?: (entityId: string) => { x: number; y: number } | null;
50
- }
51
-
52
- export interface SceneUIHandle {
53
- dispose(): void;
54
- /** Re-render with new services without a remount (a late `setSceneUIServices`
55
- * call after the initial mount, D7). Optional — a renderer that can't update
56
- * in place may omit it; callers dispose+remount instead. */
57
- update?(services: SceneUIGameServices): void;
58
- }
59
-
60
- /**
61
- * Renderer signature — `sceneUI` is the scene's `ui` array (opaque to the engine).
62
- * `services` is optional so existing 2-arg renderer functions keep working
63
- * unchanged (back-compat, D3/D5 §5).
64
- */
65
- export type SceneUIRenderer = (
66
- container: HTMLElement,
67
- sceneUI: unknown,
68
- services?: SceneUIGameServices,
69
- ) => SceneUIHandle;
70
-
71
- let _renderer: SceneUIRenderer | null = null;
72
-
73
- /** Register the React renderer (called once by the editor/runtime host). */
74
- export function setSceneUIRenderer(renderer: SceneUIRenderer | null): void {
75
- _renderer = renderer;
76
- }
77
-
78
- /** Render a scene's UI into `container` if a renderer is registered, else no-op. */
79
- export function renderSceneUI(
80
- container: HTMLElement,
81
- sceneUI: unknown,
82
- services?: SceneUIGameServices,
83
- ): SceneUIHandle | null {
84
- if (!_renderer || sceneUI == null) return null;
85
- return _renderer(container, sceneUI, services);
86
- }
@@ -1,119 +0,0 @@
1
- /**
2
- * gameStateDataSource (design/24-scene-ui.md D4) — the default scene-UI data
3
- * source: binds a scene's authored UI directly against live `GameComponent`
4
- * instance fields, with zero game-side wiring.
5
- *
6
- * Path grammar: `"<ComponentName>.<field.path>"` — the first segment resolves
7
- * through the SAME `ComponentRegistry` that resolves a scene's `components:`
8
- * entries (name -> class) to `game.queryByComponent(Class)[0]`, the rest walks
9
- * the live instance's own fields (components mutate `this` freely — the
10
- * state-bridge contract, `runtime/state-bridge.ts`). A text node bound to
11
- * `S1Session.wallet.money` just works.
12
- *
13
- * React-free, plain TS — `SceneUIDataSourceLike` is a structural (duck-typed)
14
- * match for `@vgai/scene-ui`'s real `UIDataSource`, so the engine never
15
- * imports the runtime that consumes this.
16
- */
17
- import type { GameComponent, GameComponentClass } from '../ecs/game-component';
18
- import type { ComponentRegistry } from '../scene/component-registry';
19
- import type { Game } from './game';
20
- import type { SceneUIDataSourceLike } from './scene-ui-bridge';
21
-
22
- function splitRoot(path: string): [root: string, rest: string] {
23
- const dot = path.indexOf('.');
24
- return dot === -1 ? [path, ''] : [path.slice(0, dot), path.slice(dot + 1)];
25
- }
26
-
27
- function readRest(obj: unknown, rest: string): unknown {
28
- if (!rest) return obj;
29
- let cur: unknown = obj;
30
- for (const key of rest.split('.')) {
31
- if (cur == null || typeof cur !== 'object') return undefined;
32
- cur = (cur as Record<string, unknown>)[key];
33
- }
34
- return cur;
35
- }
36
-
37
- /**
38
- * Build the default `SceneUIDataSourceLike` over a game's live components.
39
- *
40
- * `subscribe`/`version` are driven by `game.state` (bumps once per completed
41
- * frame, after every world's phases — see `state-bridge.ts`) PLUS a local
42
- * bump on `set()`, so a two-way control's own write echoes immediately
43
- * instead of waiting for the next frame.
44
- */
45
- export function gameStateDataSource(
46
- game: Game,
47
- registry: ComponentRegistry,
48
- ): SceneUIDataSourceLike {
49
- let version = 0;
50
- const listeners = new Set<() => void>();
51
- // Warn-once-per-root-segment (D4/§9 review checklist): a scene author
52
- // typo'ing a component name in a binding should be loud exactly once, not
53
- // on every `get()` (a bound node re-reads its path every render).
54
- const warnedRoots = new Set<string>();
55
-
56
- const notify = (): void => {
57
- for (const listener of listeners) listener();
58
- };
59
-
60
- /** Resolves a root segment to its live component instance, or undefined. */
61
- const resolveInstance = (root: string): GameComponent | undefined => {
62
- const Klass: GameComponentClass | undefined = registry[root];
63
- if (!Klass) {
64
- if (!warnedRoots.has(root)) {
65
- warnedRoots.add(root);
66
- console.warn(
67
- `scene-ui: data binding root "${root}" is not a registered component name — ` +
68
- 'check the binding source against src/scripts/registry.ts.',
69
- );
70
- }
71
- return undefined;
72
- }
73
- // Registered but zero live instances (e.g. not spawned yet this scene) is
74
- // an ordinary, expected transient state — stays undefined, no warning.
75
- return game.queryByComponent(Klass)[0];
76
- };
77
-
78
- // ONE subscription to the frame-versioned state bridge for this data
79
- // source's whole lifetime, fanning out to however many external
80
- // subscribers this scene-UI mount has.
81
- game.state.subscribe(() => {
82
- version++;
83
- notify();
84
- });
85
-
86
- return {
87
- get(path: string): unknown {
88
- const [root, rest] = splitRoot(path);
89
- const inst = resolveInstance(root);
90
- return inst === undefined ? undefined : readRest(inst, rest);
91
- },
92
- set(path: string, value: unknown): void {
93
- const [root, rest] = splitRoot(path);
94
- const inst = resolveInstance(root);
95
- if (inst === undefined || !rest) return;
96
- const keys = rest.split('.');
97
- let cur: Record<string, unknown> = inst as unknown as Record<string, unknown>;
98
- for (let i = 0; i < keys.length - 1; i++) {
99
- const key = keys[i] as string;
100
- const next = cur[key];
101
- if (next == null || typeof next !== 'object') return; // don't invent nested fields on a live instance
102
- cur = next as Record<string, unknown>;
103
- }
104
- cur[keys[keys.length - 1] as string] = value;
105
- // Two-way writes echo immediately, not on the next frame (D4).
106
- version++;
107
- notify();
108
- },
109
- subscribe(listener: () => void): () => void {
110
- listeners.add(listener);
111
- return () => {
112
- listeners.delete(listener);
113
- };
114
- },
115
- version(): number {
116
- return version;
117
- },
118
- };
119
- }