@vgai/engine 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/README.md +3 -1
  2. package/dist/adapter/authoring.d.ts +404 -0
  3. package/dist/adapter/authoring.d.ts.map +1 -0
  4. package/dist/adapter/authoring.js +22 -0
  5. package/dist/adapter/colyseus-networking-adapter.d.ts +43 -0
  6. package/dist/adapter/colyseus-networking-adapter.d.ts.map +1 -0
  7. package/dist/adapter/colyseus-networking-adapter.js +38 -0
  8. package/dist/adapter/first-party-systems.d.ts +38 -0
  9. package/dist/adapter/first-party-systems.d.ts.map +1 -0
  10. package/dist/adapter/first-party-systems.js +77 -0
  11. package/dist/adapter/game-adapter.d.ts +133 -0
  12. package/dist/adapter/game-adapter.d.ts.map +1 -0
  13. package/dist/adapter/game-adapter.js +10 -0
  14. package/dist/adapter/host-context.d.ts +73 -0
  15. package/dist/adapter/host-context.d.ts.map +1 -0
  16. package/dist/adapter/host-context.js +16 -0
  17. package/dist/adapter/index.d.ts +22 -0
  18. package/dist/adapter/index.d.ts.map +1 -0
  19. package/dist/adapter/index.js +15 -0
  20. package/dist/adapter/ingest/game-contract.d.ts +53 -0
  21. package/dist/adapter/ingest/game-contract.d.ts.map +1 -0
  22. package/dist/adapter/ingest/game-contract.js +30 -0
  23. package/dist/adapter/ingest/overlay-applier.d.ts +118 -0
  24. package/dist/adapter/ingest/overlay-applier.d.ts.map +1 -0
  25. package/dist/adapter/ingest/overlay-applier.js +132 -0
  26. package/dist/adapter/ingest/overlay-apply.d.ts +60 -0
  27. package/dist/adapter/ingest/overlay-apply.d.ts.map +1 -0
  28. package/dist/adapter/ingest/overlay-apply.js +101 -0
  29. package/dist/adapter/ingest/overlay-file.d.ts +79 -0
  30. package/dist/adapter/ingest/overlay-file.d.ts.map +1 -0
  31. package/dist/adapter/ingest/overlay-file.js +66 -0
  32. package/dist/adapter/ingest/overlay-report.d.ts +113 -0
  33. package/dist/adapter/ingest/overlay-report.d.ts.map +1 -0
  34. package/dist/adapter/ingest/overlay-report.js +103 -0
  35. package/dist/adapter/ingest/scene-capture.d.ts +97 -0
  36. package/dist/adapter/ingest/scene-capture.d.ts.map +1 -0
  37. package/dist/adapter/ingest/scene-capture.js +248 -0
  38. package/dist/adapter/ingest/upstream-pin.d.ts +47 -0
  39. package/dist/adapter/ingest/upstream-pin.d.ts.map +1 -0
  40. package/dist/adapter/ingest/upstream-pin.js +50 -0
  41. package/dist/adapter/loop-gate-report.d.ts +34 -0
  42. package/dist/adapter/loop-gate-report.d.ts.map +1 -0
  43. package/dist/adapter/loop-gate-report.js +37 -0
  44. package/dist/adapter/rapier-physics-adapter.d.ts +12 -0
  45. package/dist/adapter/rapier-physics-adapter.d.ts.map +1 -0
  46. package/dist/adapter/rapier-physics-adapter.js +46 -0
  47. package/dist/adapter/system-adapter.d.ts +133 -0
  48. package/dist/adapter/system-adapter.d.ts.map +1 -0
  49. package/dist/adapter/system-adapter.js +13 -0
  50. package/dist/adapter/transform.d.ts +18 -0
  51. package/dist/adapter/transform.d.ts.map +1 -0
  52. package/dist/adapter/transform.js +1 -0
  53. package/dist/adapter/vgai-scene-game-adapter.d.ts +116 -0
  54. package/dist/adapter/vgai-scene-game-adapter.d.ts.map +1 -0
  55. package/dist/adapter/vgai-scene-game-adapter.js +714 -0
  56. package/dist/adapter/world-kind.d.ts +30 -0
  57. package/dist/adapter/world-kind.d.ts.map +1 -0
  58. package/dist/adapter/world-kind.js +18 -0
  59. package/dist/ai/navigation.d.ts +64 -0
  60. package/dist/ai/navigation.d.ts.map +1 -0
  61. package/dist/ai/navigation.js +133 -0
  62. package/dist/animation/anim-graph-types.d.ts +25 -0
  63. package/dist/animation/anim-graph-types.d.ts.map +1 -0
  64. package/dist/animation/anim-graph-types.js +1 -0
  65. package/dist/animation/animation-clock.d.ts +213 -0
  66. package/dist/animation/animation-clock.d.ts.map +1 -0
  67. package/dist/animation/animation-clock.js +301 -0
  68. package/dist/animation/blend-node.d.ts +22 -0
  69. package/dist/animation/blend-node.d.ts.map +1 -0
  70. package/dist/animation/blend-node.js +97 -0
  71. package/dist/animation/camera-ownership.d.ts +250 -0
  72. package/dist/animation/camera-ownership.d.ts.map +1 -0
  73. package/dist/animation/camera-ownership.js +169 -0
  74. package/dist/animation/cinematic-cues.d.ts +200 -0
  75. package/dist/animation/cinematic-cues.d.ts.map +1 -0
  76. package/dist/animation/cinematic-cues.js +213 -0
  77. package/dist/animation/clip-map.d.ts +12 -0
  78. package/dist/animation/clip-map.d.ts.map +1 -0
  79. package/dist/animation/clip-map.js +37 -0
  80. package/dist/animation/gsap-registration.d.ts +119 -0
  81. package/dist/animation/gsap-registration.d.ts.map +1 -0
  82. package/dist/animation/gsap-registration.js +92 -0
  83. package/dist/animation/theatre-clock-binding.d.ts +89 -0
  84. package/dist/animation/theatre-clock-binding.d.ts.map +1 -0
  85. package/dist/animation/theatre-clock-binding.js +29 -0
  86. package/dist/animation/theatre-director.d.ts +242 -0
  87. package/dist/animation/theatre-director.d.ts.map +1 -0
  88. package/dist/animation/theatre-director.js +235 -0
  89. package/dist/animation/theatre-object-binding.d.ts +305 -0
  90. package/dist/animation/theatre-object-binding.d.ts.map +1 -0
  91. package/dist/animation/theatre-object-binding.js +351 -0
  92. package/dist/animation/xstate-animation-binding.d.ts +111 -0
  93. package/dist/animation/xstate-animation-binding.d.ts.map +1 -0
  94. package/dist/animation/xstate-animation-binding.js +307 -0
  95. package/dist/animation/xstate-animation-meta.d.ts +228 -0
  96. package/dist/animation/xstate-animation-meta.d.ts.map +1 -0
  97. package/dist/animation/xstate-animation-meta.js +221 -0
  98. package/dist/assets.d.ts +26 -0
  99. package/dist/assets.d.ts.map +1 -0
  100. package/dist/assets.js +55 -0
  101. package/dist/audio/index.d.ts +4 -0
  102. package/dist/audio/index.d.ts.map +1 -0
  103. package/dist/audio/index.js +24 -0
  104. package/dist/audio/tone-clock-binding.d.ts +75 -0
  105. package/dist/audio/tone-clock-binding.d.ts.map +1 -0
  106. package/dist/audio/tone-clock-binding.js +29 -0
  107. package/dist/audio/tone-context.d.ts +114 -0
  108. package/dist/audio/tone-context.d.ts.map +1 -0
  109. package/dist/audio/tone-context.js +39 -0
  110. package/dist/audio/tone-offline-render.d.ts +90 -0
  111. package/dist/audio/tone-offline-render.d.ts.map +1 -0
  112. package/dist/audio/tone-offline-render.js +56 -0
  113. package/dist/audio/wav-encode.d.ts +38 -0
  114. package/dist/audio/wav-encode.d.ts.map +1 -0
  115. package/dist/audio/wav-encode.js +97 -0
  116. package/dist/core/game-loop.d.ts +21 -0
  117. package/dist/core/game-loop.d.ts.map +1 -0
  118. package/dist/core/game-loop.js +130 -0
  119. package/dist/core/system-runner.d.ts +120 -0
  120. package/dist/core/system-runner.d.ts.map +1 -0
  121. package/dist/core/system-runner.js +286 -0
  122. package/dist/core/types.d.ts +58 -0
  123. package/dist/core/types.d.ts.map +1 -0
  124. package/dist/core/types.js +25 -0
  125. package/dist/data/data-asset.d.ts +101 -0
  126. package/dist/data/data-asset.d.ts.map +1 -0
  127. package/dist/data/data-asset.js +122 -0
  128. package/dist/data/data-check-core.d.ts +110 -0
  129. package/dist/data/data-check-core.d.ts.map +1 -0
  130. package/dist/data/data-check-core.js +178 -0
  131. package/dist/data/data-ref.d.ts +79 -0
  132. package/dist/data/data-ref.d.ts.map +1 -0
  133. package/dist/data/data-ref.js +130 -0
  134. package/dist/data/vite-plugin-data.d.ts +79 -0
  135. package/dist/data/vite-plugin-data.d.ts.map +1 -0
  136. package/dist/data/vite-plugin-data.js +217 -0
  137. package/dist/dev/console-bridge.d.ts +22 -0
  138. package/dist/dev/console-bridge.d.ts.map +1 -0
  139. package/dist/dev/console-bridge.js +71 -0
  140. package/dist/dev/debug-draw.d.ts +24 -0
  141. package/dist/dev/debug-draw.d.ts.map +1 -0
  142. package/dist/dev/debug-draw.js +73 -0
  143. package/dist/dev/logger.d.ts +30 -0
  144. package/dist/dev/logger.d.ts.map +1 -0
  145. package/dist/dev/logger.js +90 -0
  146. package/dist/ecs/component-manager.d.ts +189 -0
  147. package/dist/ecs/component-manager.d.ts.map +1 -0
  148. package/dist/ecs/component-manager.js +676 -0
  149. package/dist/ecs/game-component.d.ts +97 -0
  150. package/dist/ecs/game-component.d.ts.map +1 -0
  151. package/dist/ecs/game-component.js +80 -0
  152. package/dist/ecs/hmr-swap-report.d.ts +53 -0
  153. package/dist/ecs/hmr-swap-report.d.ts.map +1 -0
  154. package/dist/ecs/hmr-swap-report.js +55 -0
  155. package/dist/index.d.ts +37 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +30 -0
  158. package/dist/input/input-manager.d.ts +596 -0
  159. package/dist/input/input-manager.d.ts.map +1 -0
  160. package/dist/input/input-manager.js +1564 -0
  161. package/dist/input/input-types.d.ts +171 -0
  162. package/dist/input/input-types.d.ts.map +1 -0
  163. package/dist/input/input-types.js +1 -0
  164. package/dist/input/prompt-labels.d.ts +21 -0
  165. package/dist/input/prompt-labels.d.ts.map +1 -0
  166. package/dist/input/prompt-labels.js +121 -0
  167. package/dist/input/rebind-controller.d.ts +59 -0
  168. package/dist/input/rebind-controller.d.ts.map +1 -0
  169. package/dist/input/rebind-controller.js +85 -0
  170. package/dist/input/schema.d.ts +16 -0
  171. package/dist/input/schema.d.ts.map +1 -0
  172. package/dist/input/schema.js +228 -0
  173. package/dist/loader.d.ts +43 -0
  174. package/dist/loader.d.ts.map +1 -0
  175. package/dist/loader.js +59 -0
  176. package/dist/manifest/index.d.ts +5 -0
  177. package/dist/manifest/index.d.ts.map +1 -0
  178. package/dist/manifest/index.js +8 -0
  179. package/dist/manifest/load-file.d.ts +4 -0
  180. package/dist/manifest/load-file.d.ts.map +1 -0
  181. package/dist/manifest/load-file.js +14 -0
  182. package/dist/manifest/load.d.ts +117 -0
  183. package/dist/manifest/load.d.ts.map +1 -0
  184. package/dist/manifest/load.js +255 -0
  185. package/dist/manifest/schema.d.ts +173 -0
  186. package/dist/manifest/schema.d.ts.map +1 -0
  187. package/dist/manifest/schema.js +302 -0
  188. package/dist/physics/collision-system.d.ts +41 -0
  189. package/dist/physics/collision-system.d.ts.map +1 -0
  190. package/dist/physics/collision-system.js +64 -0
  191. package/dist/physics/physics-registry.d.ts +45 -0
  192. package/dist/physics/physics-registry.d.ts.map +1 -0
  193. package/dist/physics/physics-registry.js +65 -0
  194. package/dist/physics/transform-writer.d.ts +16 -0
  195. package/dist/physics/transform-writer.d.ts.map +1 -0
  196. package/dist/physics/transform-writer.js +38 -0
  197. package/dist/physics/trigger-dispatch.d.ts +24 -0
  198. package/dist/physics/trigger-dispatch.d.ts.map +1 -0
  199. package/dist/physics/trigger-dispatch.js +80 -0
  200. package/dist/react/game-state.d.ts +105 -0
  201. package/dist/react/game-state.d.ts.map +1 -0
  202. package/dist/react/game-state.js +144 -0
  203. package/dist/react/use-data.d.ts +60 -0
  204. package/dist/react/use-data.d.ts.map +1 -0
  205. package/dist/react/use-data.js +96 -0
  206. package/dist/react/use-selection.d.ts +75 -0
  207. package/dist/react/use-selection.d.ts.map +1 -0
  208. package/dist/react/use-selection.js +90 -0
  209. package/dist/render/auto-batcher.d.ts +34 -0
  210. package/dist/render/auto-batcher.d.ts.map +1 -0
  211. package/dist/render/auto-batcher.js +140 -0
  212. package/dist/render/render-batch-system.d.ts +33 -0
  213. package/dist/render/render-batch-system.d.ts.map +1 -0
  214. package/dist/render/render-batch-system.js +230 -0
  215. package/dist/render/render-features.d.ts +47 -0
  216. package/dist/render/render-features.d.ts.map +1 -0
  217. package/dist/render/render-features.js +105 -0
  218. package/dist/render/render-settings.d.ts +36 -0
  219. package/dist/render/render-settings.d.ts.map +1 -0
  220. package/dist/render/render-settings.js +51 -0
  221. package/dist/runtime/create-runtime.d.ts +280 -0
  222. package/dist/runtime/create-runtime.d.ts.map +1 -0
  223. package/dist/runtime/create-runtime.js +795 -0
  224. package/dist/runtime/frame-selector-cache.d.ts +41 -0
  225. package/dist/runtime/frame-selector-cache.d.ts.map +1 -0
  226. package/dist/runtime/frame-selector-cache.js +65 -0
  227. package/dist/runtime/game.d.ts +433 -0
  228. package/dist/runtime/game.d.ts.map +1 -0
  229. package/dist/runtime/game.js +569 -0
  230. package/dist/runtime/input-router.d.ts +78 -0
  231. package/dist/runtime/input-router.d.ts.map +1 -0
  232. package/dist/runtime/input-router.js +171 -0
  233. package/dist/runtime/mount-game.d.ts +129 -0
  234. package/dist/runtime/mount-game.d.ts.map +1 -0
  235. package/dist/runtime/mount-game.js +152 -0
  236. package/dist/runtime/mount-manifest.d.ts +119 -0
  237. package/dist/runtime/mount-manifest.d.ts.map +1 -0
  238. package/dist/runtime/mount-manifest.js +204 -0
  239. package/dist/runtime/render-audio-control.d.ts +110 -0
  240. package/dist/runtime/render-audio-control.d.ts.map +1 -0
  241. package/dist/runtime/render-audio-control.js +111 -0
  242. package/dist/runtime/render-control.d.ts +291 -0
  243. package/dist/runtime/render-control.d.ts.map +1 -0
  244. package/dist/runtime/render-control.js +264 -0
  245. package/dist/runtime/render-seed.d.ts +57 -0
  246. package/dist/runtime/render-seed.d.ts.map +1 -0
  247. package/dist/runtime/render-seed.js +74 -0
  248. package/dist/runtime/scene-ui-bridge.d.ts +69 -0
  249. package/dist/runtime/scene-ui-bridge.d.ts.map +1 -0
  250. package/dist/runtime/scene-ui-bridge.js +23 -0
  251. package/dist/runtime/scene-ui-data.d.ts +13 -0
  252. package/dist/runtime/scene-ui-data.d.ts.map +1 -0
  253. package/dist/runtime/scene-ui-data.js +92 -0
  254. package/dist/runtime/state-bridge.d.ts +47 -0
  255. package/dist/runtime/state-bridge.d.ts.map +1 -0
  256. package/dist/runtime/state-bridge.js +53 -0
  257. package/dist/runtime/types.d.ts +179 -0
  258. package/dist/runtime/types.d.ts.map +1 -0
  259. package/dist/runtime/types.js +1 -0
  260. package/dist/scene/asset-loaders.d.ts +79 -0
  261. package/dist/scene/asset-loaders.d.ts.map +1 -0
  262. package/dist/scene/asset-loaders.js +141 -0
  263. package/dist/scene/asset-paths.d.ts +11 -0
  264. package/dist/scene/asset-paths.d.ts.map +1 -0
  265. package/dist/scene/asset-paths.js +108 -0
  266. package/dist/scene/asset-ref-check.d.ts +88 -0
  267. package/dist/scene/asset-ref-check.d.ts.map +1 -0
  268. package/dist/scene/asset-ref-check.js +214 -0
  269. package/dist/scene/asset-registry.d.ts +30 -0
  270. package/dist/scene/asset-registry.d.ts.map +1 -0
  271. package/dist/scene/asset-registry.js +50 -0
  272. package/dist/scene/collider-dimensions.d.ts +63 -0
  273. package/dist/scene/collider-dimensions.d.ts.map +1 -0
  274. package/dist/scene/collider-dimensions.js +98 -0
  275. package/dist/scene/component-registry.d.ts +17 -0
  276. package/dist/scene/component-registry.d.ts.map +1 -0
  277. package/dist/scene/component-registry.js +28 -0
  278. package/dist/scene/defaults.d.ts +252 -0
  279. package/dist/scene/defaults.d.ts.map +1 -0
  280. package/dist/scene/defaults.js +151 -0
  281. package/dist/scene/geometries/index.d.ts +8 -0
  282. package/dist/scene/geometries/index.d.ts.map +1 -0
  283. package/dist/scene/geometries/index.js +7 -0
  284. package/dist/scene/geometries/terrain.d.ts +2 -0
  285. package/dist/scene/geometries/terrain.d.ts.map +1 -0
  286. package/dist/scene/geometries/terrain.js +37 -0
  287. package/dist/scene/geometry-registry.d.ts +24 -0
  288. package/dist/scene/geometry-registry.d.ts.map +1 -0
  289. package/dist/scene/geometry-registry.js +20 -0
  290. package/dist/scene/instance-registry.d.ts +36 -0
  291. package/dist/scene/instance-registry.d.ts.map +1 -0
  292. package/dist/scene/instance-registry.js +55 -0
  293. package/dist/scene/instancers/grid.d.ts +2 -0
  294. package/dist/scene/instancers/grid.d.ts.map +1 -0
  295. package/dist/scene/instancers/grid.js +36 -0
  296. package/dist/scene/instancers/index.d.ts +8 -0
  297. package/dist/scene/instancers/index.d.ts.map +1 -0
  298. package/dist/scene/instancers/index.js +7 -0
  299. package/dist/scene/light-camera-factory.d.ts +23 -0
  300. package/dist/scene/light-camera-factory.d.ts.map +1 -0
  301. package/dist/scene/light-camera-factory.js +68 -0
  302. package/dist/scene/material-factory.d.ts +17 -0
  303. package/dist/scene/material-factory.d.ts.map +1 -0
  304. package/dist/scene/material-factory.js +197 -0
  305. package/dist/scene/material-registry.d.ts +40 -0
  306. package/dist/scene/material-registry.d.ts.map +1 -0
  307. package/dist/scene/material-registry.js +44 -0
  308. package/dist/scene/materials/index.d.ts +8 -0
  309. package/dist/scene/materials/index.d.ts.map +1 -0
  310. package/dist/scene/materials/index.js +7 -0
  311. package/dist/scene/materials/water.d.ts +2 -0
  312. package/dist/scene/materials/water.d.ts.map +1 -0
  313. package/dist/scene/materials/water.js +54 -0
  314. package/dist/scene/parse.d.ts +23 -0
  315. package/dist/scene/parse.d.ts.map +1 -0
  316. package/dist/scene/parse.js +179 -0
  317. package/dist/scene/particles-factory.d.ts +33 -0
  318. package/dist/scene/particles-factory.d.ts.map +1 -0
  319. package/dist/scene/particles-factory.js +282 -0
  320. package/dist/scene/scene-apply.d.ts +109 -0
  321. package/dist/scene/scene-apply.d.ts.map +1 -0
  322. package/dist/scene/scene-apply.js +326 -0
  323. package/dist/scene/scene-diff-schema.d.ts +285 -0
  324. package/dist/scene/scene-diff-schema.d.ts.map +1 -0
  325. package/dist/scene/scene-diff-schema.js +92 -0
  326. package/dist/scene/scene-diff-types.d.ts +40 -0
  327. package/dist/scene/scene-diff-types.d.ts.map +1 -0
  328. package/dist/scene/scene-diff-types.js +14 -0
  329. package/dist/scene/scene-loader.d.ts +177 -0
  330. package/dist/scene/scene-loader.d.ts.map +1 -0
  331. package/dist/scene/scene-loader.js +1213 -0
  332. package/dist/scene/scene-query.d.ts +11 -0
  333. package/dist/scene/scene-query.d.ts.map +1 -0
  334. package/dist/scene/scene-query.js +63 -0
  335. package/dist/scene/scene-types.d.ts +10 -0
  336. package/dist/scene/scene-types.d.ts.map +1 -0
  337. package/dist/scene/scene-types.js +8 -0
  338. package/dist/scene/scene-version.d.ts +26 -0
  339. package/dist/scene/scene-version.d.ts.map +1 -0
  340. package/dist/scene/scene-version.js +34 -0
  341. package/dist/scene/schema/animation.d.ts +8 -0
  342. package/dist/scene/schema/animation.d.ts.map +1 -0
  343. package/dist/scene/schema/animation.js +42 -0
  344. package/dist/scene/schema/audio.d.ts +13 -0
  345. package/dist/scene/schema/audio.d.ts.map +1 -0
  346. package/dist/scene/schema/audio.js +22 -0
  347. package/dist/scene/schema/camera.d.ts +28 -0
  348. package/dist/scene/schema/camera.d.ts.map +1 -0
  349. package/dist/scene/schema/camera.js +17 -0
  350. package/dist/scene/schema/collider.d.ts +40 -0
  351. package/dist/scene/schema/collider.d.ts.map +1 -0
  352. package/dist/scene/schema/collider.js +55 -0
  353. package/dist/scene/schema/entity-ref.d.ts +31 -0
  354. package/dist/scene/schema/entity-ref.d.ts.map +1 -0
  355. package/dist/scene/schema/entity-ref.js +61 -0
  356. package/dist/scene/schema/entity.d.ts +1036 -0
  357. package/dist/scene/schema/entity.d.ts.map +1 -0
  358. package/dist/scene/schema/entity.js +153 -0
  359. package/dist/scene/schema/environment.d.ts +425 -0
  360. package/dist/scene/schema/environment.d.ts.map +1 -0
  361. package/dist/scene/schema/environment.js +357 -0
  362. package/dist/scene/schema/index.d.ts +39 -0
  363. package/dist/scene/schema/index.d.ts.map +1 -0
  364. package/dist/scene/schema/index.js +20 -0
  365. package/dist/scene/schema/instances.d.ts +14 -0
  366. package/dist/scene/schema/instances.d.ts.map +1 -0
  367. package/dist/scene/schema/instances.js +28 -0
  368. package/dist/scene/schema/joint.d.ts +23 -0
  369. package/dist/scene/schema/joint.d.ts.map +1 -0
  370. package/dist/scene/schema/joint.js +23 -0
  371. package/dist/scene/schema/light.d.ts +38 -0
  372. package/dist/scene/schema/light.d.ts.map +1 -0
  373. package/dist/scene/schema/light.js +26 -0
  374. package/dist/scene/schema/material.d.ts +199 -0
  375. package/dist/scene/schema/material.d.ts.map +1 -0
  376. package/dist/scene/schema/material.js +99 -0
  377. package/dist/scene/schema/mesh.d.ts +48 -0
  378. package/dist/scene/schema/mesh.d.ts.map +1 -0
  379. package/dist/scene/schema/mesh.js +82 -0
  380. package/dist/scene/schema/particles.d.ts +2178 -0
  381. package/dist/scene/schema/particles.d.ts.map +1 -0
  382. package/dist/scene/schema/particles.js +321 -0
  383. package/dist/scene/schema/physics.d.ts +56 -0
  384. package/dist/scene/schema/physics.d.ts.map +1 -0
  385. package/dist/scene/schema/physics.js +37 -0
  386. package/dist/scene/schema/scene-file.d.ts +304 -0
  387. package/dist/scene/schema/scene-file.d.ts.map +1 -0
  388. package/dist/scene/schema/scene-file.js +262 -0
  389. package/dist/scene/schema/shadow.d.ts +28 -0
  390. package/dist/scene/schema/shadow.d.ts.map +1 -0
  391. package/dist/scene/schema/shadow.js +20 -0
  392. package/dist/scene/schema/spline.d.ts +25 -0
  393. package/dist/scene/schema/spline.d.ts.map +1 -0
  394. package/dist/scene/schema/spline.js +15 -0
  395. package/dist/scene/schema/tuples.d.ts +12 -0
  396. package/dist/scene/schema/tuples.d.ts.map +1 -0
  397. package/dist/scene/schema/tuples.js +14 -0
  398. package/dist/scene/schema/ui.d.ts +880 -0
  399. package/dist/scene/schema/ui.d.ts.map +1 -0
  400. package/dist/scene/schema/ui.js +506 -0
  401. package/dist/scene/user-data.d.ts +171 -0
  402. package/dist/scene/user-data.d.ts.map +1 -0
  403. package/dist/scene/user-data.js +137 -0
  404. package/dist/setup/setup-audio.d.ts +20 -0
  405. package/dist/setup/setup-audio.d.ts.map +1 -0
  406. package/dist/setup/setup-audio.js +41 -0
  407. package/dist/setup/setup-particles.d.ts +17 -0
  408. package/dist/setup/setup-particles.d.ts.map +1 -0
  409. package/dist/setup/setup-particles.js +16 -0
  410. package/dist/setup/setup-physics.d.ts +25 -0
  411. package/dist/setup/setup-physics.d.ts.map +1 -0
  412. package/dist/setup/setup-physics.js +51 -0
  413. package/dist/setup/setup-renderer.d.ts +69 -0
  414. package/dist/setup/setup-renderer.d.ts.map +1 -0
  415. package/dist/setup/setup-renderer.js +363 -0
  416. package/dist/tools/define-tool.d.ts +105 -0
  417. package/dist/tools/define-tool.d.ts.map +1 -0
  418. package/dist/tools/define-tool.js +82 -0
  419. package/dist/world2d/authoring-2d.d.ts +76 -0
  420. package/dist/world2d/authoring-2d.d.ts.map +1 -0
  421. package/dist/world2d/authoring-2d.js +176 -0
  422. package/dist/world2d/capture-to-scene2d.d.ts +5 -0
  423. package/dist/world2d/capture-to-scene2d.d.ts.map +1 -0
  424. package/dist/world2d/capture-to-scene2d.js +49 -0
  425. package/dist/world2d/collision-2d.d.ts +52 -0
  426. package/dist/world2d/collision-2d.d.ts.map +1 -0
  427. package/dist/world2d/collision-2d.js +70 -0
  428. package/dist/world2d/components-2d.d.ts +47 -0
  429. package/dist/world2d/components-2d.d.ts.map +1 -0
  430. package/dist/world2d/components-2d.js +77 -0
  431. package/dist/world2d/index.d.ts +34 -0
  432. package/dist/world2d/index.d.ts.map +1 -0
  433. package/dist/world2d/index.js +32 -0
  434. package/dist/world2d/ingest-iframe-2d.d.ts +82 -0
  435. package/dist/world2d/ingest-iframe-2d.d.ts.map +1 -0
  436. package/dist/world2d/ingest-iframe-2d.js +166 -0
  437. package/dist/world2d/ingest2d.d.ts +97 -0
  438. package/dist/world2d/ingest2d.d.ts.map +1 -0
  439. package/dist/world2d/ingest2d.js +40 -0
  440. package/dist/world2d/physics2d-registry.d.ts +24 -0
  441. package/dist/world2d/physics2d-registry.d.ts.map +1 -0
  442. package/dist/world2d/physics2d-registry.js +38 -0
  443. package/dist/world2d/pixi-game-adapter.d.ts +107 -0
  444. package/dist/world2d/pixi-game-adapter.d.ts.map +1 -0
  445. package/dist/world2d/pixi-game-adapter.js +211 -0
  446. package/dist/world2d/pixi-surface.d.ts +39 -0
  447. package/dist/world2d/pixi-surface.d.ts.map +1 -0
  448. package/dist/world2d/pixi-surface.js +47 -0
  449. package/dist/world2d/scene-capture-2d.d.ts +43 -0
  450. package/dist/world2d/scene-capture-2d.d.ts.map +1 -0
  451. package/dist/world2d/scene-capture-2d.js +92 -0
  452. package/dist/world2d/scene2d-loader.d.ts +27 -0
  453. package/dist/world2d/scene2d-loader.d.ts.map +1 -0
  454. package/dist/world2d/scene2d-loader.js +274 -0
  455. package/dist/world2d/schema/entity2d.d.ts +102 -0
  456. package/dist/world2d/schema/entity2d.d.ts.map +1 -0
  457. package/dist/world2d/schema/entity2d.js +119 -0
  458. package/dist/world2d/schema/physics2d.d.ts +46 -0
  459. package/dist/world2d/schema/physics2d.d.ts.map +1 -0
  460. package/dist/world2d/schema/physics2d.js +45 -0
  461. package/dist/world2d/schema/sprite.d.ts +42 -0
  462. package/dist/world2d/schema/sprite.d.ts.map +1 -0
  463. package/dist/world2d/schema/sprite.js +63 -0
  464. package/dist/world2d/schema/tilemap.d.ts +15 -0
  465. package/dist/world2d/schema/tilemap.d.ts.map +1 -0
  466. package/dist/world2d/schema/tilemap.js +19 -0
  467. package/dist/world2d/schema/tuples2d.d.ts +20 -0
  468. package/dist/world2d/schema/tuples2d.d.ts.map +1 -0
  469. package/dist/world2d/schema/tuples2d.js +19 -0
  470. package/dist/world2d/system-adapters-2d.d.ts +16 -0
  471. package/dist/world2d/system-adapters-2d.d.ts.map +1 -0
  472. package/dist/world2d/system-adapters-2d.js +37 -0
  473. package/dist/world2d/transform-writer-2d.d.ts +16 -0
  474. package/dist/world2d/transform-writer-2d.d.ts.map +1 -0
  475. package/dist/world2d/transform-writer-2d.js +22 -0
  476. package/dist/world2d/types.d.ts +53 -0
  477. package/dist/world2d/types.d.ts.map +1 -0
  478. package/dist/world2d/types.js +1 -0
  479. package/package.json +18 -4
  480. package/src/adapter/authoring.ts +10 -0
  481. package/src/adapter/first-party-systems.ts +23 -34
  482. package/src/adapter/index.ts +1 -3
  483. package/src/adapter/system-adapter.ts +15 -22
  484. package/src/adapter/vgai-scene-game-adapter.ts +5 -14
  485. package/src/animation/anim-graph-types.ts +12 -43
  486. package/src/animation/animation-clock.ts +479 -0
  487. package/src/animation/camera-ownership.ts +467 -0
  488. package/src/animation/cinematic-cues.ts +451 -0
  489. package/src/animation/clip-map.ts +41 -0
  490. package/src/animation/gsap-registration.ts +184 -0
  491. package/src/animation/theatre-clock-binding.ts +111 -0
  492. package/src/animation/theatre-director.ts +347 -0
  493. package/src/animation/theatre-object-binding.ts +661 -0
  494. package/src/animation/xstate-animation-binding.ts +398 -0
  495. package/src/animation/xstate-animation-meta.ts +282 -0
  496. package/src/audio/index.ts +39 -7
  497. package/src/audio/tone-clock-binding.ts +98 -0
  498. package/src/audio/tone-context.ts +129 -0
  499. package/src/audio/tone-offline-render.ts +167 -0
  500. package/src/audio/wav-encode.ts +119 -0
  501. package/src/core/game-loop.ts +17 -0
  502. package/src/core/types.ts +13 -0
  503. package/src/data/data-asset.ts +167 -0
  504. package/src/data/data-check-core.ts +242 -0
  505. package/src/data/data-ref.ts +145 -0
  506. package/src/data/vite-plugin-data.ts +290 -0
  507. package/src/index.ts +48 -0
  508. package/src/input/input-manager.ts +1206 -32
  509. package/src/input/input-types.ts +155 -3
  510. package/src/input/prompt-labels.ts +122 -0
  511. package/src/input/rebind-controller.ts +105 -0
  512. package/src/input/schema.ts +206 -52
  513. package/src/react/use-data.ts +114 -0
  514. package/src/react/use-selection.tsx +135 -0
  515. package/src/runtime/create-runtime.ts +30 -9
  516. package/src/runtime/render-audio-control.ts +168 -0
  517. package/src/runtime/render-control.ts +522 -0
  518. package/src/runtime/render-seed.ts +79 -0
  519. package/src/runtime/types.ts +0 -5
  520. package/src/scene/asset-loaders.ts +10 -36
  521. package/src/scene/asset-paths.ts +0 -2
  522. package/src/scene/asset-ref-check.ts +248 -0
  523. package/src/scene/parse.ts +133 -0
  524. package/src/scene/scene-loader.ts +81 -96
  525. package/src/scene/schema/animation.ts +30 -79
  526. package/src/scene/schema/entity.ts +20 -0
  527. package/src/scene/schema/index.ts +2 -12
  528. package/src/scene/user-data.ts +8 -9
  529. package/src/setup/setup-renderer.ts +9 -2
  530. package/src/tools/define-tool.ts +152 -0
  531. package/src/animation/anim-graph.ts +0 -406
  532. package/src/animation/anim-system.ts +0 -28
  533. package/src/animation/property-track.ts +0 -178
  534. package/src/animation/schema.ts +0 -204
  535. package/src/audio/ambient.ts +0 -300
  536. package/src/audio/impacts.ts +0 -212
  537. package/src/audio/movement.ts +0 -140
  538. package/src/audio/musical.ts +0 -200
  539. package/src/audio/ui-sounds.ts +0 -171
  540. package/src/audio/vehicle.ts +0 -235
  541. package/src/audio/weapons.ts +0 -152
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Central asset registry — stores per-asset metadata (import corrections, etc.).
3
+ *
4
+ * Loaded once via fetch(), cached in memory. Both the runtime scene loader
5
+ * and editor entity factory import from this module.
6
+ */
7
+ export interface ImportCorrection {
8
+ /** Uniform scale factor applied to the GLTF clone before entity transform. */
9
+ scale?: number;
10
+ /** Euler rotation in degrees [x, y, z] applied to the GLTF clone before entity transform. */
11
+ rotation?: [number, number, number];
12
+ }
13
+ export interface AssetMeta {
14
+ importCorrection?: ImportCorrection;
15
+ }
16
+ type AssetRegistry = Record<string, AssetMeta>;
17
+ /**
18
+ * Fetch and cache the asset registry. Safe to call multiple times —
19
+ * returns the cached result after the first successful load.
20
+ */
21
+ export declare function loadRegistry(): Promise<AssetRegistry>;
22
+ /** Get metadata for an asset path, or undefined if not in the registry. */
23
+ export declare function getAssetMeta(path: string): AssetMeta | undefined;
24
+ /**
25
+ * Update the in-memory cache directly (used by the editor after saving
26
+ * import settings, to avoid a re-fetch).
27
+ */
28
+ export declare function setRegistryCache(data: AssetRegistry): void;
29
+ export {};
30
+ //# sourceMappingURL=asset-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-registry.d.ts","sourceRoot":"","sources":["../../src/scene/asset-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,SAAS;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAU/C;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC,CAgBrD;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAIhE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAG1D"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Central asset registry — stores per-asset metadata (import corrections, etc.).
3
+ *
4
+ * Loaded once via fetch(), cached in memory. Both the runtime scene loader
5
+ * and editor entity factory import from this module.
6
+ */
7
+ import { resolveUrl } from '../loader';
8
+ let registryCache = null;
9
+ let registryPromise = null;
10
+ /** Normalize asset path for registry lookup (strip leading slash). */
11
+ function normalize(path) {
12
+ return path.startsWith('/') ? path.slice(1) : path;
13
+ }
14
+ /**
15
+ * Fetch and cache the asset registry. Safe to call multiple times —
16
+ * returns the cached result after the first successful load.
17
+ */
18
+ export function loadRegistry() {
19
+ if (registryCache)
20
+ return Promise.resolve(registryCache);
21
+ if (registryPromise)
22
+ return registryPromise;
23
+ registryPromise = fetch(resolveUrl('asset-registry.json'))
24
+ .then((res) => {
25
+ if (!res.ok)
26
+ return {};
27
+ return res.json();
28
+ })
29
+ .catch(() => ({}))
30
+ .then((data) => {
31
+ registryCache = data;
32
+ return data;
33
+ });
34
+ return registryPromise;
35
+ }
36
+ /** Get metadata for an asset path, or undefined if not in the registry. */
37
+ export function getAssetMeta(path) {
38
+ if (!registryCache)
39
+ return undefined;
40
+ // Try exact match first, then normalized
41
+ return registryCache[path] ?? registryCache[normalize(path)];
42
+ }
43
+ /**
44
+ * Update the in-memory cache directly (used by the editor after saving
45
+ * import settings, to avoid a re-fetch).
46
+ */
47
+ export function setRegistryCache(data) {
48
+ registryCache = data;
49
+ registryPromise = null;
50
+ }
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Shared world-scale collider dimension math (T1.2).
3
+ *
4
+ * Rapier colliders have no notion of a parent Object3D's `scale` — a body's
5
+ * shape is defined in absolute world units at creation time. Three.js meshes,
6
+ * by contrast, scale visually for free via the normal Object3D hierarchy. To
7
+ * keep the physical collider matching what's on screen, the LOADER must bake
8
+ * the entity's composed WORLD scale (self × every transformed ancestor — see
9
+ * T1.1's world-transform composition) into the collider's dimensions at
10
+ * creation time.
11
+ *
12
+ * This is the ONE place that does that math, so both the runtime loader
13
+ * (scene-loader.ts `createPhysicsBody`) and the editor's collider gizmo
14
+ * (gizmo-registry.ts) agree on exactly the same numbers — previously the
15
+ * editor gizmo only rendered the entity's own live Object3D scale (via normal
16
+ * Three.js parenting) while the Rapier body ignored scale entirely, so the
17
+ * two silently agreed by coincidence for uniform scale and disagreed for
18
+ * everything else.
19
+ *
20
+ * Round colliders (ball/capsule) can only represent a uniform radius — Rapier
21
+ * has no ellipsoid/elliptical-capsule shape. A non-uniform world scale on a
22
+ * round collider's round axes throws a loud error naming the entity, rather
23
+ * than silently simulating (or rendering) the wrong shape.
24
+ */
25
+ import type { SceneCollider } from './scene-types';
26
+ export interface ColliderWorldDimensions {
27
+ /** cuboid only: per-axis half-extents, world scale applied. */
28
+ halfExtents?: [number, number, number];
29
+ /** ball/capsule only: radius, world scale applied (uniform axes required). */
30
+ radius?: number;
31
+ /** capsule only: half-height along the capsule's axis, world scale applied. */
32
+ halfHeight?: number;
33
+ }
34
+ /**
35
+ * Compute a collider's WORLD-space dimensions given the entity's composed
36
+ * world scale (self × ancestors, per-axis, in the entity's own local frame —
37
+ * X/Y/Z order matches `SceneEntity.transform.scale`).
38
+ *
39
+ * @param collider - the entity's authored (unscaled) collider definition.
40
+ * @param worldScale - composed world scale `[x, y, z]`.
41
+ * @param entityLabel - human-readable entity identifier, used only in thrown
42
+ * error messages (loud-failure naming, never silently wrong).
43
+ * @throws if a ball/capsule collider's round cross-section axes have a
44
+ * non-uniform world scale (beyond {@link UNIFORM_SCALE_EPSILON}).
45
+ */
46
+ export declare function computeColliderWorldDimensions(collider: SceneCollider, worldScale: readonly [number, number, number], entityLabel: string): ColliderWorldDimensions;
47
+ /**
48
+ * Compute a collider's WORLD-scaled translation offset (sibling to
49
+ * {@link computeColliderWorldDimensions}, same input contract).
50
+ *
51
+ * Rapier's `ColliderDesc.setTranslation` is a raw physics-engine offset with no
52
+ * notion of a parent Object3D's scale — like dimensions, an authored `offset`
53
+ * (in the entity's own local units) must be scaled per-axis by the entity's
54
+ * composed world scale before being handed to Rapier, or the collider's center
55
+ * silently drifts away from its visual anchor point under any non-1 scale.
56
+ * Applies to every collider type (including trimesh, which is otherwise not
57
+ * handled by {@link computeColliderWorldDimensions}).
58
+ *
59
+ * Returns `undefined` when no offset is authored, mirroring the `if (col.offset)`
60
+ * guard call sites already use.
61
+ */
62
+ export declare function computeColliderWorldOffset(offset: readonly [number, number, number] | undefined, worldScale: readonly [number, number, number]): [number, number, number] | undefined;
63
+ //# sourceMappingURL=collider-dimensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collider-dimensions.d.ts","sourceRoot":"","sources":["../../src/scene/collider-dimensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKnD,MAAM,WAAW,uBAAuB;IACtC,+DAA+D;IAC/D,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAC7C,WAAW,EAAE,MAAM,GAClB,uBAAuB,CA4CzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACrD,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC5C,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAItC"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Shared world-scale collider dimension math (T1.2).
3
+ *
4
+ * Rapier colliders have no notion of a parent Object3D's `scale` — a body's
5
+ * shape is defined in absolute world units at creation time. Three.js meshes,
6
+ * by contrast, scale visually for free via the normal Object3D hierarchy. To
7
+ * keep the physical collider matching what's on screen, the LOADER must bake
8
+ * the entity's composed WORLD scale (self × every transformed ancestor — see
9
+ * T1.1's world-transform composition) into the collider's dimensions at
10
+ * creation time.
11
+ *
12
+ * This is the ONE place that does that math, so both the runtime loader
13
+ * (scene-loader.ts `createPhysicsBody`) and the editor's collider gizmo
14
+ * (gizmo-registry.ts) agree on exactly the same numbers — previously the
15
+ * editor gizmo only rendered the entity's own live Object3D scale (via normal
16
+ * Three.js parenting) while the Rapier body ignored scale entirely, so the
17
+ * two silently agreed by coincidence for uniform scale and disagreed for
18
+ * everything else.
19
+ *
20
+ * Round colliders (ball/capsule) can only represent a uniform radius — Rapier
21
+ * has no ellipsoid/elliptical-capsule shape. A non-uniform world scale on a
22
+ * round collider's round axes throws a loud error naming the entity, rather
23
+ * than silently simulating (or rendering) the wrong shape.
24
+ */
25
+ import { DEFAULTS } from './defaults';
26
+ /** Axes are considered "uniform enough" within this tolerance (float error only). */
27
+ const UNIFORM_SCALE_EPSILON = 1e-4;
28
+ /**
29
+ * Compute a collider's WORLD-space dimensions given the entity's composed
30
+ * world scale (self × ancestors, per-axis, in the entity's own local frame —
31
+ * X/Y/Z order matches `SceneEntity.transform.scale`).
32
+ *
33
+ * @param collider - the entity's authored (unscaled) collider definition.
34
+ * @param worldScale - composed world scale `[x, y, z]`.
35
+ * @param entityLabel - human-readable entity identifier, used only in thrown
36
+ * error messages (loud-failure naming, never silently wrong).
37
+ * @throws if a ball/capsule collider's round cross-section axes have a
38
+ * non-uniform world scale (beyond {@link UNIFORM_SCALE_EPSILON}).
39
+ */
40
+ export function computeColliderWorldDimensions(collider, worldScale, entityLabel) {
41
+ const [sx, sy, sz] = worldScale;
42
+ switch (collider.type) {
43
+ case 'cuboid': {
44
+ const he = collider.halfExtents ?? DEFAULTS.collider.cuboid.halfExtents;
45
+ return { halfExtents: [he[0] * sx, he[1] * sy, he[2] * sz] };
46
+ }
47
+ case 'ball': {
48
+ if (Math.abs(sx - sy) > UNIFORM_SCALE_EPSILON ||
49
+ Math.abs(sy - sz) > UNIFORM_SCALE_EPSILON ||
50
+ Math.abs(sx - sz) > UNIFORM_SCALE_EPSILON) {
51
+ throw new Error(`Entity "${entityLabel}" has a "ball" collider under a non-uniform world scale ` +
52
+ `[${sx}, ${sy}, ${sz}]. Rapier ball colliders are always perfect spheres — a ` +
53
+ `non-uniform scale cannot be represented and would silently simulate the wrong ` +
54
+ `shape. Use a uniform scale on this entity (and every transformed ancestor), or ` +
55
+ `switch to a "cuboid" collider.`);
56
+ }
57
+ const radius = collider.radius ?? DEFAULTS.collider.ball.radius;
58
+ return { radius: radius * sx };
59
+ }
60
+ case 'capsule': {
61
+ // Rapier capsules run their half-height along the local Y axis, with a
62
+ // circular cross-section in the XZ plane — so only X/Z need to match.
63
+ if (Math.abs(sx - sz) > UNIFORM_SCALE_EPSILON) {
64
+ throw new Error(`Entity "${entityLabel}" has a "capsule" collider whose X/Z world scale differs ` +
65
+ `(x=${sx}, z=${sz}). Rapier capsule colliders have a circular cross-section — a ` +
66
+ `non-uniform X/Z scale cannot be represented and would silently simulate the ` +
67
+ `wrong shape. Use a uniform X/Z scale on this entity (and every transformed ` +
68
+ `ancestor), or switch to a "cuboid" collider.`);
69
+ }
70
+ const radius = collider.radius ?? DEFAULTS.collider.capsule.radius;
71
+ const halfHeight = collider.halfHeight ?? DEFAULTS.collider.capsule.halfHeight;
72
+ return { radius: radius * sx, halfHeight: halfHeight * sy };
73
+ }
74
+ default:
75
+ return {};
76
+ }
77
+ }
78
+ /**
79
+ * Compute a collider's WORLD-scaled translation offset (sibling to
80
+ * {@link computeColliderWorldDimensions}, same input contract).
81
+ *
82
+ * Rapier's `ColliderDesc.setTranslation` is a raw physics-engine offset with no
83
+ * notion of a parent Object3D's scale — like dimensions, an authored `offset`
84
+ * (in the entity's own local units) must be scaled per-axis by the entity's
85
+ * composed world scale before being handed to Rapier, or the collider's center
86
+ * silently drifts away from its visual anchor point under any non-1 scale.
87
+ * Applies to every collider type (including trimesh, which is otherwise not
88
+ * handled by {@link computeColliderWorldDimensions}).
89
+ *
90
+ * Returns `undefined` when no offset is authored, mirroring the `if (col.offset)`
91
+ * guard call sites already use.
92
+ */
93
+ export function computeColliderWorldOffset(offset, worldScale) {
94
+ if (!offset)
95
+ return undefined;
96
+ const [sx, sy, sz] = worldScale;
97
+ return [offset[0] * sx, offset[1] * sy, offset[2] * sz];
98
+ }
@@ -0,0 +1,17 @@
1
+ import type * as THREE from 'three';
2
+ import type { ComponentManager } from '../ecs/component-manager';
3
+ import { type GameComponentClass } from '../ecs/game-component';
4
+ /** A registry mapping component names to GameComponent classes. */
5
+ export type ComponentRegistry = Record<string, GameComponentClass>;
6
+ /** Type guard: is this value a GameComponent class? */
7
+ export declare function isGameComponentClass(entry: unknown): entry is GameComponentClass;
8
+ /**
9
+ * Apply components from scene JSON data onto an entity (an Object3D).
10
+ *
11
+ * For each named component: look up its class in the registry, validate +
12
+ * default the authored data through the optional `static schema` (Zod), assign
13
+ * onto a fresh instance, and attach it via the ComponentManager (which wires the
14
+ * Object3D + physics refs and queues init()).
15
+ */
16
+ export declare function applyComponents(registry: ComponentRegistry, object3D: THREE.Object3D, components: Record<string, Record<string, unknown>>, manager: ComponentManager): void;
17
+ //# sourceMappingURL=component-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-registry.d.ts","sourceRoot":"","sources":["../../src/scene/component-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE/E,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEnE,uDAAuD;AACvD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEhF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACnD,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAcN"}
@@ -0,0 +1,28 @@
1
+ import { GameComponent } from '../ecs/game-component';
2
+ /** Type guard: is this value a GameComponent class? */
3
+ export function isGameComponentClass(entry) {
4
+ return typeof entry === 'function' && entry.prototype instanceof GameComponent;
5
+ }
6
+ /**
7
+ * Apply components from scene JSON data onto an entity (an Object3D).
8
+ *
9
+ * For each named component: look up its class in the registry, validate +
10
+ * default the authored data through the optional `static schema` (Zod), assign
11
+ * onto a fresh instance, and attach it via the ComponentManager (which wires the
12
+ * Object3D + physics refs and queues init()).
13
+ */
14
+ export function applyComponents(registry, object3D, components, manager) {
15
+ for (const [name, data] of Object.entries(components)) {
16
+ const Klass = registry[name];
17
+ if (!Klass) {
18
+ throw new Error(`Component "${name}" not found in registry`);
19
+ }
20
+ const parsed = Klass.schema ? Klass.schema.parse(data) : data;
21
+ const inst = new Klass();
22
+ Object.assign(inst, parsed);
23
+ // T5.4: record the registry name + raw authored data so a later `hotSwap`
24
+ // keys on this stable identity (not the live `constructor.name`) and can
25
+ // re-validate `data` against a NEW class version's schema.
26
+ manager.attach(object3D, inst, { key: name, props: data });
27
+ }
28
+ }
@@ -0,0 +1,252 @@
1
+ /** Single source of truth for all scene default values. */
2
+ export declare const DEFAULTS: {
3
+ readonly transform: {
4
+ readonly position: [number, number, number];
5
+ readonly rotation: [number, number, number, number];
6
+ readonly scale: [number, number, number];
7
+ };
8
+ readonly entity: {
9
+ readonly visible: true;
10
+ readonly locked: false;
11
+ readonly pivot: [number, number, number];
12
+ };
13
+ readonly material: {
14
+ readonly type: "standard";
15
+ readonly color: "#888888";
16
+ readonly metalness: 0;
17
+ readonly roughness: 0.5;
18
+ readonly emissive: "#000000";
19
+ readonly emissiveIntensity: 0;
20
+ readonly opacity: 1;
21
+ readonly transparent: false;
22
+ readonly side: "front";
23
+ readonly flatShading: false;
24
+ readonly clearcoat: {
25
+ readonly clearcoat: 1;
26
+ readonly clearcoatRoughness: 0;
27
+ };
28
+ readonly transmission: {
29
+ readonly transmission: 1;
30
+ readonly ior: 1.5;
31
+ readonly thickness: 0.5;
32
+ };
33
+ readonly sheen: {
34
+ readonly sheen: 1;
35
+ readonly sheenColor: "#ffffff";
36
+ readonly sheenRoughness: 0.5;
37
+ };
38
+ readonly iridescence: {
39
+ readonly iridescence: 1;
40
+ readonly iridescenceIOR: 1.3;
41
+ readonly iridescenceThicknessRange: [number, number];
42
+ };
43
+ readonly displacementScale: 1;
44
+ readonly displacementBias: 0;
45
+ };
46
+ readonly light: {
47
+ readonly color: "#ffffff";
48
+ readonly intensity: 1;
49
+ readonly groundColor: "#000000";
50
+ readonly distance: 0;
51
+ readonly angle: number;
52
+ readonly penumbra: 0;
53
+ readonly width: 10;
54
+ readonly height: 10;
55
+ };
56
+ readonly camera: {
57
+ readonly fov: 60;
58
+ readonly near: 0.1;
59
+ readonly far: 1000;
60
+ readonly orthoSize: 5;
61
+ readonly width: 1920;
62
+ readonly height: 1080;
63
+ };
64
+ readonly audio: {
65
+ readonly spatial: true;
66
+ readonly volume: 1;
67
+ readonly refDistance: 1;
68
+ readonly rolloffFactor: 1;
69
+ readonly maxDistance: 10000;
70
+ readonly loop: false;
71
+ readonly autoplay: false;
72
+ };
73
+ readonly collider: {
74
+ readonly cuboid: {
75
+ readonly halfExtents: [number, number, number];
76
+ };
77
+ readonly ball: {
78
+ readonly radius: 0.5;
79
+ };
80
+ readonly capsule: {
81
+ readonly radius: 0.25;
82
+ readonly halfHeight: 0.5;
83
+ };
84
+ };
85
+ readonly shadow: {
86
+ readonly mapSize: 1024;
87
+ };
88
+ readonly animation: {
89
+ readonly loop: true;
90
+ };
91
+ readonly fog: {
92
+ readonly linear: {
93
+ readonly near: 1;
94
+ readonly far: 100;
95
+ };
96
+ readonly exponential: {
97
+ readonly density: 0.01;
98
+ };
99
+ };
100
+ readonly environment: {
101
+ readonly envMapIntensity: 1;
102
+ };
103
+ readonly toneMapping: {
104
+ readonly mode: "aces";
105
+ readonly exposure: 1;
106
+ };
107
+ readonly postProcessing: {
108
+ readonly bloom: {
109
+ readonly intensity: 1;
110
+ readonly luminanceThreshold: 0.9;
111
+ readonly luminanceSmoothing: 0.025;
112
+ };
113
+ readonly vignette: {
114
+ readonly darkness: 0.5;
115
+ readonly offset: 0.5;
116
+ };
117
+ readonly brightnessContrast: {
118
+ readonly brightness: 0;
119
+ readonly contrast: 0;
120
+ };
121
+ readonly hueSaturation: {
122
+ readonly hue: 0;
123
+ readonly saturation: 0;
124
+ };
125
+ readonly sepia: {
126
+ readonly intensity: 1;
127
+ };
128
+ readonly colorDepth: {
129
+ readonly bits: 16;
130
+ };
131
+ readonly chromaticAberration: {
132
+ readonly offsetX: 0.002;
133
+ readonly offsetY: 0.002;
134
+ readonly modulationOffset: 0.15;
135
+ };
136
+ readonly lensDistortion: {
137
+ readonly distortionX: 0;
138
+ readonly distortionY: 0;
139
+ readonly focalLengthX: 1;
140
+ readonly focalLengthY: 1;
141
+ readonly skew: 0;
142
+ };
143
+ readonly depthOfField: {
144
+ readonly worldFocusDistance: 10;
145
+ readonly worldFocusRange: 5;
146
+ readonly bokehScale: 3;
147
+ readonly focalLength: 0.04;
148
+ };
149
+ readonly tiltShift: {
150
+ readonly offset: 0;
151
+ readonly rotation: 0;
152
+ readonly focusArea: 0.4;
153
+ readonly feather: 0.3;
154
+ };
155
+ readonly noise: {
156
+ readonly premultiply: false;
157
+ };
158
+ readonly scanline: {
159
+ readonly density: 1.25;
160
+ };
161
+ readonly dotScreen: {
162
+ readonly angle: 1.57;
163
+ readonly scale: 1;
164
+ };
165
+ readonly grid: {
166
+ readonly scale: 1;
167
+ readonly lineWidth: 0;
168
+ };
169
+ readonly pixelation: {
170
+ readonly granularity: 6;
171
+ };
172
+ readonly glitch: {
173
+ readonly delayX: 1.5;
174
+ readonly delayY: 3.5;
175
+ readonly durationX: 0.6;
176
+ readonly durationY: 1;
177
+ readonly strengthX: 0.3;
178
+ readonly strengthY: 1;
179
+ readonly columns: 0.05;
180
+ readonly ratio: 0.85;
181
+ };
182
+ readonly shockWave: {
183
+ readonly speed: 2;
184
+ readonly maxRadius: 1;
185
+ readonly waveSize: 0.2;
186
+ readonly amplitude: 0.05;
187
+ };
188
+ readonly smaa: {
189
+ readonly preset: "high";
190
+ };
191
+ readonly ssao: {
192
+ readonly radius: 0.05;
193
+ readonly intensity: 2;
194
+ readonly bias: 0.025;
195
+ readonly samples: 16;
196
+ readonly rings: 7;
197
+ readonly fade: 0.01;
198
+ };
199
+ readonly n8ao: {
200
+ readonly aoSamples: 16;
201
+ readonly aoRadius: 5;
202
+ readonly intensity: 5;
203
+ readonly denoiseSamples: 8;
204
+ readonly denoiseRadius: 12;
205
+ readonly distanceFalloff: 1;
206
+ };
207
+ readonly godRays: {
208
+ readonly density: 0.96;
209
+ readonly decay: 0.93;
210
+ readonly weight: 0.4;
211
+ readonly exposure: 0.6;
212
+ readonly samples: 60;
213
+ };
214
+ readonly outline: {
215
+ readonly edgeStrength: 3;
216
+ readonly pulseSpeed: 0;
217
+ readonly visibleEdgeColor: "#ffffff";
218
+ readonly hiddenEdgeColor: "#22090a";
219
+ };
220
+ readonly ssr: {
221
+ readonly intensity: 1;
222
+ readonly exponent: 1;
223
+ readonly distance: 10;
224
+ readonly thickness: 10;
225
+ readonly maxRoughness: 1;
226
+ };
227
+ readonly ssgi: {
228
+ readonly intensity: 1;
229
+ readonly distance: 10;
230
+ readonly thickness: 10;
231
+ readonly maxRoughness: 1;
232
+ };
233
+ readonly motionBlur: {
234
+ readonly intensity: 1;
235
+ readonly jitter: 1;
236
+ readonly samples: 16;
237
+ };
238
+ };
239
+ readonly navigation: {
240
+ readonly cellSize: 0.3;
241
+ readonly cellHeight: 0.2;
242
+ readonly walkableSlopeAngle: 45;
243
+ readonly walkableHeight: 2;
244
+ readonly walkableClimb: 1;
245
+ readonly walkableRadius: 0.5;
246
+ readonly maxEdgeLen: 12;
247
+ readonly maxSimplificationError: 1.3;
248
+ readonly minRegionArea: 8;
249
+ readonly mergeRegionArea: 20;
250
+ };
251
+ };
252
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/scene/defaults.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,eAAO,MAAM,QAAQ;;2BAEM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;2BACrB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;wBACtC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;;;;wBAMxB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAoBD,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAsCjB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8F5D,CAAC"}