@vgai/engine 0.5.0 → 0.5.2

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 (538) hide show
  1. package/package.json +1 -1
  2. package/schemas/engine-capabilities.json +4 -4
  3. package/schemas/vgai-game.schema.json +2 -2
  4. package/src/adapter/authoring.ts +42 -0
  5. package/src/adapter/index.ts +3 -0
  6. package/src/adapter/ingest/overlay-apply.ts +50 -6
  7. package/src/adapter/ingest/scene-capture.ts +51 -2
  8. package/src/adapter/vgai-scene-game-adapter.ts +24 -0
  9. package/src/manifest/schema.ts +7 -3
  10. package/src/runtime/create-runtime.ts +97 -0
  11. package/src/runtime/game.ts +11 -1
  12. package/src/scene/asset-ref-check.ts +1 -1
  13. package/src/scene/scene-loader.ts +2 -2
  14. package/src/scene/user-data.ts +18 -0
  15. package/src/world3d-react/behavior.tsx +19 -11
  16. package/src/world3d-react/r3f-adapter.tsx +8 -0
  17. package/dist/adapter/adapter-surface.d.ts +0 -30
  18. package/dist/adapter/adapter-surface.d.ts.map +0 -1
  19. package/dist/adapter/adapter-surface.js +0 -18
  20. package/dist/adapter/authoring.d.ts +0 -461
  21. package/dist/adapter/authoring.d.ts.map +0 -1
  22. package/dist/adapter/authoring.js +0 -22
  23. package/dist/adapter/colyseus-networking-adapter.d.ts +0 -43
  24. package/dist/adapter/colyseus-networking-adapter.d.ts.map +0 -1
  25. package/dist/adapter/colyseus-networking-adapter.js +0 -38
  26. package/dist/adapter/first-party-systems.d.ts +0 -38
  27. package/dist/adapter/first-party-systems.d.ts.map +0 -1
  28. package/dist/adapter/first-party-systems.js +0 -77
  29. package/dist/adapter/game-adapter.d.ts +0 -133
  30. package/dist/adapter/game-adapter.d.ts.map +0 -1
  31. package/dist/adapter/game-adapter.js +0 -10
  32. package/dist/adapter/host-context.d.ts +0 -71
  33. package/dist/adapter/host-context.d.ts.map +0 -1
  34. package/dist/adapter/host-context.js +0 -16
  35. package/dist/adapter/index.d.ts +0 -22
  36. package/dist/adapter/index.d.ts.map +0 -1
  37. package/dist/adapter/index.js +0 -15
  38. package/dist/adapter/ingest/game-contract.d.ts +0 -53
  39. package/dist/adapter/ingest/game-contract.d.ts.map +0 -1
  40. package/dist/adapter/ingest/game-contract.js +0 -30
  41. package/dist/adapter/ingest/overlay-applier.d.ts +0 -118
  42. package/dist/adapter/ingest/overlay-applier.d.ts.map +0 -1
  43. package/dist/adapter/ingest/overlay-applier.js +0 -132
  44. package/dist/adapter/ingest/overlay-apply.d.ts +0 -60
  45. package/dist/adapter/ingest/overlay-apply.d.ts.map +0 -1
  46. package/dist/adapter/ingest/overlay-apply.js +0 -101
  47. package/dist/adapter/ingest/overlay-file.d.ts +0 -79
  48. package/dist/adapter/ingest/overlay-file.d.ts.map +0 -1
  49. package/dist/adapter/ingest/overlay-file.js +0 -66
  50. package/dist/adapter/ingest/overlay-report.d.ts +0 -113
  51. package/dist/adapter/ingest/overlay-report.d.ts.map +0 -1
  52. package/dist/adapter/ingest/overlay-report.js +0 -103
  53. package/dist/adapter/ingest/scene-capture.d.ts +0 -97
  54. package/dist/adapter/ingest/scene-capture.d.ts.map +0 -1
  55. package/dist/adapter/ingest/scene-capture.js +0 -248
  56. package/dist/adapter/ingest/upstream-pin.d.ts +0 -47
  57. package/dist/adapter/ingest/upstream-pin.d.ts.map +0 -1
  58. package/dist/adapter/ingest/upstream-pin.js +0 -50
  59. package/dist/adapter/loop-gate-report.d.ts +0 -34
  60. package/dist/adapter/loop-gate-report.d.ts.map +0 -1
  61. package/dist/adapter/loop-gate-report.js +0 -37
  62. package/dist/adapter/rapier-physics-adapter.d.ts +0 -12
  63. package/dist/adapter/rapier-physics-adapter.d.ts.map +0 -1
  64. package/dist/adapter/rapier-physics-adapter.js +0 -46
  65. package/dist/adapter/system-adapter.d.ts +0 -206
  66. package/dist/adapter/system-adapter.d.ts.map +0 -1
  67. package/dist/adapter/system-adapter.js +0 -13
  68. package/dist/adapter/transform.d.ts +0 -18
  69. package/dist/adapter/transform.d.ts.map +0 -1
  70. package/dist/adapter/transform.js +0 -1
  71. package/dist/adapter/vgai-scene-game-adapter.d.ts +0 -108
  72. package/dist/adapter/vgai-scene-game-adapter.d.ts.map +0 -1
  73. package/dist/adapter/vgai-scene-game-adapter.js +0 -762
  74. package/dist/ai/navigation.d.ts +0 -64
  75. package/dist/ai/navigation.d.ts.map +0 -1
  76. package/dist/ai/navigation.js +0 -133
  77. package/dist/animation/anim-graph-types.d.ts +0 -25
  78. package/dist/animation/anim-graph-types.d.ts.map +0 -1
  79. package/dist/animation/anim-graph-types.js +0 -1
  80. package/dist/animation/animation-clock.d.ts +0 -213
  81. package/dist/animation/animation-clock.d.ts.map +0 -1
  82. package/dist/animation/animation-clock.js +0 -301
  83. package/dist/animation/blend-node.d.ts +0 -22
  84. package/dist/animation/blend-node.d.ts.map +0 -1
  85. package/dist/animation/blend-node.js +0 -97
  86. package/dist/animation/camera-ownership.d.ts +0 -250
  87. package/dist/animation/camera-ownership.d.ts.map +0 -1
  88. package/dist/animation/camera-ownership.js +0 -169
  89. package/dist/animation/cinematic-cues.d.ts +0 -200
  90. package/dist/animation/cinematic-cues.d.ts.map +0 -1
  91. package/dist/animation/cinematic-cues.js +0 -213
  92. package/dist/animation/clip-map.d.ts +0 -12
  93. package/dist/animation/clip-map.d.ts.map +0 -1
  94. package/dist/animation/clip-map.js +0 -37
  95. package/dist/animation/gsap-registration.d.ts +0 -119
  96. package/dist/animation/gsap-registration.d.ts.map +0 -1
  97. package/dist/animation/gsap-registration.js +0 -92
  98. package/dist/animation/theatre-clock-binding.d.ts +0 -89
  99. package/dist/animation/theatre-clock-binding.d.ts.map +0 -1
  100. package/dist/animation/theatre-clock-binding.js +0 -29
  101. package/dist/animation/theatre-director.d.ts +0 -242
  102. package/dist/animation/theatre-director.d.ts.map +0 -1
  103. package/dist/animation/theatre-director.js +0 -235
  104. package/dist/animation/theatre-object-binding.d.ts +0 -305
  105. package/dist/animation/theatre-object-binding.d.ts.map +0 -1
  106. package/dist/animation/theatre-object-binding.js +0 -351
  107. package/dist/animation/xstate-animation-binding.d.ts +0 -56
  108. package/dist/animation/xstate-animation-binding.d.ts.map +0 -1
  109. package/dist/animation/xstate-animation-binding.js +0 -331
  110. package/dist/animation/xstate-animation-meta.d.ts +0 -266
  111. package/dist/animation/xstate-animation-meta.d.ts.map +0 -1
  112. package/dist/animation/xstate-animation-meta.js +0 -252
  113. package/dist/assets.d.ts +0 -26
  114. package/dist/assets.d.ts.map +0 -1
  115. package/dist/assets.js +0 -55
  116. package/dist/audio/index.d.ts +0 -4
  117. package/dist/audio/index.d.ts.map +0 -1
  118. package/dist/audio/index.js +0 -24
  119. package/dist/audio/tone-clock-binding.d.ts +0 -75
  120. package/dist/audio/tone-clock-binding.d.ts.map +0 -1
  121. package/dist/audio/tone-clock-binding.js +0 -29
  122. package/dist/audio/tone-context.d.ts +0 -114
  123. package/dist/audio/tone-context.d.ts.map +0 -1
  124. package/dist/audio/tone-context.js +0 -39
  125. package/dist/audio/tone-offline-render.d.ts +0 -90
  126. package/dist/audio/tone-offline-render.d.ts.map +0 -1
  127. package/dist/audio/tone-offline-render.js +0 -56
  128. package/dist/audio/wav-encode.d.ts +0 -38
  129. package/dist/audio/wav-encode.d.ts.map +0 -1
  130. package/dist/audio/wav-encode.js +0 -97
  131. package/dist/character/cloth-sim.d.ts +0 -179
  132. package/dist/character/cloth-sim.d.ts.map +0 -1
  133. package/dist/character/cloth-sim.js +0 -334
  134. package/dist/character/spring-chain.d.ts +0 -135
  135. package/dist/character/spring-chain.d.ts.map +0 -1
  136. package/dist/character/spring-chain.js +0 -165
  137. package/dist/core/game-loop.d.ts +0 -42
  138. package/dist/core/game-loop.d.ts.map +0 -1
  139. package/dist/core/game-loop.js +0 -167
  140. package/dist/core/seeded-random.d.ts +0 -69
  141. package/dist/core/seeded-random.d.ts.map +0 -1
  142. package/dist/core/seeded-random.js +0 -121
  143. package/dist/core/system-runner.d.ts +0 -120
  144. package/dist/core/system-runner.d.ts.map +0 -1
  145. package/dist/core/system-runner.js +0 -297
  146. package/dist/core/types.d.ts +0 -92
  147. package/dist/core/types.d.ts.map +0 -1
  148. package/dist/core/types.js +0 -25
  149. package/dist/data/data-asset.d.ts +0 -101
  150. package/dist/data/data-asset.d.ts.map +0 -1
  151. package/dist/data/data-asset.js +0 -122
  152. package/dist/data/data-check-core.d.ts +0 -110
  153. package/dist/data/data-check-core.d.ts.map +0 -1
  154. package/dist/data/data-check-core.js +0 -178
  155. package/dist/data/data-ref.d.ts +0 -79
  156. package/dist/data/data-ref.d.ts.map +0 -1
  157. package/dist/data/data-ref.js +0 -130
  158. package/dist/data/vite-plugin-data.d.ts +0 -79
  159. package/dist/data/vite-plugin-data.d.ts.map +0 -1
  160. package/dist/data/vite-plugin-data.js +0 -217
  161. package/dist/dev/console-bridge.d.ts +0 -22
  162. package/dist/dev/console-bridge.d.ts.map +0 -1
  163. package/dist/dev/console-bridge.js +0 -71
  164. package/dist/dev/debug-draw.d.ts +0 -24
  165. package/dist/dev/debug-draw.d.ts.map +0 -1
  166. package/dist/dev/debug-draw.js +0 -73
  167. package/dist/dev/logger.d.ts +0 -30
  168. package/dist/dev/logger.d.ts.map +0 -1
  169. package/dist/dev/logger.js +0 -90
  170. package/dist/dev/performance-profiler.d.ts +0 -60
  171. package/dist/dev/performance-profiler.d.ts.map +0 -1
  172. package/dist/dev/performance-profiler.js +0 -181
  173. package/dist/dev/webgl-gpu-timer.d.ts +0 -8
  174. package/dist/dev/webgl-gpu-timer.d.ts.map +0 -1
  175. package/dist/dev/webgl-gpu-timer.js +0 -52
  176. package/dist/ecs/component-manager.d.ts +0 -205
  177. package/dist/ecs/component-manager.d.ts.map +0 -1
  178. package/dist/ecs/component-manager.js +0 -706
  179. package/dist/ecs/game-component.d.ts +0 -146
  180. package/dist/ecs/game-component.d.ts.map +0 -1
  181. package/dist/ecs/game-component.js +0 -141
  182. package/dist/ecs/hmr-swap-report.d.ts +0 -53
  183. package/dist/ecs/hmr-swap-report.d.ts.map +0 -1
  184. package/dist/ecs/hmr-swap-report.js +0 -55
  185. package/dist/humanoid/bake.operation.d.ts +0 -119
  186. package/dist/humanoid/bake.operation.d.ts.map +0 -1
  187. package/dist/humanoid/bake.operation.js +0 -228
  188. package/dist/humanoid/body.d.ts +0 -101
  189. package/dist/humanoid/body.d.ts.map +0 -1
  190. package/dist/humanoid/body.js +0 -530
  191. package/dist/humanoid/clips.d.ts +0 -62
  192. package/dist/humanoid/clips.d.ts.map +0 -1
  193. package/dist/humanoid/clips.js +0 -121
  194. package/dist/humanoid/compose.d.ts +0 -75
  195. package/dist/humanoid/compose.d.ts.map +0 -1
  196. package/dist/humanoid/compose.js +0 -176
  197. package/dist/humanoid/generate.d.ts +0 -92
  198. package/dist/humanoid/generate.d.ts.map +0 -1
  199. package/dist/humanoid/generate.js +0 -124
  200. package/dist/humanoid/index.d.ts +0 -24
  201. package/dist/humanoid/index.d.ts.map +0 -1
  202. package/dist/humanoid/index.js +0 -18
  203. package/dist/humanoid/schema.d.ts +0 -35
  204. package/dist/humanoid/schema.d.ts.map +0 -1
  205. package/dist/humanoid/schema.js +0 -87
  206. package/dist/humanoid/skeleton.d.ts +0 -103
  207. package/dist/humanoid/skeleton.d.ts.map +0 -1
  208. package/dist/humanoid/skeleton.js +0 -289
  209. package/dist/index.d.ts +0 -37
  210. package/dist/index.d.ts.map +0 -1
  211. package/dist/index.js +0 -30
  212. package/dist/input/input-manager.d.ts +0 -945
  213. package/dist/input/input-manager.d.ts.map +0 -1
  214. package/dist/input/input-manager.js +0 -2207
  215. package/dist/input/input-types.d.ts +0 -174
  216. package/dist/input/input-types.d.ts.map +0 -1
  217. package/dist/input/input-types.js +0 -1
  218. package/dist/input/prompt-labels.d.ts +0 -21
  219. package/dist/input/prompt-labels.d.ts.map +0 -1
  220. package/dist/input/prompt-labels.js +0 -121
  221. package/dist/input/rebind-controller.d.ts +0 -59
  222. package/dist/input/rebind-controller.d.ts.map +0 -1
  223. package/dist/input/rebind-controller.js +0 -85
  224. package/dist/input/schema.d.ts +0 -16
  225. package/dist/input/schema.d.ts.map +0 -1
  226. package/dist/input/schema.js +0 -228
  227. package/dist/loader.d.ts +0 -43
  228. package/dist/loader.d.ts.map +0 -1
  229. package/dist/loader.js +0 -59
  230. package/dist/manifest/index.d.ts +0 -5
  231. package/dist/manifest/index.d.ts.map +0 -1
  232. package/dist/manifest/index.js +0 -8
  233. package/dist/manifest/load-file.d.ts +0 -4
  234. package/dist/manifest/load-file.d.ts.map +0 -1
  235. package/dist/manifest/load-file.js +0 -14
  236. package/dist/manifest/load.d.ts +0 -144
  237. package/dist/manifest/load.d.ts.map +0 -1
  238. package/dist/manifest/load.js +0 -273
  239. package/dist/manifest/schema.d.ts +0 -230
  240. package/dist/manifest/schema.d.ts.map +0 -1
  241. package/dist/manifest/schema.js +0 -394
  242. package/dist/physics/collision-system.d.ts +0 -41
  243. package/dist/physics/collision-system.d.ts.map +0 -1
  244. package/dist/physics/collision-system.js +0 -64
  245. package/dist/physics/physics-registry.d.ts +0 -45
  246. package/dist/physics/physics-registry.d.ts.map +0 -1
  247. package/dist/physics/physics-registry.js +0 -65
  248. package/dist/physics/transform-writer.d.ts +0 -16
  249. package/dist/physics/transform-writer.d.ts.map +0 -1
  250. package/dist/physics/transform-writer.js +0 -38
  251. package/dist/physics/trigger-dispatch.d.ts +0 -24
  252. package/dist/physics/trigger-dispatch.d.ts.map +0 -1
  253. package/dist/physics/trigger-dispatch.js +0 -80
  254. package/dist/react/game-state.d.ts +0 -156
  255. package/dist/react/game-state.d.ts.map +0 -1
  256. package/dist/react/game-state.js +0 -222
  257. package/dist/react/root-adapter.d.ts +0 -11
  258. package/dist/react/root-adapter.d.ts.map +0 -1
  259. package/dist/react/root-adapter.js +0 -41
  260. package/dist/react/unmanaged-root-detector.d.ts +0 -12
  261. package/dist/react/unmanaged-root-detector.d.ts.map +0 -1
  262. package/dist/react/unmanaged-root-detector.js +0 -45
  263. package/dist/react/use-data.d.ts +0 -60
  264. package/dist/react/use-data.d.ts.map +0 -1
  265. package/dist/react/use-data.js +0 -101
  266. package/dist/react/use-selection.d.ts +0 -75
  267. package/dist/react/use-selection.d.ts.map +0 -1
  268. package/dist/react/use-selection.js +0 -90
  269. package/dist/render/auto-batcher.d.ts +0 -34
  270. package/dist/render/auto-batcher.d.ts.map +0 -1
  271. package/dist/render/auto-batcher.js +0 -140
  272. package/dist/render/render-batch-system.d.ts +0 -33
  273. package/dist/render/render-batch-system.d.ts.map +0 -1
  274. package/dist/render/render-batch-system.js +0 -230
  275. package/dist/render/render-features.d.ts +0 -47
  276. package/dist/render/render-features.d.ts.map +0 -1
  277. package/dist/render/render-features.js +0 -105
  278. package/dist/render/render-settings.d.ts +0 -36
  279. package/dist/render/render-settings.d.ts.map +0 -1
  280. package/dist/render/render-settings.js +0 -51
  281. package/dist/runtime/create-runtime.d.ts +0 -249
  282. package/dist/runtime/create-runtime.d.ts.map +0 -1
  283. package/dist/runtime/create-runtime.js +0 -641
  284. package/dist/runtime/debug-bridge.d.ts +0 -257
  285. package/dist/runtime/debug-bridge.d.ts.map +0 -1
  286. package/dist/runtime/debug-bridge.js +0 -224
  287. package/dist/runtime/debug-registry.d.ts +0 -288
  288. package/dist/runtime/debug-registry.d.ts.map +0 -1
  289. package/dist/runtime/debug-registry.js +0 -513
  290. package/dist/runtime/frame-selector-cache.d.ts +0 -41
  291. package/dist/runtime/frame-selector-cache.d.ts.map +0 -1
  292. package/dist/runtime/frame-selector-cache.js +0 -65
  293. package/dist/runtime/game.d.ts +0 -496
  294. package/dist/runtime/game.d.ts.map +0 -1
  295. package/dist/runtime/game.js +0 -741
  296. package/dist/runtime/gameplay-rng-trap.d.ts +0 -48
  297. package/dist/runtime/gameplay-rng-trap.d.ts.map +0 -1
  298. package/dist/runtime/gameplay-rng-trap.js +0 -96
  299. package/dist/runtime/input-router.d.ts +0 -78
  300. package/dist/runtime/input-router.d.ts.map +0 -1
  301. package/dist/runtime/input-router.js +0 -171
  302. package/dist/runtime/mount-game.d.ts +0 -129
  303. package/dist/runtime/mount-game.d.ts.map +0 -1
  304. package/dist/runtime/mount-game.js +0 -152
  305. package/dist/runtime/mount-manifest.d.ts +0 -173
  306. package/dist/runtime/mount-manifest.d.ts.map +0 -1
  307. package/dist/runtime/mount-manifest.js +0 -297
  308. package/dist/runtime/render-audio-control.d.ts +0 -110
  309. package/dist/runtime/render-audio-control.d.ts.map +0 -1
  310. package/dist/runtime/render-audio-control.js +0 -111
  311. package/dist/runtime/render-control.d.ts +0 -291
  312. package/dist/runtime/render-control.d.ts.map +0 -1
  313. package/dist/runtime/render-control.js +0 -264
  314. package/dist/runtime/render-seed.d.ts +0 -57
  315. package/dist/runtime/render-seed.d.ts.map +0 -1
  316. package/dist/runtime/render-seed.js +0 -74
  317. package/dist/runtime/state-bridge.d.ts +0 -61
  318. package/dist/runtime/state-bridge.d.ts.map +0 -1
  319. package/dist/runtime/state-bridge.js +0 -63
  320. package/dist/runtime/types.d.ts +0 -253
  321. package/dist/runtime/types.d.ts.map +0 -1
  322. package/dist/runtime/types.js +0 -1
  323. package/dist/scene/asset-loaders.d.ts +0 -79
  324. package/dist/scene/asset-loaders.d.ts.map +0 -1
  325. package/dist/scene/asset-loaders.js +0 -141
  326. package/dist/scene/asset-paths.d.ts +0 -11
  327. package/dist/scene/asset-paths.d.ts.map +0 -1
  328. package/dist/scene/asset-paths.js +0 -108
  329. package/dist/scene/asset-ref-check.d.ts +0 -88
  330. package/dist/scene/asset-ref-check.d.ts.map +0 -1
  331. package/dist/scene/asset-ref-check.js +0 -214
  332. package/dist/scene/asset-registry.d.ts +0 -38
  333. package/dist/scene/asset-registry.d.ts.map +0 -1
  334. package/dist/scene/asset-registry.js +0 -66
  335. package/dist/scene/collider-dimensions.d.ts +0 -63
  336. package/dist/scene/collider-dimensions.d.ts.map +0 -1
  337. package/dist/scene/collider-dimensions.js +0 -98
  338. package/dist/scene/component-registry.d.ts +0 -22
  339. package/dist/scene/component-registry.d.ts.map +0 -1
  340. package/dist/scene/component-registry.js +0 -37
  341. package/dist/scene/defaults.d.ts +0 -252
  342. package/dist/scene/defaults.d.ts.map +0 -1
  343. package/dist/scene/defaults.js +0 -151
  344. package/dist/scene/geometries/index.d.ts +0 -8
  345. package/dist/scene/geometries/index.d.ts.map +0 -1
  346. package/dist/scene/geometries/index.js +0 -7
  347. package/dist/scene/geometries/terrain.d.ts +0 -2
  348. package/dist/scene/geometries/terrain.d.ts.map +0 -1
  349. package/dist/scene/geometries/terrain.js +0 -37
  350. package/dist/scene/geometry-registry.d.ts +0 -24
  351. package/dist/scene/geometry-registry.d.ts.map +0 -1
  352. package/dist/scene/geometry-registry.js +0 -20
  353. package/dist/scene/instance-registry.d.ts +0 -36
  354. package/dist/scene/instance-registry.d.ts.map +0 -1
  355. package/dist/scene/instance-registry.js +0 -55
  356. package/dist/scene/instancers/grid.d.ts +0 -2
  357. package/dist/scene/instancers/grid.d.ts.map +0 -1
  358. package/dist/scene/instancers/grid.js +0 -36
  359. package/dist/scene/instancers/index.d.ts +0 -8
  360. package/dist/scene/instancers/index.d.ts.map +0 -1
  361. package/dist/scene/instancers/index.js +0 -7
  362. package/dist/scene/light-camera-factory.d.ts +0 -23
  363. package/dist/scene/light-camera-factory.d.ts.map +0 -1
  364. package/dist/scene/light-camera-factory.js +0 -68
  365. package/dist/scene/material-factory.d.ts +0 -17
  366. package/dist/scene/material-factory.d.ts.map +0 -1
  367. package/dist/scene/material-factory.js +0 -197
  368. package/dist/scene/material-registry.d.ts +0 -40
  369. package/dist/scene/material-registry.d.ts.map +0 -1
  370. package/dist/scene/material-registry.js +0 -44
  371. package/dist/scene/materials/index.d.ts +0 -8
  372. package/dist/scene/materials/index.d.ts.map +0 -1
  373. package/dist/scene/materials/index.js +0 -7
  374. package/dist/scene/materials/water.d.ts +0 -2
  375. package/dist/scene/materials/water.d.ts.map +0 -1
  376. package/dist/scene/materials/water.js +0 -54
  377. package/dist/scene/parse.d.ts +0 -23
  378. package/dist/scene/parse.d.ts.map +0 -1
  379. package/dist/scene/parse.js +0 -179
  380. package/dist/scene/particles-factory.d.ts +0 -33
  381. package/dist/scene/particles-factory.d.ts.map +0 -1
  382. package/dist/scene/particles-factory.js +0 -282
  383. package/dist/scene/scene-apply.d.ts +0 -109
  384. package/dist/scene/scene-apply.d.ts.map +0 -1
  385. package/dist/scene/scene-apply.js +0 -370
  386. package/dist/scene/scene-diff-schema.d.ts +0 -285
  387. package/dist/scene/scene-diff-schema.d.ts.map +0 -1
  388. package/dist/scene/scene-diff-schema.js +0 -92
  389. package/dist/scene/scene-diff-types.d.ts +0 -40
  390. package/dist/scene/scene-diff-types.d.ts.map +0 -1
  391. package/dist/scene/scene-diff-types.js +0 -14
  392. package/dist/scene/scene-loader.d.ts +0 -167
  393. package/dist/scene/scene-loader.d.ts.map +0 -1
  394. package/dist/scene/scene-loader.js +0 -1211
  395. package/dist/scene/scene-query.d.ts +0 -11
  396. package/dist/scene/scene-query.d.ts.map +0 -1
  397. package/dist/scene/scene-query.js +0 -63
  398. package/dist/scene/scene-types.d.ts +0 -10
  399. package/dist/scene/scene-types.d.ts.map +0 -1
  400. package/dist/scene/scene-types.js +0 -8
  401. package/dist/scene/scene-version.d.ts +0 -26
  402. package/dist/scene/scene-version.d.ts.map +0 -1
  403. package/dist/scene/scene-version.js +0 -34
  404. package/dist/scene/schema/animation.d.ts +0 -8
  405. package/dist/scene/schema/animation.d.ts.map +0 -1
  406. package/dist/scene/schema/animation.js +0 -42
  407. package/dist/scene/schema/audio.d.ts +0 -13
  408. package/dist/scene/schema/audio.d.ts.map +0 -1
  409. package/dist/scene/schema/audio.js +0 -22
  410. package/dist/scene/schema/camera.d.ts +0 -28
  411. package/dist/scene/schema/camera.d.ts.map +0 -1
  412. package/dist/scene/schema/camera.js +0 -17
  413. package/dist/scene/schema/collider.d.ts +0 -40
  414. package/dist/scene/schema/collider.d.ts.map +0 -1
  415. package/dist/scene/schema/collider.js +0 -55
  416. package/dist/scene/schema/entity-ref.d.ts +0 -31
  417. package/dist/scene/schema/entity-ref.d.ts.map +0 -1
  418. package/dist/scene/schema/entity-ref.js +0 -61
  419. package/dist/scene/schema/entity.d.ts +0 -1036
  420. package/dist/scene/schema/entity.d.ts.map +0 -1
  421. package/dist/scene/schema/entity.js +0 -153
  422. package/dist/scene/schema/environment.d.ts +0 -425
  423. package/dist/scene/schema/environment.d.ts.map +0 -1
  424. package/dist/scene/schema/environment.js +0 -357
  425. package/dist/scene/schema/index.d.ts +0 -37
  426. package/dist/scene/schema/index.d.ts.map +0 -1
  427. package/dist/scene/schema/index.js +0 -19
  428. package/dist/scene/schema/instances.d.ts +0 -14
  429. package/dist/scene/schema/instances.d.ts.map +0 -1
  430. package/dist/scene/schema/instances.js +0 -28
  431. package/dist/scene/schema/joint.d.ts +0 -23
  432. package/dist/scene/schema/joint.d.ts.map +0 -1
  433. package/dist/scene/schema/joint.js +0 -23
  434. package/dist/scene/schema/light.d.ts +0 -38
  435. package/dist/scene/schema/light.d.ts.map +0 -1
  436. package/dist/scene/schema/light.js +0 -26
  437. package/dist/scene/schema/material.d.ts +0 -199
  438. package/dist/scene/schema/material.d.ts.map +0 -1
  439. package/dist/scene/schema/material.js +0 -103
  440. package/dist/scene/schema/mesh.d.ts +0 -48
  441. package/dist/scene/schema/mesh.d.ts.map +0 -1
  442. package/dist/scene/schema/mesh.js +0 -82
  443. package/dist/scene/schema/particles.d.ts +0 -2178
  444. package/dist/scene/schema/particles.d.ts.map +0 -1
  445. package/dist/scene/schema/particles.js +0 -321
  446. package/dist/scene/schema/physics.d.ts +0 -56
  447. package/dist/scene/schema/physics.d.ts.map +0 -1
  448. package/dist/scene/schema/physics.js +0 -37
  449. package/dist/scene/schema/scene-file.d.ts +0 -303
  450. package/dist/scene/schema/scene-file.d.ts.map +0 -1
  451. package/dist/scene/schema/scene-file.js +0 -256
  452. package/dist/scene/schema/shadow.d.ts +0 -28
  453. package/dist/scene/schema/shadow.d.ts.map +0 -1
  454. package/dist/scene/schema/shadow.js +0 -20
  455. package/dist/scene/schema/spline.d.ts +0 -25
  456. package/dist/scene/schema/spline.d.ts.map +0 -1
  457. package/dist/scene/schema/spline.js +0 -15
  458. package/dist/scene/schema/tuples.d.ts +0 -12
  459. package/dist/scene/schema/tuples.d.ts.map +0 -1
  460. package/dist/scene/schema/tuples.js +0 -14
  461. package/dist/scene/user-data.d.ts +0 -185
  462. package/dist/scene/user-data.d.ts.map +0 -1
  463. package/dist/scene/user-data.js +0 -144
  464. package/dist/setup/setup-audio.d.ts +0 -20
  465. package/dist/setup/setup-audio.d.ts.map +0 -1
  466. package/dist/setup/setup-audio.js +0 -41
  467. package/dist/setup/setup-particles.d.ts +0 -17
  468. package/dist/setup/setup-particles.d.ts.map +0 -1
  469. package/dist/setup/setup-particles.js +0 -16
  470. package/dist/setup/setup-physics.d.ts +0 -25
  471. package/dist/setup/setup-physics.d.ts.map +0 -1
  472. package/dist/setup/setup-physics.js +0 -51
  473. package/dist/setup/setup-renderer.d.ts +0 -69
  474. package/dist/setup/setup-renderer.d.ts.map +0 -1
  475. package/dist/setup/setup-renderer.js +0 -363
  476. package/dist/tools/define-tool.d.ts +0 -130
  477. package/dist/tools/define-tool.d.ts.map +0 -1
  478. package/dist/tools/define-tool.js +0 -96
  479. package/dist/world2d/authoring-2d.d.ts +0 -80
  480. package/dist/world2d/authoring-2d.d.ts.map +0 -1
  481. package/dist/world2d/authoring-2d.js +0 -195
  482. package/dist/world2d/capture-to-scene2d.d.ts +0 -5
  483. package/dist/world2d/capture-to-scene2d.d.ts.map +0 -1
  484. package/dist/world2d/capture-to-scene2d.js +0 -49
  485. package/dist/world2d/collision-2d.d.ts +0 -52
  486. package/dist/world2d/collision-2d.d.ts.map +0 -1
  487. package/dist/world2d/collision-2d.js +0 -70
  488. package/dist/world2d/components-2d.d.ts +0 -47
  489. package/dist/world2d/components-2d.d.ts.map +0 -1
  490. package/dist/world2d/components-2d.js +0 -77
  491. package/dist/world2d/index.d.ts +0 -34
  492. package/dist/world2d/index.d.ts.map +0 -1
  493. package/dist/world2d/index.js +0 -32
  494. package/dist/world2d/ingest-iframe-2d.d.ts +0 -82
  495. package/dist/world2d/ingest-iframe-2d.d.ts.map +0 -1
  496. package/dist/world2d/ingest-iframe-2d.js +0 -166
  497. package/dist/world2d/ingest2d.d.ts +0 -97
  498. package/dist/world2d/ingest2d.d.ts.map +0 -1
  499. package/dist/world2d/ingest2d.js +0 -40
  500. package/dist/world2d/physics2d-registry.d.ts +0 -24
  501. package/dist/world2d/physics2d-registry.d.ts.map +0 -1
  502. package/dist/world2d/physics2d-registry.js +0 -38
  503. package/dist/world2d/pixi-game-adapter.d.ts +0 -107
  504. package/dist/world2d/pixi-game-adapter.d.ts.map +0 -1
  505. package/dist/world2d/pixi-game-adapter.js +0 -210
  506. package/dist/world2d/pixi-surface.d.ts +0 -39
  507. package/dist/world2d/pixi-surface.d.ts.map +0 -1
  508. package/dist/world2d/pixi-surface.js +0 -47
  509. package/dist/world2d/scene-capture-2d.d.ts +0 -43
  510. package/dist/world2d/scene-capture-2d.d.ts.map +0 -1
  511. package/dist/world2d/scene-capture-2d.js +0 -92
  512. package/dist/world2d/scene2d-loader.d.ts +0 -27
  513. package/dist/world2d/scene2d-loader.d.ts.map +0 -1
  514. package/dist/world2d/scene2d-loader.js +0 -275
  515. package/dist/world2d/schema/entity2d.d.ts +0 -102
  516. package/dist/world2d/schema/entity2d.d.ts.map +0 -1
  517. package/dist/world2d/schema/entity2d.js +0 -119
  518. package/dist/world2d/schema/physics2d.d.ts +0 -46
  519. package/dist/world2d/schema/physics2d.d.ts.map +0 -1
  520. package/dist/world2d/schema/physics2d.js +0 -45
  521. package/dist/world2d/schema/sprite.d.ts +0 -42
  522. package/dist/world2d/schema/sprite.d.ts.map +0 -1
  523. package/dist/world2d/schema/sprite.js +0 -63
  524. package/dist/world2d/schema/tilemap.d.ts +0 -15
  525. package/dist/world2d/schema/tilemap.d.ts.map +0 -1
  526. package/dist/world2d/schema/tilemap.js +0 -19
  527. package/dist/world2d/schema/tuples2d.d.ts +0 -20
  528. package/dist/world2d/schema/tuples2d.d.ts.map +0 -1
  529. package/dist/world2d/schema/tuples2d.js +0 -19
  530. package/dist/world2d/system-adapters-2d.d.ts +0 -16
  531. package/dist/world2d/system-adapters-2d.d.ts.map +0 -1
  532. package/dist/world2d/system-adapters-2d.js +0 -37
  533. package/dist/world2d/transform-writer-2d.d.ts +0 -16
  534. package/dist/world2d/transform-writer-2d.d.ts.map +0 -1
  535. package/dist/world2d/transform-writer-2d.js +0 -22
  536. package/dist/world2d/types.d.ts +0 -59
  537. package/dist/world2d/types.d.ts.map +0 -1
  538. package/dist/world2d/types.js +0 -1
