@vgai/engine 0.5.0 → 0.5.1

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,217 +0,0 @@
1
- /**
2
- * `vgaiDataCheck` — build-path validation for data assets and project tools
3
- * (docs/DATA-TOOLS-DESIGN.md §6.7, the enforcement half of W5). A Vite plugin
4
- * for the PROJECT's own `vite.config.ts` (the template wires it; the editor
5
- * dev server boots Vite from the ENGINE's config and never runs this — its
6
- * surface is covered by `vgai doctor` instead). Build-only (`apply: 'build'`):
7
- * in dev, `defineData`'s parse-on-load already fails loud in the console.
8
- *
9
- * Three checks, all failing the build loud:
10
- *
11
- * 1. **Schema integrity** (`buildStart`): every registered asset's
12
- * `.data.json` is read fresh from disk and validated through
13
- * {@link parseDataJson} — the EXACT parse `defineData` runs at load (§9.1:
14
- * an emitted-JSON-Schema validator here could disagree with runtime; the
15
- * Zod schema itself never can). The schemas arrive EXECUTABLE because
16
- * `vite.config.ts` statically imports the project's data-asset registry
17
- * (`src/data/assets.ts` in the template) — Vite's config loader bundles
18
- * config-relative TS imports, which is what makes this the one build-side
19
- * place project Zod schemas can run.
20
- * 2. **Ref integrity** (`buildStart`): every `file#key(.field)*` string in
21
- * every `src/data/*.data.json` (registered or not) must resolve — shared
22
- * definition with `vgai doctor` via {@link findDanglingDataRefs}, so the
23
- * two surfaces can never disagree about what "dangling" means. A second,
24
- * narrower ref check runs alongside it for REGISTERED assets only: any
25
- * field declared with `dataRef(target)` (`./data-ref.ts`) whose `target`
26
- * names no asset currently on disk fails loud too (§9.4's "renamed the
27
- * target file" hole, closed for declared refs — see
28
- * `collectDeclaredRefFields`/`findMissingRefTargets` in `data-check-core.ts`).
29
- * 3. **Tools never ship** (`generateBundle`): no emitted chunk may contain a
30
- * module from `src/tools/` or a `*.tool.*` file (§4: tester serves and
31
- * standalone builds strip tools entirely; W4 made this true by
32
- * construction — nothing imports tools — and this check PINS it against
33
- * the day some game module imports a tool "just for a helper").
34
- *
35
- * Unregistered data files (a `.data.json` with no entry in the passed
36
- * `assets` list) are a WARNING, not an error: they still get ref-integrity
37
- * and runtime parse-on-load, but no build-time schema check — the warning
38
- * names the registry file to fix.
39
- */
40
- import { readdirSync, readFileSync, statSync } from 'node:fs';
41
- import { join, relative } from 'node:path';
42
- import { parseDataJson, toDataJsonSchema } from './data-asset';
43
- import { collectDeclaredRefFields, findDanglingDataRefs, findMissingRefTargets, } from './data-check-core';
44
- /** Recursively collect `*.data.json` under `dir` (absent dir → empty — a project with no data assets builds fine). */
45
- function findDataFiles(dir) {
46
- let entries;
47
- try {
48
- entries = readdirSync(dir);
49
- }
50
- catch {
51
- return [];
52
- }
53
- const out = [];
54
- for (const entry of entries) {
55
- const full = join(dir, entry);
56
- if (statSync(full).isDirectory())
57
- out.push(...findDataFiles(full));
58
- else if (entry.endsWith('.data.json'))
59
- out.push(full);
60
- }
61
- return out;
62
- }
63
- /** `src/data/tuning.data.json` → `tuning` (normalizing either slash direction). */
64
- function assetStem(sourcePath) {
65
- const rel = sourcePath.split('\\').join('/');
66
- return (rel
67
- .split('/')
68
- .pop()
69
- ?.replace(/\.data\.json$/, '') ?? rel);
70
- }
71
- function parseAllDataFiles(root, registered, errors, warnings) {
72
- const parsedByStem = new Map();
73
- const pathsByStem = new Map();
74
- for (const abs of findDataFiles(join(root, 'src', 'data'))) {
75
- const rel = relative(root, abs).split('\\').join('/');
76
- const stem = assetStem(rel);
77
- const paths = pathsByStem.get(stem);
78
- if (paths)
79
- paths.push(rel);
80
- else
81
- pathsByStem.set(stem, [rel]);
82
- try {
83
- parsedByStem.set(stem, JSON.parse(readFileSync(abs, 'utf-8')));
84
- }
85
- catch (err) {
86
- errors.push(`"${rel}" is not valid JSON: ${err instanceof Error ? err.message : String(err)}`);
87
- continue;
88
- }
89
- if (!registered.has(rel)) {
90
- warnings.push(`"${rel}" is not registered in the data-asset registry (src/data/assets.ts), so it gets ` +
91
- 'no build-time schema check (runtime parse-on-load still applies). Register it there — ' +
92
- 'the template ships the worked example.');
93
- }
94
- }
95
- const ambiguousStems = new Set();
96
- for (const [stem, paths] of pathsByStem) {
97
- if (paths.length < 2)
98
- continue;
99
- ambiguousStems.add(stem);
100
- errors.push(`asset stem "${stem}" is claimed by ${paths.length} files (${paths.join(', ')}) — ` +
101
- '"file#key" refs and the data-asset registry address a file by its stem alone (§2.2), so ' +
102
- 'this is an unresolvable identity collision. Rename one — asset stems must be unique ' +
103
- 'across the whole project, not just per directory.');
104
- parsedByStem.delete(stem); // arbitrary otherwise — neither check below may resolve through it
105
- }
106
- return { parsedByStem, ambiguousStems };
107
- }
108
- /**
109
- * The fs half of checks 1 + 2, extracted from the plugin hook so it is
110
- * directly unit-testable against a fixture folder (no rollup context needed).
111
- */
112
- export function collectDataCheckProblems(options) {
113
- const root = options.root ?? process.cwd();
114
- const errors = [];
115
- const warnings = [];
116
- const registered = new Set(options.assets.map((a) => a.sourcePath.split('\\').join('/')));
117
- const { parsedByStem, ambiguousStems } = parseAllDataFiles(root, registered, errors, warnings);
118
- // Check 1 — registered assets validate through the exact runtime parse.
119
- for (const asset of options.assets) {
120
- const rel = asset.sourcePath.split('\\').join('/');
121
- if (!parsedByStem.has(assetStem(rel))) {
122
- // An AMBIGUOUS stem already has its own duplicate-stem error above,
123
- // which fully explains why there's no single payload to validate
124
- // against — a second "not found on disk" here would just be
125
- // confusing noise about a file that plainly IS on disk.
126
- if (!ambiguousStems.has(assetStem(rel))) {
127
- errors.push(`registered data asset "${rel}" was not found on disk — fix the path in the registry ` +
128
- '(src/data/assets.ts) or restore the file.');
129
- }
130
- continue;
131
- }
132
- try {
133
- parseDataJson(asset.schema, parsedByStem.get(assetStem(rel)), rel);
134
- }
135
- catch (err) {
136
- errors.push(err instanceof Error ? err.message : String(err));
137
- }
138
- }
139
- // Check 2 — no dangling refs anywhere.
140
- for (const dangling of findDanglingDataRefs(parsedByStem)) {
141
- errors.push(`dangling data ref in "src/data/${dangling.inAsset}.data.json" at ${dangling.atPath}: ` +
142
- `"${dangling.ref}" — "${dangling.missingSegment}" does not exist in ` +
143
- `src/data/${dangling.targetAsset}.data.json. Fix the key or remove the ref ` +
144
- '(refs are "file#key" strings — docs/DATA-TOOLS-DESIGN.md §2.2).');
145
- }
146
- // Check 2b — every declared `dataRef(target)` field (registered assets
147
- // only, same set check 1 already validates) must name a target that's
148
- // actually on disk — the §9.4 fix: this fires even if NO current value
149
- // happens to look like a ref, unlike check 2 above (see
150
- // `data-check-core.ts`'s module doc).
151
- const assetNames = new Set(parsedByStem.keys());
152
- for (const asset of options.assets) {
153
- const rel = asset.sourcePath.split('\\').join('/');
154
- const declared = collectDeclaredRefFields(toDataJsonSchema(asset.schema));
155
- for (const missing of findMissingRefTargets(declared, assetNames)) {
156
- errors.push(`"${rel}" declares field "${missing.fieldPath}" as dataRef('${missing.targetStem}'), but ` +
157
- `no "src/data/${missing.targetStem}.data.json" exists. Restore/rename the target file, ` +
158
- `or update the dataRef('${missing.targetStem}') call in the schema.`);
159
- }
160
- }
161
- return { errors, warnings };
162
- }
163
- /** True iff a bundled module id is tool code that must never ship (§4). Pure, unit-tested. */
164
- export function isToolModuleId(id) {
165
- const normalized = id.split('\\').join('/');
166
- return /\/src\/tools\//.test(normalized) || /\.tool\.[tj]sx?(\?|$)/.test(normalized);
167
- }
168
- /**
169
- * Build-path validation plugin — see the module doc. Wire it in the project's
170
- * `vite.config.ts`, passing the data-asset registry:
171
- *
172
- * ```ts
173
- * import { vgaiDataCheck } from '@vgai/engine/data/vite-plugin-data';
174
- * import { dataAssets } from './src/data/assets';
175
- * export default defineConfig({
176
- * plugins: [vgaiDataCheck({
177
- * root: __dirname,
178
- * assets: dataAssets.map((a) => ({ schema: a.schema, sourcePath: `src/data/${a.name}.data.json` })),
179
- * })],
180
- * });
181
- * ```
182
- */
183
- export function vgaiDataCheck(options) {
184
- return {
185
- name: 'vgai:data-check',
186
- apply: 'build',
187
- buildStart() {
188
- const { errors, warnings } = collectDataCheckProblems(options);
189
- for (const warning of warnings)
190
- this.warn(warning);
191
- if (errors.length > 0) {
192
- // ONE error carrying every problem — fail loud with the full picture,
193
- // not a fix-one-rebuild-see-the-next loop.
194
- this.error(`data-asset validation failed (${errors.length} problem${errors.length === 1 ? '' : 's'} ` +
195
- `— docs/DATA-TOOLS-DESIGN.md §6.7):\n${errors.map((e) => ` - ${e}`).join('\n')}`);
196
- }
197
- },
198
- generateBundle(_outputOptions, bundle) {
199
- const leaked = new Set();
200
- for (const output of Object.values(bundle)) {
201
- if (output.type !== 'chunk')
202
- continue;
203
- for (const id of Object.keys(output.modules)) {
204
- if (isToolModuleId(id))
205
- leaked.add(id.split('\\').join('/'));
206
- }
207
- }
208
- if (leaked.size > 0) {
209
- this.error('project tool code reached the game build — tools are editor-only and must never ship ' +
210
- 'to players (docs/DATA-TOOLS-DESIGN.md §4). Remove every game-code import of these ' +
211
- `modules (tools may import game code, never the reverse):\n${[...leaked]
212
- .map((id) => ` - ${id}`)
213
- .join('\n')}`);
214
- }
215
- },
216
- };
217
- }
@@ -1,22 +0,0 @@
1
- /**
2
- * Dev-mode console bridge.
3
- *
4
- * Monkey-patches console.log / warn / error to also broadcast each message
5
- * via `window.postMessage`. Any parent frame (IDE, editor, test harness) can
6
- * listen for these messages — if nobody is listening they simply go nowhere.
7
- *
8
- * Also captures unhandled errors and promise rejections.
9
- *
10
- * Call once, as early as possible in the entry point:
11
- *
12
- * import { installConsoleBridge } from '@engine/dev/console-bridge';
13
- * if (import.meta.env.DEV) installConsoleBridge();
14
- */
15
- export interface ConsoleBridgeMessage {
16
- type: 'console-bridge';
17
- level: 'log' | 'warn' | 'error';
18
- message: string;
19
- timestamp: number;
20
- }
21
- export declare function installConsoleBridge(): void;
22
- //# sourceMappingURL=console-bridge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"console-bridge.d.ts","sourceRoot":"","sources":["../../src/dev/console-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AA6BD,wBAAgB,oBAAoB,IAAI,IAAI,CAiC3C"}
@@ -1,71 +0,0 @@
1
- /**
2
- * Dev-mode console bridge.
3
- *
4
- * Monkey-patches console.log / warn / error to also broadcast each message
5
- * via `window.postMessage`. Any parent frame (IDE, editor, test harness) can
6
- * listen for these messages — if nobody is listening they simply go nowhere.
7
- *
8
- * Also captures unhandled errors and promise rejections.
9
- *
10
- * Call once, as early as possible in the entry point:
11
- *
12
- * import { installConsoleBridge } from '@engine/dev/console-bridge';
13
- * if (import.meta.env.DEV) installConsoleBridge();
14
- */
15
- const LEVELS = ['log', 'warn', 'error'];
16
- function post(level, message) {
17
- const msg = {
18
- type: 'console-bridge',
19
- level,
20
- message,
21
- timestamp: Date.now(),
22
- };
23
- window.postMessage(msg, '*');
24
- }
25
- function stringify(args) {
26
- return args
27
- .map((a) => {
28
- if (typeof a === 'string')
29
- return a;
30
- try {
31
- return JSON.stringify(a);
32
- }
33
- catch {
34
- return String(a);
35
- }
36
- })
37
- .join(' ');
38
- }
39
- let installed = false;
40
- export function installConsoleBridge() {
41
- // Idempotent: a second call must not double-patch console (which would
42
- // double-post every message) nor add duplicate window listeners.
43
- if (installed)
44
- return;
45
- installed = true;
46
- // Lazy import — avoid hard dep; if logger.ts isn't bundled the flag stays false
47
- let getFlag = () => false;
48
- import('./logger')
49
- .then((m) => {
50
- getFlag = () => m._engineLogActive;
51
- })
52
- .catch(() => { });
53
- // Patch console methods
54
- for (const level of LEVELS) {
55
- const original = console[level].bind(console);
56
- console[level] = (...args) => {
57
- original(...args);
58
- // Skip bridge posting when the engine logger is handling the message
59
- // (it posts its own structured 'engine-log' message instead)
60
- if (!getFlag())
61
- post(level, stringify(args));
62
- };
63
- }
64
- // Capture unhandled errors
65
- window.addEventListener('error', (e) => {
66
- post('error', e.message || String(e.error));
67
- });
68
- window.addEventListener('unhandledrejection', (e) => {
69
- post('error', `Unhandled promise rejection: ${e.reason}`);
70
- });
71
- }
@@ -1,24 +0,0 @@
1
- import * as THREE from 'three';
2
- /**
3
- * Debug drawing utilities for development.
4
- *
5
- * Draw lines, spheres, boxes, and arrows for visualizing
6
- * physics colliders, raycasts, AI paths, etc.
7
- *
8
- * All debug objects are added to a dedicated group that can be toggled.
9
- */
10
- export declare function createDebugDraw(scene: THREE.Scene): {
11
- /** Draw a line between two points */
12
- line(from: THREE.Vector3, to: THREE.Vector3, color?: number): THREE.Line<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.LineBasicMaterial, THREE.Object3DEventMap>;
13
- /** Draw a wireframe sphere at a position */
14
- sphere(center: THREE.Vector3, radius?: number, color?: number): THREE.Mesh<THREE.SphereGeometry, THREE.MeshBasicMaterial, THREE.Object3DEventMap>;
15
- /** Draw a wireframe box */
16
- box(center: THREE.Vector3, size: THREE.Vector3, color?: number): THREE.Mesh<THREE.BoxGeometry, THREE.MeshBasicMaterial, THREE.Object3DEventMap>;
17
- /** Draw an arrow (direction indicator) */
18
- arrow(origin: THREE.Vector3, direction: THREE.Vector3, length?: number, color?: number): THREE.ArrowHelper;
19
- /** Clear all debug drawings */
20
- clear(): void;
21
- /** Toggle debug draw visibility */
22
- visible: boolean;
23
- };
24
- //# sourceMappingURL=debug-draw.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug-draw.d.ts","sourceRoot":"","sources":["../../src/dev/debug-draw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK;IAM9C,qCAAqC;eAC1B,KAAK,CAAC,OAAO,MAAM,KAAK,CAAC,OAAO;IAQ3C,4CAA4C;mBAC7B,KAAK,CAAC,OAAO;IAS5B,2BAA2B;gBACf,KAAK,CAAC,OAAO,QAAQ,KAAK,CAAC,OAAO;IAS9C,0CAA0C;kBAC5B,KAAK,CAAC,OAAO,aAAa,KAAK,CAAC,OAAO;IAQrD,+BAA+B;;IAgB/B,mCAAmC;aACpB,OAAO;EAQzB"}
@@ -1,73 +0,0 @@
1
- import * as THREE from 'three';
2
- /**
3
- * Debug drawing utilities for development.
4
- *
5
- * Draw lines, spheres, boxes, and arrows for visualizing
6
- * physics colliders, raycasts, AI paths, etc.
7
- *
8
- * All debug objects are added to a dedicated group that can be toggled.
9
- */
10
- export function createDebugDraw(scene) {
11
- const group = new THREE.Group();
12
- group.name = 'debug-draw';
13
- scene.add(group);
14
- return {
15
- /** Draw a line between two points */
16
- line(from, to, color = 0x00ff00) {
17
- const geometry = new THREE.BufferGeometry().setFromPoints([from, to]);
18
- const material = new THREE.LineBasicMaterial({ color });
19
- const line = new THREE.Line(geometry, material);
20
- group.add(line);
21
- return line;
22
- },
23
- /** Draw a wireframe sphere at a position */
24
- sphere(center, radius = 0.1, color = 0xff0000) {
25
- const geo = new THREE.SphereGeometry(radius, 8, 8);
26
- const mat = new THREE.MeshBasicMaterial({ color, wireframe: true });
27
- const mesh = new THREE.Mesh(geo, mat);
28
- mesh.position.copy(center);
29
- group.add(mesh);
30
- return mesh;
31
- },
32
- /** Draw a wireframe box */
33
- box(center, size, color = 0x00ffff) {
34
- const geo = new THREE.BoxGeometry(size.x, size.y, size.z);
35
- const mat = new THREE.MeshBasicMaterial({ color, wireframe: true });
36
- const mesh = new THREE.Mesh(geo, mat);
37
- mesh.position.copy(center);
38
- group.add(mesh);
39
- return mesh;
40
- },
41
- /** Draw an arrow (direction indicator) */
42
- arrow(origin, direction, length = 1, color = 0xffff00) {
43
- // Clone before normalize() — never mutate the caller's vector.
44
- const dir = direction.clone().normalize();
45
- const arrow = new THREE.ArrowHelper(dir, origin, length, color);
46
- group.add(arrow);
47
- return arrow;
48
- },
49
- /** Clear all debug drawings */
50
- clear() {
51
- while (group.children.length > 0) {
52
- const child = group.children[0];
53
- group.remove(child);
54
- if (child instanceof THREE.Mesh || child instanceof THREE.Line) {
55
- // Mesh, Line and LineSegments all own geometry + material.
56
- child.geometry.dispose();
57
- child.material.dispose();
58
- }
59
- else if (child instanceof THREE.ArrowHelper) {
60
- // ArrowHelper owns a line + cone; dispose() frees both.
61
- child.dispose();
62
- }
63
- }
64
- },
65
- /** Toggle debug draw visibility */
66
- set visible(v) {
67
- group.visible = v;
68
- },
69
- get visible() {
70
- return group.visible;
71
- },
72
- };
73
- }
@@ -1,30 +0,0 @@
1
- import { LogLayer } from 'loglayer';
2
- /**
3
- * Flag set while the engine logger is calling console.* so that the
4
- * console-bridge and play-mode patches can skip re-forwarding.
5
- * JS is single-threaded so this is safe.
6
- */
7
- export declare let _engineLogActive: boolean;
8
- declare const engineLog: LogLayer;
9
- export interface LogMeta {
10
- entityId?: string | number | undefined;
11
- [key: string]: unknown;
12
- }
13
- interface SubsystemLogger {
14
- debug(msg: string, meta?: LogMeta): void;
15
- info(msg: string, meta?: LogMeta): void;
16
- warn(msg: string, meta?: LogMeta): void;
17
- error(msg: string, meta?: LogMeta): void;
18
- }
19
- export declare const log: {
20
- scene: SubsystemLogger;
21
- physics: SubsystemLogger;
22
- animation: SubsystemLogger;
23
- network: SubsystemLogger;
24
- audio: SubsystemLogger;
25
- ai: SubsystemLogger;
26
- input: SubsystemLogger;
27
- core: SubsystemLogger;
28
- };
29
- export { engineLog };
30
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/dev/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAY,MAAM,UAAU,CAAC;AAE9D;;;;GAIG;AACH,eAAO,IAAI,gBAAgB,SAAQ,CAAC;AAWpC,QAAA,MAAM,SAAS,UA4Cb,CAAC;AAKH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,eAAe;IACvB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1C;AAiBD,eAAO,MAAM,GAAG;;;;;;;;;CASf,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -1,90 +0,0 @@
1
- import { BlankTransport, LogLayer, LogLevel } from 'loglayer';
2
- /**
3
- * Flag set while the engine logger is calling console.* so that the
4
- * console-bridge and play-mode patches can skip re-forwarding.
5
- * JS is single-threaded so this is safe.
6
- */
7
- export let _engineLogActive = false;
8
- const CONSOLE_MAP = {
9
- trace: 'log',
10
- debug: 'log',
11
- info: 'log',
12
- warn: 'warn',
13
- error: 'error',
14
- fatal: 'error',
15
- };
16
- const engineLog = new LogLayer({
17
- transport: new BlankTransport({
18
- shipToLogger: ({ logLevel, messages, data, hasData }) => {
19
- const method = CONSOLE_MAP[logLevel] ?? 'log';
20
- // Extract _sub (subsystem tag) from data, pass the rest as metadata
21
- let subsystem;
22
- let metadata;
23
- if (hasData && data) {
24
- const { _sub, ...rest } = data;
25
- subsystem = _sub ? String(_sub) : undefined;
26
- if (Object.keys(rest).length > 0)
27
- metadata = rest;
28
- }
29
- // Call console for browser devtools
30
- _engineLogActive = true;
31
- if (metadata) {
32
- // biome-ignore lint/suspicious/noConsole: intentional — this IS the logger
33
- console[method](...messages, metadata);
34
- }
35
- else {
36
- // biome-ignore lint/suspicious/noConsole: intentional — this IS the logger
37
- console[method](...messages);
38
- }
39
- _engineLogActive = false;
40
- // Post structured message for editor console
41
- if (typeof window !== 'undefined') {
42
- window.postMessage({
43
- type: 'engine-log',
44
- level: logLevel,
45
- message: messages.join(' '),
46
- subsystem,
47
- metadata,
48
- timestamp: Date.now(),
49
- }, '*');
50
- }
51
- return messages;
52
- },
53
- }),
54
- prefix: '[engine]',
55
- });
56
- // Default to 'info' — debug/trace are off unless explicitly enabled
57
- engineLog.setLevel(LogLevel.info);
58
- function createSubsystemLogger(subsystem) {
59
- return {
60
- debug: (msg, meta) => engineLog.withMetadata({ ...meta, _sub: subsystem }).debug(`[${subsystem}] ${msg}`),
61
- info: (msg, meta) => engineLog.withMetadata({ ...meta, _sub: subsystem }).info(`[${subsystem}] ${msg}`),
62
- warn: (msg, meta) => engineLog.withMetadata({ ...meta, _sub: subsystem }).warn(`[${subsystem}] ${msg}`),
63
- error: (msg, meta) => engineLog.withMetadata({ ...meta, _sub: subsystem }).error(`[${subsystem}] ${msg}`),
64
- };
65
- }
66
- // Pre-built subsystem loggers — all share the same LogLayer instance
67
- // so setLevel() on engineLog affects all of them.
68
- export const log = {
69
- scene: createSubsystemLogger('scene'),
70
- physics: createSubsystemLogger('physics'),
71
- animation: createSubsystemLogger('animation'),
72
- network: createSubsystemLogger('network'),
73
- audio: createSubsystemLogger('audio'),
74
- ai: createSubsystemLogger('ai'),
75
- input: createSubsystemLogger('input'),
76
- core: createSubsystemLogger('core'),
77
- };
78
- export { engineLog };
79
- // Expose to browser devtools: type setEngineLogLevel('debug') in console
80
- if (typeof window !== 'undefined') {
81
- window['setEngineLogLevel'] = (level) => {
82
- engineLog.setLevel(level);
83
- };
84
- }
85
- // URL param override: ?engineLogLevel=debug
86
- if (typeof window !== 'undefined') {
87
- const level = new URLSearchParams(window.location.search).get('engineLogLevel');
88
- if (level)
89
- engineLog.setLevel(level);
90
- }
@@ -1,60 +0,0 @@
1
- export interface PerformanceTiming {
2
- readonly name: string;
3
- readonly ms: number;
4
- }
5
- export interface PerformanceFrame {
6
- readonly id: number;
7
- readonly timestamp: number;
8
- readonly intervalMs: number;
9
- readonly cpuMs: number;
10
- readonly phases: readonly PerformanceTiming[];
11
- }
12
- export interface PerformanceSnapshot {
13
- readonly enabled: boolean;
14
- readonly recording: boolean;
15
- readonly fps: number;
16
- readonly cpuMs: number;
17
- readonly p95Ms: number;
18
- readonly p99Ms: number;
19
- readonly frames: readonly PerformanceFrame[];
20
- readonly phases: readonly PerformanceTiming[];
21
- readonly systems: readonly PerformanceTiming[];
22
- readonly components: readonly PerformanceTiming[];
23
- readonly render: {
24
- readonly gpuMs: number | null;
25
- readonly drawCalls: number;
26
- readonly triangles: number;
27
- readonly geometries: number;
28
- readonly textures: number;
29
- };
30
- }
31
- /** Game-owned, bounded external store for browser-native performance diagnostics. */
32
- export declare function createPerformanceProfiler(initiallyEnabled?: boolean): {
33
- enabled: boolean;
34
- readonly recording: boolean;
35
- startRecording(): void;
36
- stopRecording(): void;
37
- clear(): void;
38
- beginFrame(): void;
39
- beginPhase(): void;
40
- endPhase(name: string): void;
41
- systemObserver: {
42
- beginSystem(): void;
43
- endSystem(scope: string, phase: string, name: string): void;
44
- };
45
- beginComponent(): void;
46
- endComponent(name: string): void;
47
- reportRender(stats: {
48
- gpuMs: number | null;
49
- drawCalls: number;
50
- triangles: number;
51
- geometries: number;
52
- textures: number;
53
- }): void;
54
- endFrame(): void;
55
- subscribe(listener: () => void): () => void;
56
- getSnapshot(): PerformanceSnapshot;
57
- exportJSON(): string;
58
- };
59
- export type PerformanceProfiler = ReturnType<typeof createPerformanceProfiler>;
60
- //# sourceMappingURL=performance-profiler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"performance-profiler.d.ts","sourceRoot":"","sources":["../../src/dev/performance-profiler.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAUD,qFAAqF;AACrF,wBAAgB,yBAAyB,CAAC,gBAAgB,UAAQ;aA4D3C,OAAO;;;;;;;mBAkCX,MAAM;;;yBAYF,MAAM,SAAS,MAAM,QAAQ,MAAM;;;uBAWnC,MAAM;wBAIL;QAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB;;wBA4BmB,MAAM,IAAI;;;EAajC;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC"}