@@ -1,275 +0,0 @@
1
- import { CompositeTilemap } from '@pixi/tilemap';
2
- import { AnimatedSprite, Assets, BlurFilter, ColorMatrixFilter, Container, Sprite, Text, Texture, } from 'pixi.js';
3
- import { SceneParseError } from '../scene/parse';
4
- import { Scene2DSchema } from './schema/entity2d';
5
- const BLEND = {
6
- normal: 'normal',
7
- add: 'add',
8
- multiply: 'multiply',
9
- screen: 'screen',
10
- };
11
- function hexToNum(hex, fallback) {
12
- if (!hex)
13
- return fallback;
14
- return Number.parseInt(hex.replace('#', ''), 16);
15
- }
16
- /** Generate N asset-light frame textures (a moving accent dot) for an AnimatedSprite. */
17
- function generateFrames(count, w, h, tint) {
18
- const frames = [];
19
- for (let i = 0; i < count; i++) {
20
- const canvas = document.createElement('canvas');
21
- canvas.width = w;
22
- canvas.height = h;
23
- const g = canvas.getContext('2d');
24
- g.fillStyle = tint;
25
- g.fillRect(0, 0, w, h);
26
- g.fillStyle = '#10101a';
27
- const t = (i / count) * Math.PI * 2;
28
- g.beginPath();
29
- g.arc(w / 2 + Math.cos(t) * w * 0.25, h / 2 + Math.sin(t) * h * 0.25, Math.min(w, h) * 0.18, 0, Math.PI * 2);
30
- g.fill();
31
- frames.push(Texture.from(canvas));
32
- }
33
- return frames;
34
- }
35
- function applyFilter(display, filter) {
36
- if (!filter || filter === 'none')
37
- return;
38
- if (filter === 'blur')
39
- display.filters = [new BlurFilter({ strength: 6 })];
40
- else if (filter === 'desaturate') {
41
- const cm = new ColorMatrixFilter();
42
- cm.desaturate();
43
- display.filters = [cm];
44
- }
45
- }
46
- /** Instantiate a PIXI.Sprite / AnimatedSprite from authored `sprite` data. */
47
- async function createSprite(data) {
48
- let display;
49
- if (data.animationFrames && data.animationFrames > 1) {
50
- const frames = generateFrames(data.animationFrames, data.width ?? 40, data.height ?? 40, data.tint ?? '#ffffff');
51
- const anim = new AnimatedSprite(frames);
52
- anim.animationSpeed = (data.fps ?? 8) / 60;
53
- anim.play();
54
- display = anim;
55
- }
56
- else {
57
- let texture = Texture.WHITE;
58
- if (data.texture) {
59
- const loaded = await Assets.load(data.texture);
60
- texture =
61
- data.frame && loaded?.textures?.[data.frame]
62
- ? loaded.textures[data.frame]
63
- : loaded;
64
- }
65
- display = new Sprite(texture);
66
- }
67
- const [ax, ay] = data.anchor ?? [0.5, 0.5];
68
- display.anchor.set(ax, ay);
69
- if (data.width !== undefined)
70
- display.width = data.width;
71
- if (data.height !== undefined)
72
- display.height = data.height;
73
- if (!data.animationFrames)
74
- display.tint = hexToNum(data.tint, 0xffffff);
75
- if (data.alpha !== undefined)
76
- display.alpha = data.alpha;
77
- if (data.blendMode)
78
- display.blendMode = BLEND[data.blendMode] ?? 'normal';
79
- if (data.interactive) {
80
- display.eventMode = 'static';
81
- display.cursor = 'pointer';
82
- }
83
- applyFilter(display, data.filter);
84
- return display;
85
- }
86
- /** Instantiate a @pixi/tilemap CompositeTilemap from authored `tilemap` data. */
87
- function createTilemap(data) {
88
- // Generate one tile texture per palette color (asset-light).
89
- const textures = data.palette.map((color) => {
90
- const c = document.createElement('canvas');
91
- c.width = data.tileSize;
92
- c.height = data.tileSize;
93
- const g = c.getContext('2d');
94
- g.fillStyle = color;
95
- g.fillRect(0, 0, data.tileSize, data.tileSize);
96
- g.strokeStyle = 'rgba(0,0,0,0.18)';
97
- g.strokeRect(0.5, 0.5, data.tileSize - 1, data.tileSize - 1);
98
- return Texture.from(c);
99
- });
100
- const tilemap = new CompositeTilemap();
101
- for (let y = 0; y < data.tiles.length; y++) {
102
- const row = data.tiles[y];
103
- for (let x = 0; x < row.length; x++) {
104
- const tex = textures[row[x]];
105
- if (tex)
106
- tilemap.tile(tex, x * data.tileSize, y * data.tileSize);
107
- }
108
- }
109
- return tilemap;
110
- }
111
- /** Instantiate a PIXI.Text from authored `text` data (world-space label). */
112
- function createText(data) {
113
- const text = new Text({
114
- text: data.text,
115
- style: { fontSize: data.fontSize ?? 24, fill: data.fill ?? '#ffffff' },
116
- });
117
- const [ax, ay] = data.anchor ?? [0.5, 0.5];
118
- text.anchor.set(ax, ay);
119
- return text;
120
- }
121
- /** Map the bodyType enum to a Rapier 2D RigidBodyDesc. */
122
- function bodyDesc(rapier2d, type) {
123
- switch (type) {
124
- case 'fixed':
125
- return rapier2d.RigidBodyDesc.fixed();
126
- case 'kinematicVelocity':
127
- return rapier2d.RigidBodyDesc.kinematicVelocityBased();
128
- case 'kinematicPosition':
129
- return rapier2d.RigidBodyDesc.kinematicPositionBased();
130
- default:
131
- return rapier2d.RigidBodyDesc.dynamic();
132
- }
133
- }
134
- /** Create the Rapier 2D body + collider for an entity, register it, return the body. */
135
- // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: one cohesive physics2d-descriptor builder; each branch maps an optional authored field to a Rapier setter
136
- function createPhysics2D(ctx, entity, display) {
137
- const p = entity.physics2d;
138
- if (!p)
139
- return;
140
- const { rapier2d, rapier2dWorld, physics2d } = ctx;
141
- const pos = entity.transform2d?.position ?? [0, 0];
142
- const rbDesc = bodyDesc(rapier2d, p.bodyType)
143
- .setTranslation(pos[0], pos[1])
144
- .setRotation(entity.transform2d?.rotation ?? 0);
145
- if (p.linearDamping !== undefined)
146
- rbDesc.setLinearDamping(p.linearDamping);
147
- if (p.gravityScale !== undefined)
148
- rbDesc.setGravityScale(p.gravityScale);
149
- if (p.lockRotations)
150
- rbDesc.lockRotations();
151
- const body = rapier2dWorld.createRigidBody(rbDesc);
152
- let colDesc;
153
- const c = p.collider;
154
- if (c.shape === 'cuboid')
155
- colDesc = rapier2d.ColliderDesc.cuboid(c.halfExtents[0], c.halfExtents[1]);
156
- else if (c.shape === 'ball')
157
- colDesc = rapier2d.ColliderDesc.ball(c.radius);
158
- else
159
- colDesc = rapier2d.ColliderDesc.capsule(c.halfHeight, c.radius);
160
- if (p.density !== undefined)
161
- colDesc.setDensity(p.density);
162
- if (p.friction !== undefined)
163
- colDesc.setFriction(p.friction);
164
- if (p.restitution !== undefined)
165
- colDesc.setRestitution(p.restitution);
166
- if (p.sensor) {
167
- colDesc.setSensor(true);
168
- colDesc.setActiveCollisionTypes(rapier2d.ActiveCollisionTypes.ALL);
169
- colDesc.setActiveEvents(rapier2d.ActiveEvents.COLLISION_EVENTS);
170
- }
171
- else {
172
- colDesc.setActiveEvents(rapier2d.ActiveEvents.COLLISION_EVENTS);
173
- }
174
- const collider = rapier2dWorld.createCollider(colDesc, body);
175
- physics2d.add(display, body, collider);
176
- }
177
- /** Hydrate the `components` field — schema.parse + Object.assign + attach (2D analog of applyComponents).
178
- * `manager` is the unified `ComponentManager` (`ecs/component-manager.ts`), constructed
179
- * for kind `'pixijs'` — the world2d silo manager this replaced (T7.3) is deleted. */
180
- function applyComponents2D(registry, display, components, manager) {
181
- if (!components)
182
- return;
183
- for (const [name, data] of Object.entries(components)) {
184
- const Cls = registry[name];
185
- if (!Cls)
186
- throw new Error(`Unknown world2d component: "${name}"`);
187
- const parsed = Cls.schema ? Cls.schema.parse(data ?? {}) : (data ?? {});
188
- const instance = new Cls();
189
- Object.assign(instance, parsed);
190
- // T5.4: record the registry name + raw authored data — same reasoning as
191
- // the 3D `applyComponents` (`scene/component-registry.ts`).
192
- manager.attach(display, instance, { key: name, props: data ?? {} });
193
- }
194
- }
195
- /** Apply a 2D transform to a display object. */
196
- function applyTransform2D(display, entity) {
197
- const t = entity.transform2d;
198
- if (t?.position)
199
- display.position.set(t.position[0], t.position[1]);
200
- if (t?.rotation !== undefined)
201
- display.rotation = t.rotation;
202
- if (t?.scale)
203
- display.scale.set(t.scale[0], t.scale[1]);
204
- const pivot = t?.pivot ?? entity.pivot;
205
- if (pivot)
206
- display.pivot.set(pivot[0], pivot[1]);
207
- if (entity.visible === false)
208
- display.visible = false;
209
- }
210
- let _autoId = 0;
211
- /**
212
- * Load a world2d scene from authored data — the 2D analog of `loadSceneFromData`.
213
- * Three passes: (1) spawn all entities (recursing into children), building an
214
- * id→display map and creating Rapier 2D bodies; (2) [no joints in 2D yet];
215
- * (3) `componentManager.initAll()` once everything exists.
216
- *
217
- * Re-validates `data` even though the fetch path (`fetchScene2DFile` in
218
- * `packages/editor/src/adapter-resolver.ts`) already validates before calling
219
- * in — not every caller goes through that path (test-constructed
220
- * `PixiSceneConfig.sceneData` literals reach here unvalidated), so a malformed
221
- * payload still throws a `SceneParseError` naming the file, not a raw
222
- * `ZodError` (T4.6 convention, closing §7.1-14). `sourceName` is optional
223
- * because not every caller knows the originating file path; callers that do
224
- * (or gain the ability to) should thread it through for a better message.
225
- */
226
- export async function loadScene2DFromData(data, ctx, registry, sourceName) {
227
- const result = Scene2DSchema.safeParse(data);
228
- if (!result.success)
229
- throw new SceneParseError(result.error.issues, sourceName);
230
- const scene = result.data;
231
- const byId = new Map();
232
- const roots = [];
233
- async function spawn(entity, parent) {
234
- let display;
235
- if (entity.sprite)
236
- display = await createSprite(entity.sprite);
237
- else if (entity.text)
238
- display = createText(entity.text);
239
- else if (entity.tilemap)
240
- display = createTilemap(entity.tilemap);
241
- else
242
- display = new Container();
243
- display.label = entity.name;
244
- const id = entity.id ?? `e2d_${_autoId++}`;
245
- display.__entityId = id;
246
- byId.set(id, display);
247
- applyTransform2D(display, entity);
248
- parent.addChild(display);
249
- // Physics bodies live in world space (flat under the world container); the
250
- // transform-writer drives their pose. Components attach to the display.
251
- createPhysics2D(ctx, entity, display);
252
- applyComponents2D(registry, display, entity.components, ctx.components);
253
- if (entity.children) {
254
- for (const child of entity.children)
255
- await spawn(child, display);
256
- }
257
- return display;
258
- }
259
- for (const entity of scene.entities) {
260
- roots.push(await spawn(entity, ctx.stage));
261
- }
262
- await ctx.components.initAll();
263
- return {
264
- roots,
265
- byId,
266
- dispose() {
267
- for (const root of roots) {
268
- root.removeFromParent();
269
- root.destroy({ children: true });
270
- }
271
- roots.length = 0;
272
- byId.clear();
273
- },
274
- };
275
- }
@@ -1,102 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * A world2d entity — the 2D analog of the 3D `SceneEntity`. The SAME engine model
4
- * (named components validated against a registry, a tree of children) reused; the
5
- * sections (`sprite`/`text`/`physics2d`/`transform2d`) name engine-owned data, NOT
6
- * `PIXI.Sprite`. `surface` defaults to 'world2d' for entities in a Scene2D file.
7
- */
8
- declare const Entity2DBase: z.ZodObject<{
9
- id: z.ZodOptional<z.ZodString>;
10
- name: z.ZodString;
11
- surface: z.ZodOptional<z.ZodEnum<{
12
- world2d: "world2d";
13
- world3d: "world3d";
14
- }>>;
15
- visible: z.ZodOptional<z.ZodBoolean>;
16
- locked: z.ZodOptional<z.ZodBoolean>;
17
- tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
- transform2d: z.ZodOptional<z.ZodObject<{
19
- position: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
20
- rotation: z.ZodOptional<z.ZodNumber>;
21
- scale: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
22
- pivot: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
23
- }, z.core.$strip>>;
24
- pivot: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
25
- sprite: z.ZodOptional<z.ZodObject<{
26
- texture: z.ZodOptional<z.ZodString>;
27
- frame: z.ZodOptional<z.ZodString>;
28
- anchor: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
29
- tint: z.ZodOptional<z.ZodString>;
30
- alpha: z.ZodOptional<z.ZodNumber>;
31
- width: z.ZodOptional<z.ZodNumber>;
32
- height: z.ZodOptional<z.ZodNumber>;
33
- blendMode: z.ZodOptional<z.ZodEnum<{
34
- normal: "normal";
35
- add: "add";
36
- multiply: "multiply";
37
- screen: "screen";
38
- }>>;
39
- interactive: z.ZodOptional<z.ZodBoolean>;
40
- filter: z.ZodOptional<z.ZodEnum<{
41
- none: "none";
42
- blur: "blur";
43
- desaturate: "desaturate";
44
- }>>;
45
- animationFrames: z.ZodOptional<z.ZodNumber>;
46
- fps: z.ZodOptional<z.ZodNumber>;
47
- }, z.core.$strip>>;
48
- text: z.ZodOptional<z.ZodObject<{
49
- text: z.ZodString;
50
- fontSize: z.ZodOptional<z.ZodNumber>;
51
- fill: z.ZodOptional<z.ZodString>;
52
- anchor: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
53
- }, z.core.$strip>>;
54
- tilemap: z.ZodOptional<z.ZodObject<{
55
- tileSize: z.ZodNumber;
56
- palette: z.ZodArray<z.ZodString>;
57
- tiles: z.ZodArray<z.ZodArray<z.ZodNumber>>;
58
- }, z.core.$strip>>;
59
- physics2d: z.ZodOptional<z.ZodObject<{
60
- bodyType: z.ZodEnum<{
61
- fixed: "fixed";
62
- dynamic: "dynamic";
63
- kinematicVelocity: "kinematicVelocity";
64
- kinematicPosition: "kinematicPosition";
65
- }>;
66
- collider: z.ZodDiscriminatedUnion<[z.ZodObject<{
67
- shape: z.ZodLiteral<"cuboid">;
68
- halfExtents: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
69
- }, z.core.$strip>, z.ZodObject<{
70
- shape: z.ZodLiteral<"ball">;
71
- radius: z.ZodNumber;
72
- }, z.core.$strip>, z.ZodObject<{
73
- shape: z.ZodLiteral<"capsule">;
74
- halfHeight: z.ZodNumber;
75
- radius: z.ZodNumber;
76
- }, z.core.$strip>], "shape">;
77
- sensor: z.ZodOptional<z.ZodBoolean>;
78
- density: z.ZodOptional<z.ZodNumber>;
79
- friction: z.ZodOptional<z.ZodNumber>;
80
- restitution: z.ZodOptional<z.ZodNumber>;
81
- linearDamping: z.ZodOptional<z.ZodNumber>;
82
- gravityScale: z.ZodOptional<z.ZodNumber>;
83
- lockRotations: z.ZodOptional<z.ZodBoolean>;
84
- }, z.core.$strip>>;
85
- components: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodNumber, z.ZodString, z.ZodBoolean]>, z.ZodArray<z.ZodNumber>, z.ZodArray<z.ZodString>, z.ZodArray<z.ZodBoolean>]>>>>;
86
- }, z.core.$strip>;
87
- export type Entity2D = z.infer<typeof Entity2DBase> & {
88
- children?: Entity2D[] | undefined;
89
- };
90
- export declare const Entity2DSchema: z.ZodType<Entity2D>;
91
- /** A world2d scene file — the 2D analog of `.vscn.json` (`.scn2d.json`). */
92
- export declare const Scene2DSchema: z.ZodObject<{
93
- version: z.ZodOptional<z.ZodNumber>;
94
- name: z.ZodOptional<z.ZodString>;
95
- surface: z.ZodOptional<z.ZodLiteral<"world2d">>;
96
- gravity: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
97
- background: z.ZodOptional<z.ZodString>;
98
- entities: z.ZodArray<z.ZodType<Entity2D, unknown, z.core.$ZodTypeInternals<Entity2D, unknown>>>;
99
- }, z.core.$strip>;
100
- export type Scene2DFile = z.infer<typeof Scene2DSchema>;
101
- export {};
102
- //# sourceMappingURL=entity2d.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entity2d.d.ts","sourceRoot":"","sources":["../../../src/world2d/schema/entity2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB;;;;;GAKG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmChB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,GAAG;IACpD,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CA6CvB,CAAC;AAEzB,4EAA4E;AAC5E,eAAO,MAAM,aAAa;;;;;;;iBA8B4B,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -1,119 +0,0 @@
1
- import { z } from 'zod';
2
- import { Physics2DSchema } from './physics2d';
3
- import { SpriteSchema, Text2DSchema } from './sprite';
4
- import { TilemapSchema } from './tilemap';
5
- import { Transform2DSchema, Vec2Schema } from './tuples2d';
6
- /** Component data: same shape as the 3D ComponentsSchema (scalars + scalar arrays). */
7
- const ComponentScalarSchema = z.union([z.number(), z.string(), z.boolean()]);
8
- const ComponentValueSchema = z.union([
9
- ComponentScalarSchema,
10
- z.array(z.number()),
11
- z.array(z.string()),
12
- z.array(z.boolean()),
13
- ]);
14
- const ComponentDataSchema = z.record(z.string(), ComponentValueSchema);
15
- const ComponentsSchema = z.record(z.string(), ComponentDataSchema);
16
- /**
17
- * A world2d entity — the 2D analog of the 3D `SceneEntity`. The SAME engine model
18
- * (named components validated against a registry, a tree of children) reused; the
19
- * sections (`sprite`/`text`/`physics2d`/`transform2d`) name engine-owned data, NOT
20
- * `PIXI.Sprite`. `surface` defaults to 'world2d' for entities in a Scene2D file.
21
- */
22
- const Entity2DBase = z.object({
23
- id: z.string().optional().describe('Unique entity ID. Auto-generated if omitted'),
24
- name: z.string().describe('Human-readable entity name (shown in hierarchy panel)'),
25
- surface: z
26
- .enum(['world2d', 'world3d'])
27
- .optional()
28
- .describe("Render surface that instantiates this entity. Default 'world2d' in a Scene2D file. The " +
29
- "'world3d' value is REJECTED at parse (T4.1): declared but has no runtime reader — " +
30
- "authoring surface: 'world3d' throws. Do not author it ('world2d', the default, is fine)."),
31
- visible: z.boolean().optional().describe('Whether the entity and its children are rendered'),
32
- locked: z
33
- .boolean()
34
- .optional()
35
- .describe('Prevent selection and editing in the scene editor. REJECTED at parse (T4.1): declared ' +
36
- 'but has no runtime reader — authoring this field throws. Do not author.'),
37
- tags: z
38
- .array(z.string())
39
- .optional()
40
- .describe('Arbitrary string tags for runtime queries. REJECTED at parse (T4.1): declared but has no ' +
41
- 'runtime reader — authoring this field throws. Do not author.'),
42
- transform2d: Transform2DSchema.optional().describe('Local 2D transform relative to parent'),
43
- pivot: Vec2Schema.optional().describe('Local-space pivot point [x, y]'),
44
- sprite: SpriteSchema.optional().describe('2D sprite appearance'),
45
- text: Text2DSchema.optional().describe('World-space text label'),
46
- tilemap: TilemapSchema.optional().describe('2D tilemap (CompositeTilemap)'),
47
- physics2d: Physics2DSchema.optional().describe('2D physics rigid body + collider'),
48
- components: ComponentsSchema.optional().describe('User-defined components (validated against the world2d component registry)'),
49
- });
50
- export const Entity2DSchema = z.lazy(() => Entity2DBase.extend({
51
- children: z.array(Entity2DSchema).optional().describe('Child entities'),
52
- })
53
- // T4.1: three fields are authored/typed but have no runtime reader in
54
- // `scene2d-loader.ts`'s `spawn()` (unlike their 3D `SceneEntity` siblings,
55
- // which ARE read — editor selection-locking for `locked`, `scene-query.ts`
56
- // for `tags`):
57
- // - `locked` — spawn() never checks it (no 2D editor selection-lock yet).
58
- // - `tags` — never copied onto userData; no 2D equivalent of scene-query.ts.
59
- // - `surface: 'world3d'` — spawn() always instantiates as world2d
60
- // regardless of this field's value, so a 'world3d' entity is silently
61
- // spawned into the 2D world anyway. ('world2d', the default, is a
62
- // harmless no-op and is not flagged.)
63
- // Loud load errors until readers exist — see T4.1.
64
- .superRefine((entity, ctx) => {
65
- if (entity.locked !== undefined) {
66
- ctx.addIssue({
67
- code: z.ZodIssueCode.custom,
68
- message: `world2d entity "${entity.name}": \`locked\` is authored but not implemented — ` +
69
- 'scene2d-loader.ts has no 2D editor selection-lock reader yet. See T4.1.',
70
- path: ['locked'],
71
- });
72
- }
73
- if (entity.tags !== undefined) {
74
- ctx.addIssue({
75
- code: z.ZodIssueCode.custom,
76
- message: `world2d entity "${entity.name}": \`tags\` is authored but not implemented — ` +
77
- 'no 2D equivalent of scene-query.ts reads it yet. See T4.1.',
78
- path: ['tags'],
79
- });
80
- }
81
- if (entity.surface === 'world3d') {
82
- ctx.addIssue({
83
- code: z.ZodIssueCode.custom,
84
- message: `world2d entity "${entity.name}": \`surface: 'world3d'\` is authored but not ` +
85
- 'implemented — spawn() always instantiates entities as world2d regardless of this ' +
86
- 'field, so a world3d entity would be silently spawned into the 2D world. See T4.1.',
87
- path: ['surface'],
88
- });
89
- }
90
- }));
91
- /** A world2d scene file — the 2D analog of `.vscn.json` (`.scn2d.json`). */
92
- export const Scene2DSchema = z
93
- .object({
94
- version: z.number().optional().describe('Scene format version'),
95
- name: z
96
- .string()
97
- .optional()
98
- .describe('Scene name. REJECTED at parse (T4.1): declared but has no runtime reader — authoring ' +
99
- 'this field throws. Do not author.'),
100
- surface: z.literal('world2d').optional().describe("Render surface. Always 'world2d'"),
101
- gravity: Vec2Schema.optional().describe('World gravity [x, y] in px/s^2. Default [0, 980]'),
102
- background: z.string().optional().describe("Background color hex string. Default '#10101a'"),
103
- entities: z.array(Entity2DSchema).describe('Root entities of the world2d scene'),
104
- })
105
- // T4.1: `name` is authored/typed but has no runtime reader anywhere (unlike
106
- // `SceneFile.name`/`PrefabFile.name`, which the editor reads via
107
- // `editor-store.ts`'s `sceneName` getter/setter) — no 2D scene-name display
108
- // exists yet. Loud load error until a reader exists — see T4.1.
109
- .superRefine((scene, ctx) => {
110
- if (scene.name !== undefined) {
111
- ctx.addIssue({
112
- code: z.ZodIssueCode.custom,
113
- message: '`name` is authored but not implemented — no runtime reader displays/consumes a ' +
114
- 'world2d scene name yet (unlike SceneFile.name). See T4.1.',
115
- path: ['name'],
116
- });
117
- }
118
- })
119
- .describe('A world2d scene (PixiJS render surface)');
@@ -1,46 +0,0 @@
1
- import { z } from 'zod';
2
- /** A single 2D collider shape (Rapier 2D). Cuboid takes 2 half-extents; ball a radius. */
3
- export declare const Collider2DSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4
- shape: z.ZodLiteral<"cuboid">;
5
- halfExtents: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
6
- }, z.core.$strip>, z.ZodObject<{
7
- shape: z.ZodLiteral<"ball">;
8
- radius: z.ZodNumber;
9
- }, z.core.$strip>, z.ZodObject<{
10
- shape: z.ZodLiteral<"capsule">;
11
- halfHeight: z.ZodNumber;
12
- radius: z.ZodNumber;
13
- }, z.core.$strip>], "shape">;
14
- export type SceneCollider2D = z.infer<typeof Collider2DSchema>;
15
- /**
16
- * `physics2d` authored section — engine-owned 2D physics data, instantiated as a
17
- * Rapier 2D RigidBody + Collider. The world2d analog of the 3D `physics` section.
18
- */
19
- export declare const Physics2DSchema: z.ZodObject<{
20
- bodyType: z.ZodEnum<{
21
- fixed: "fixed";
22
- dynamic: "dynamic";
23
- kinematicVelocity: "kinematicVelocity";
24
- kinematicPosition: "kinematicPosition";
25
- }>;
26
- collider: z.ZodDiscriminatedUnion<[z.ZodObject<{
27
- shape: z.ZodLiteral<"cuboid">;
28
- halfExtents: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
29
- }, z.core.$strip>, z.ZodObject<{
30
- shape: z.ZodLiteral<"ball">;
31
- radius: z.ZodNumber;
32
- }, z.core.$strip>, z.ZodObject<{
33
- shape: z.ZodLiteral<"capsule">;
34
- halfHeight: z.ZodNumber;
35
- radius: z.ZodNumber;
36
- }, z.core.$strip>], "shape">;
37
- sensor: z.ZodOptional<z.ZodBoolean>;
38
- density: z.ZodOptional<z.ZodNumber>;
39
- friction: z.ZodOptional<z.ZodNumber>;
40
- restitution: z.ZodOptional<z.ZodNumber>;
41
- linearDamping: z.ZodOptional<z.ZodNumber>;
42
- gravityScale: z.ZodOptional<z.ZodNumber>;
43
- lockRotations: z.ZodOptional<z.ZodBoolean>;
44
- }, z.core.$strip>;
45
- export type ScenePhysics2D = z.infer<typeof Physics2DSchema>;
46
- //# sourceMappingURL=physics2d.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"physics2d.d.ts","sourceRoot":"","sources":["../../../src/world2d/schema/physics2d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,0FAA0F;AAC1F,eAAO,MAAM,gBAAgB;;;;;;;;;;4BAgBe,CAAC;AAE7C,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;iBAsBwC,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -1,45 +0,0 @@
1
- import { z } from 'zod';
2
- import { Vec2Schema } from './tuples2d';
3
- /** A single 2D collider shape (Rapier 2D). Cuboid takes 2 half-extents; ball a radius. */
4
- export const Collider2DSchema = z
5
- .discriminatedUnion('shape', [
6
- z.object({
7
- shape: z.literal('cuboid').describe('Axis-aligned box collider'),
8
- halfExtents: Vec2Schema.describe('Half-width and half-height [hx, hy] in pixels'),
9
- }),
10
- z.object({
11
- shape: z.literal('ball').describe('Circle collider'),
12
- radius: z.number().describe('Radius in pixels'),
13
- }),
14
- z.object({
15
- shape: z.literal('capsule').describe('Capsule collider (vertical)'),
16
- halfHeight: z.number().describe('Half the straight segment length'),
17
- radius: z.number().describe('Cap radius'),
18
- }),
19
- ])
20
- .describe('2D collider shape (Rapier 2D)');
21
- /**
22
- * `physics2d` authored section — engine-owned 2D physics data, instantiated as a
23
- * Rapier 2D RigidBody + Collider. The world2d analog of the 3D `physics` section.
24
- */
25
- export const Physics2DSchema = z
26
- .object({
27
- bodyType: z
28
- .enum(['dynamic', 'fixed', 'kinematicVelocity', 'kinematicPosition'])
29
- .describe('Rapier 2D rigid-body type'),
30
- collider: Collider2DSchema.describe('Collider shape attached to the body'),
31
- sensor: z
32
- .boolean()
33
- .optional()
34
- .describe('If true, a sensor (trigger) collider — overlaps fire onTriggerEnter/Exit, no solid response'),
35
- density: z.number().optional().describe('Collider density (drives mass). Default 1'),
36
- friction: z.number().optional().describe('Coefficient of friction. Default 0.5'),
37
- restitution: z.number().optional().describe('Bounciness 0..1. Default 0'),
38
- linearDamping: z.number().optional().describe('Linear velocity damping. Default 0'),
39
- gravityScale: z.number().optional().describe('Per-body gravity multiplier. Default 1'),
40
- lockRotations: z
41
- .boolean()
42
- .optional()
43
- .describe('Lock the body so it cannot rotate. Default false'),
44
- })
45
- .describe('2D physics rigid body + collider (world2d, Rapier 2D)');
@@ -1,42 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * `sprite` authored section — engine-owned 2D sprite data, NOT a `PIXI.Sprite`.
4
- *
5
- * Per ARCHITECTURE.md §Render Surfaces: authored data says `sprite`, and a runtime
6
- * adapter instantiates it onto the appropriate backend (here, a `PIXI.Sprite` on
7
- * the world2d surface). A 1x1 white texture is used when `texture` is omitted, so a
8
- * tinted rectangle sprite needs no asset.
9
- */
10
- export declare const SpriteSchema: z.ZodObject<{
11
- texture: z.ZodOptional<z.ZodString>;
12
- frame: z.ZodOptional<z.ZodString>;
13
- anchor: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
14
- tint: z.ZodOptional<z.ZodString>;
15
- alpha: z.ZodOptional<z.ZodNumber>;
16
- width: z.ZodOptional<z.ZodNumber>;
17
- height: z.ZodOptional<z.ZodNumber>;
18
- blendMode: z.ZodOptional<z.ZodEnum<{
19
- normal: "normal";
20
- add: "add";
21
- multiply: "multiply";
22
- screen: "screen";
23
- }>>;
24
- interactive: z.ZodOptional<z.ZodBoolean>;
25
- filter: z.ZodOptional<z.ZodEnum<{
26
- none: "none";
27
- blur: "blur";
28
- desaturate: "desaturate";
29
- }>>;
30
- animationFrames: z.ZodOptional<z.ZodNumber>;
31
- fps: z.ZodOptional<z.ZodNumber>;
32
- }, z.core.$strip>;
33
- export type SceneSprite = z.infer<typeof SpriteSchema>;
34
- /** `text` authored section — a world-space PIXI.Text label (world-space UI). */
35
- export declare const Text2DSchema: z.ZodObject<{
36
- text: z.ZodString;
37
- fontSize: z.ZodOptional<z.ZodNumber>;
38
- fill: z.ZodOptional<z.ZodString>;
39
- anchor: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
40
- }, z.core.$strip>;
41
- export type SceneText2D = z.infer<typeof Text2DSchema>;
42
- //# sourceMappingURL=sprite.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../../../src/world2d/schema/sprite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;iBA6CqE,CAAC;AAE/F,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,gFAAgF;AAChF,eAAO,MAAM,YAAY;;;;;iBAOsD,CAAC;AAEhF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}