@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,171 @@
1
+ /**
2
+ * A single binding for an action.
3
+ *
4
+ * F2 (spec §12 "Complete Device Backends") un-rejects `mouse_move` and
5
+ * `gamepad_axis_pair` — both now have real `InputManager` readers (see that
6
+ * file's `collectPointerDeltaContributions`/`collectVector2Contributions`):
7
+ * - `mouse_move` feeds a `'pointerDelta'`-valueType action with the raw
8
+ * accumulated mouse delta (no deadzone — deltas are not deadzoned, same
9
+ * rule as `test_pointer_delta`), and can ALSO feed a `'vector2'`-valueType
10
+ * action (the same delta, radial-deadzoned + unit-circle-clamped via
11
+ * `deadzone`) — e.g. an alternative look control. It does not feed a
12
+ * `'scalar'` action (no natural single-axis-select field is defined; add
13
+ * one if a real use case needs it).
14
+ * - `gamepad_axis_pair` feeds a `'vector2'`-valueType action with the
15
+ * coupled `(xAxis, yAxis)` reading, radial-deadzoned the same way a real
16
+ * analog stick is (default deadzone 0.15, matching `gamepad_axis`).
17
+ *
18
+ * F2 also adds `touch_button`/`touch_stick` below — the touch/virtual-control
19
+ * backend. Both are driven by `InputManager.setTouchButton`/`setTouchStick`
20
+ * (the injectable entry points a touch-control UI's own touchstart/
21
+ * touchmove/touchend handlers call — that DOM wiring is a thin adapter at
22
+ * the edge, browser-verified separately; the MAPPING here is unit-tested
23
+ * headlessly with no DOM). `sourceId` names the virtual control (a zone/
24
+ * knob id chosen by the touch UI), reusing the same field `test_*` bindings
25
+ * use for their named source — not a real device index.
26
+ */
27
+ export type InputBinding = {
28
+ type: 'key';
29
+ code: string;
30
+ } | {
31
+ type: 'mouse_button';
32
+ button: number;
33
+ } | {
34
+ type: 'mouse_move';
35
+ deadzone?: number;
36
+ } | {
37
+ type: 'gamepad_button';
38
+ button: number;
39
+ } | {
40
+ type: 'gamepad_axis';
41
+ axis: number;
42
+ direction: 'positive' | 'negative';
43
+ deadzone?: number;
44
+ } | {
45
+ type: 'gamepad_axis_pair';
46
+ xAxis: number;
47
+ yAxis: number;
48
+ deadzone?: number;
49
+ } | {
50
+ type: 'test_axis';
51
+ sourceId: string;
52
+ deadzone?: number;
53
+ } | {
54
+ type: 'test_vector2';
55
+ sourceId: string;
56
+ deadzone?: number;
57
+ } | {
58
+ type: 'test_pointer_delta';
59
+ sourceId: string;
60
+ } | {
61
+ type: 'test_pointer_position';
62
+ sourceId: string;
63
+ } | {
64
+ type: 'touch_button';
65
+ sourceId: string;
66
+ } | {
67
+ type: 'touch_stick';
68
+ sourceId: string;
69
+ deadzone?: number;
70
+ };
71
+ /**
72
+ * The value shape an action carries (F1, spec §12 "Define Typed Action Values"):
73
+ * - `'digital'` — boolean, with pressed/justPressed/justReleased edges (InputManager.isPressed
74
+ * et al.). The default when an action omits `valueType` — every action authored before F1
75
+ * is a digital action, so this stays backward compatible.
76
+ * - `'scalar'` — a single float axis (InputManager.getScalar), e.g. a throttle or a single
77
+ * thumbstick axis.
78
+ * - `'vector2'` — a {x,y} axis pair (InputManager.getVector2), e.g. movement/look.
79
+ * - `'pointerDelta'` — a {x,y} per-frame movement delta (InputManager.getPointerDelta),
80
+ * summed across contributing sources, cleared every frame (mirrors the existing
81
+ * mouseDeltaX/Y accumulator's per-frame-reset shape).
82
+ * - `'pointerPosition'` — a {x,y} absolute position (InputManager.getPointerPosition),
83
+ * last-write-wins across contributing sources (position isn't additive).
84
+ */
85
+ export type ActionValueType = 'digital' | 'scalar' | 'vector2' | 'pointerDelta' | 'pointerPosition';
86
+ /** A plain 2D vector — the shared shape for Vector2 axis pairs, pointer delta, and pointer
87
+ * position action values (F1). */
88
+ export interface Vector2 {
89
+ x: number;
90
+ y: number;
91
+ }
92
+ /**
93
+ * Maps an `ActionValueType` to its TS read type. This is the "no `any`" backbone behind
94
+ * `InputManager.readAction` (and, informally, behind each dedicated typed getter returning a
95
+ * concrete, non-`any` type): given a value type known at the call site (a literal, or a type
96
+ * parameter inferred from a caller's own action-value-type map), the return type is exact.
97
+ */
98
+ export type ActionValueOf<T extends ActionValueType> = T extends 'digital' ? boolean : T extends 'scalar' ? number : T extends 'vector2' | 'pointerDelta' | 'pointerPosition' ? Vector2 : never;
99
+ /**
100
+ * Device/source metadata (F1 AC): which binding — and, for gamepad bindings, which connected
101
+ * gamepad, or for injected test bindings, which named source — produced an action's current
102
+ * value. Returned by the `*Source` sibling of each typed getter (e.g. `getScalarSource`).
103
+ */
104
+ export interface ActionValueSource {
105
+ /** The binding kind that produced the current value. */
106
+ bindingType: InputBinding['type'];
107
+ /** Present for `test_axis`/`test_vector2`/`test_pointer_delta`/`test_pointer_position`/
108
+ * `touch_button`/`touch_stick` bindings — the caller-chosen source id passed to the
109
+ * matching `inject*`/`setTouch*` call (F2 reuses this same field for named touch zones,
110
+ * not a real device index). */
111
+ sourceId?: string;
112
+ /** Present for `gamepad_button`/`gamepad_axis`/`gamepad_axis_pair` (F2) bindings — the
113
+ * index into `navigator.getGamepads()` of the gamepad that produced the value. */
114
+ gamepadIndex?: number;
115
+ /** F2 — present alongside `gamepadIndex` for `gamepad_button`/`gamepad_axis`/
116
+ * `gamepad_axis_pair` bindings: the connected gamepad's `Gamepad.id` (device identity,
117
+ * spec §12 F2 "expose device identity"), e.g. a vendor/product string. */
118
+ gamepadId?: string;
119
+ }
120
+ /** An action has a name and one or more bindings */
121
+ export interface InputAction {
122
+ /** Declares this action's value shape (F1). Optional — defaults to `'digital'`, matching
123
+ * every action authored before F1. See `ActionValueType` for the full set. */
124
+ valueType?: ActionValueType;
125
+ bindings: InputBinding[];
126
+ }
127
+ /** The .inputmap.json file format */
128
+ export interface InputMapFile {
129
+ version: number;
130
+ actions: Record<string, InputAction>;
131
+ }
132
+ /**
133
+ * A structural conflict returned by `InputManager.findConflicts` (F3 AC
134
+ * "Conflicts are detected and returned structurally"): a proposed binding
135
+ * would collide with an EXISTING binding already registered on a different
136
+ * action. Never thrown — always a plain data array the caller (typically a
137
+ * rebinding UI) inspects and decides what to do with (block, warn, or let the
138
+ * user override).
139
+ */
140
+ export interface BindingConflict {
141
+ /** The other action whose existing binding collides with the proposed one. */
142
+ actionName: string;
143
+ /** That action's bindings-array index the collision was found at (stable
144
+ * enough to pass straight to `removeBinding`/`replaceBinding` if the UI
145
+ * offers "steal this binding"). */
146
+ bindingIndex: number;
147
+ /** The colliding binding itself. */
148
+ binding: InputBinding;
149
+ }
150
+ /**
151
+ * The coarse input-device family a prompt is being requested for (F3 AC "a
152
+ * current-device prompt API"). Keyboard and mouse are kept distinct — a
153
+ * binding list frequently carries one of each (e.g. `key` for movement,
154
+ * `mouse_button` for fire) and a prompt UI usually wants to show whichever
155
+ * one is bound, not conflate the two.
156
+ */
157
+ export type PromptDevice = 'keyboard' | 'mouse' | 'gamepad' | 'touch';
158
+ /**
159
+ * The resolved display prompt for one action's binding on a given device
160
+ * family (F3 AC: "resolves labels/icons such as `Space`, `A`, or a touch
161
+ * control"). `icon` is a short glyph/name a UI can look up in its own icon
162
+ * set (for keyboard it's the same short label; for gamepad it's the
163
+ * canonical button/glyph name, e.g. `'A'`; the UI decides how to render it).
164
+ */
165
+ export interface BindingPrompt {
166
+ device: PromptDevice;
167
+ bindingType: InputBinding['type'];
168
+ label: string;
169
+ icon: string;
170
+ }
171
+ //# sourceMappingURL=input-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-types.d.ts","sourceRoot":"","sources":["../../src/input/input-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import type { InputBinding, PromptDevice } from './input-types';
2
+ /** Display label for a `KeyboardEvent.code` (F3 AC example: `'Space'`). */
3
+ export declare function keyLabel(code: string): string;
4
+ /** Display label for a `MouseEvent.button` index. */
5
+ export declare function mouseButtonLabel(button: number): string;
6
+ /** W3C Standard Gamepad button-index -> conventional face-button glyph name
7
+ * (F3 AC example: `'A'`). Only meaningful when `Gamepad.mapping === 'standard'`
8
+ * — see `InputManager.getPrompt`, which falls back to a raw index label when
9
+ * the connected pad doesn't report the standard mapping. */
10
+ export declare const STANDARD_GAMEPAD_BUTTON_LABELS: Record<number, string>;
11
+ /** Display label for a single standard-mapping gamepad axis (a `gamepad_axis`
12
+ * binding — one half of a stick, or a trigger). */
13
+ export declare function gamepadAxisLabel(axis: number): string;
14
+ /** Display label for a coupled `gamepad_axis_pair` binding. */
15
+ export declare function gamepadAxisPairLabel(xAxis: number, yAxis: number): string;
16
+ /** Which `PromptDevice` family a binding kind belongs to, or `null` for a
17
+ * binding kind with no real physical device (the synthetic `test_*` kinds —
18
+ * they're an injected-test-input source, never something to prompt a player
19
+ * about). */
20
+ export declare function bindingDeviceFamily(type: InputBinding['type']): PromptDevice | null;
21
+ //# sourceMappingURL=prompt-labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-labels.d.ts","sourceRoot":"","sources":["../../src/input/prompt-labels.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA2BhE,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ7C;AAUD,qDAAqD;AACrD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;6DAG6D;AAC7D,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkBjE,CAAC;AAEF;oDACoD;AACpD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzE;AAED;;;cAGc;AACd,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,YAAY,GAAG,IAAI,CAiBnF"}
@@ -0,0 +1,121 @@
1
+ // F3 (spec §12 "Add Rebinding and Prompts") — the device->label map behind
2
+ // `InputManager.getPrompt`. Pure data + pure functions, no InputManager
3
+ // dependency, so it's independently unit-testable and reusable by a
4
+ // rebinding UI that wants to render a label without going through a live
5
+ // InputManager instance (e.g. previewing a not-yet-applied binding).
6
+ //
7
+ // Labels intentionally favor short, conventional display strings over exact
8
+ // spec names (`'Ctrl'` not `'ControlLeft'`, `'A'` not `'button-0'`) — this is
9
+ // what a HUD prompt or rebinding list actually renders.
10
+ /** `KeyboardEvent.code` values with a friendlier display label than the raw
11
+ * code string. Anything not listed here falls through to `keyLabel`'s
12
+ * `Key*`/`Digit*` stripping, or the raw code as a last resort. */
13
+ const KEY_LABELS = {
14
+ Space: 'Space',
15
+ Escape: 'Esc',
16
+ Enter: 'Enter',
17
+ NumpadEnter: 'Enter',
18
+ Tab: 'Tab',
19
+ Backspace: 'Backspace',
20
+ CapsLock: 'Caps Lock',
21
+ ArrowUp: '↑',
22
+ ArrowDown: '↓',
23
+ ArrowLeft: '←',
24
+ ArrowRight: '→',
25
+ ShiftLeft: 'Shift',
26
+ ShiftRight: 'Shift',
27
+ ControlLeft: 'Ctrl',
28
+ ControlRight: 'Ctrl',
29
+ AltLeft: 'Alt',
30
+ AltRight: 'Alt',
31
+ MetaLeft: 'Meta',
32
+ MetaRight: 'Meta',
33
+ };
34
+ /** Display label for a `KeyboardEvent.code` (F3 AC example: `'Space'`). */
35
+ export function keyLabel(code) {
36
+ const known = KEY_LABELS[code];
37
+ if (known)
38
+ return known;
39
+ if (code.startsWith('Key') && code.length === 4)
40
+ return code.slice(3); // KeyW -> W
41
+ if (code.startsWith('Digit') && code.length === 6)
42
+ return code.slice(5); // Digit1 -> 1
43
+ if (code.startsWith('Numpad'))
44
+ return `Num ${code.slice(6)}`;
45
+ if (code.startsWith('F') && /^F\d+$/.test(code))
46
+ return code; // F1..F12 already short
47
+ return code;
48
+ }
49
+ const MOUSE_BUTTON_LABELS = {
50
+ 0: 'Left Click',
51
+ 1: 'Middle Click',
52
+ 2: 'Right Click',
53
+ 3: 'Mouse 4',
54
+ 4: 'Mouse 5',
55
+ };
56
+ /** Display label for a `MouseEvent.button` index. */
57
+ export function mouseButtonLabel(button) {
58
+ return MOUSE_BUTTON_LABELS[button] ?? `Mouse ${button}`;
59
+ }
60
+ /** W3C Standard Gamepad button-index -> conventional face-button glyph name
61
+ * (F3 AC example: `'A'`). Only meaningful when `Gamepad.mapping === 'standard'`
62
+ * — see `InputManager.getPrompt`, which falls back to a raw index label when
63
+ * the connected pad doesn't report the standard mapping. */
64
+ export const STANDARD_GAMEPAD_BUTTON_LABELS = {
65
+ 0: 'A',
66
+ 1: 'B',
67
+ 2: 'X',
68
+ 3: 'Y',
69
+ 4: 'LB',
70
+ 5: 'RB',
71
+ 6: 'LT',
72
+ 7: 'RT',
73
+ 8: 'Back',
74
+ 9: 'Start',
75
+ 10: 'L3',
76
+ 11: 'R3',
77
+ 12: 'D-Up',
78
+ 13: 'D-Down',
79
+ 14: 'D-Left',
80
+ 15: 'D-Right',
81
+ 16: 'Home',
82
+ };
83
+ /** Display label for a single standard-mapping gamepad axis (a `gamepad_axis`
84
+ * binding — one half of a stick, or a trigger). */
85
+ export function gamepadAxisLabel(axis) {
86
+ if (axis === 0 || axis === 1)
87
+ return 'Left Stick';
88
+ if (axis === 2 || axis === 3)
89
+ return 'Right Stick';
90
+ return `Axis ${axis}`;
91
+ }
92
+ /** Display label for a coupled `gamepad_axis_pair` binding. */
93
+ export function gamepadAxisPairLabel(xAxis, yAxis) {
94
+ if (xAxis === 0 && yAxis === 1)
95
+ return 'Left Stick';
96
+ if (xAxis === 2 && yAxis === 3)
97
+ return 'Right Stick';
98
+ return `Axis ${xAxis}/${yAxis}`;
99
+ }
100
+ /** Which `PromptDevice` family a binding kind belongs to, or `null` for a
101
+ * binding kind with no real physical device (the synthetic `test_*` kinds —
102
+ * they're an injected-test-input source, never something to prompt a player
103
+ * about). */
104
+ export function bindingDeviceFamily(type) {
105
+ switch (type) {
106
+ case 'key':
107
+ return 'keyboard';
108
+ case 'mouse_button':
109
+ case 'mouse_move':
110
+ return 'mouse';
111
+ case 'gamepad_button':
112
+ case 'gamepad_axis':
113
+ case 'gamepad_axis_pair':
114
+ return 'gamepad';
115
+ case 'touch_button':
116
+ case 'touch_stick':
117
+ return 'touch';
118
+ default:
119
+ return null;
120
+ }
121
+ }
@@ -0,0 +1,59 @@
1
+ import type { InputManager } from './input-manager';
2
+ import type { BindingConflict, InputBinding } from './input-types';
3
+ /** How a captured binding is applied once accepted. */
4
+ export type RebindMode = 'replace' | 'add';
5
+ export type RebindState = {
6
+ status: 'idle';
7
+ } | {
8
+ status: 'listening';
9
+ actionName: string;
10
+ mode: RebindMode;
11
+ index: number;
12
+ } | {
13
+ status: 'conflict';
14
+ actionName: string;
15
+ mode: RebindMode;
16
+ index: number;
17
+ proposed: InputBinding;
18
+ conflicts: BindingConflict[];
19
+ } | {
20
+ status: 'applied';
21
+ actionName: string;
22
+ binding: InputBinding;
23
+ };
24
+ export declare class RebindController {
25
+ private readonly input;
26
+ private state;
27
+ constructor(input: InputManager);
28
+ getState(): RebindState;
29
+ /**
30
+ * Enter listening mode for `actionName`. `mode: 'replace'` (default)
31
+ * rebinds the slot at `index` (default 0 — the action's first/primary
32
+ * binding); `mode: 'add'` appends a new binding alongside the existing
33
+ * ones instead (`index` is ignored for `'add'`).
34
+ */
35
+ listen(actionName: string, mode?: RebindMode, index?: number): void;
36
+ /** Abandon listening/a pending conflict with no changes applied. */
37
+ cancel(): void;
38
+ /**
39
+ * Feed a captured raw `InputBinding` while in the `'listening'` state
40
+ * (a no-op returning the current state unchanged otherwise — e.g. a stray
41
+ * keypress arriving after the UI already cancelled). Checks
42
+ * `InputManager.findConflicts` first: a free binding is applied
43
+ * immediately (-> `'applied'`); a colliding one transitions to
44
+ * `'conflict'` instead of applying, so the UI can surface it before
45
+ * anything changes.
46
+ */
47
+ capture(binding: InputBinding): RebindState;
48
+ /**
49
+ * From a `'conflict'` state, apply the pending proposed binding anyway
50
+ * (the UI decided the collision is acceptable, e.g. "steal this binding").
51
+ * Does NOT remove the colliding binding from the other action — that is a
52
+ * separate, explicit `InputManager.removeBinding` call the UI can make
53
+ * first if it wants a true swap. A no-op (returns current state) unless a
54
+ * conflict is pending.
55
+ */
56
+ resolveOverride(): RebindState;
57
+ private apply;
58
+ }
59
+ //# sourceMappingURL=rebind-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rebind-controller.d.ts","sourceRoot":"","sources":["../../src/input/rebind-controller.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnE,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC;AAE3C,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5E;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B,GACD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AAErE,qBAAa,gBAAgB;IAGf,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,KAAK,CAAmC;gBAEnB,KAAK,EAAE,YAAY;IAEhD,QAAQ,IAAI,WAAW;IAIvB;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,UAAsB,EAAE,KAAK,SAAI,GAAG,IAAI;IAIzE,oEAAoE;IACpE,MAAM,IAAI,IAAI;IAId;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW;IAa3C;;;;;;;OAOG;IACH,eAAe,IAAI,WAAW;IAQ9B,OAAO,CAAC,KAAK;CAId"}
@@ -0,0 +1,85 @@
1
+ // F3 (spec §12 "Add Rebinding and Prompts") — a framework-free rebinding
2
+ // STATE MACHINE over an `InputManager`. Deliberately has no dependency on
3
+ // React (or any UI library): "listen for the next input, surface a conflict,
4
+ // let the caller decide" is the same flow whether the caller is the
5
+ // template's `RebindPanel.tsx` (ordinary React, see that file) or any other
6
+ // UI/CLI. Keeping the logic here means it's unit-testable with no DOM/JSX at
7
+ // all, and the React component becomes a thin, mechanically-verifiable
8
+ // wrapper (see the template component's own doc comment).
9
+ //
10
+ // Flow: `listen(actionName)` -> caller captures the next raw input event
11
+ // itself (a keydown, a gamepad poll, a touch tap — capture is inherently
12
+ // device-specific and NOT this class's job) and turns it into an
13
+ // `InputBinding`, then calls `capture(binding)`. If the proposed binding is
14
+ // free, it's applied immediately and the state becomes `'applied'`. If it
15
+ // collides with another action's existing binding (per
16
+ // `InputManager.findConflicts`), the state becomes `'conflict'`, carrying the
17
+ // structured conflict list for the UI to show — the caller then calls either
18
+ // `resolveOverride()` (apply anyway) or `cancel()`.
19
+ export class RebindController {
20
+ input;
21
+ state = { status: 'idle' };
22
+ constructor(input) {
23
+ this.input = input;
24
+ }
25
+ getState() {
26
+ return this.state;
27
+ }
28
+ /**
29
+ * Enter listening mode for `actionName`. `mode: 'replace'` (default)
30
+ * rebinds the slot at `index` (default 0 — the action's first/primary
31
+ * binding); `mode: 'add'` appends a new binding alongside the existing
32
+ * ones instead (`index` is ignored for `'add'`).
33
+ */
34
+ listen(actionName, mode = 'replace', index = 0) {
35
+ this.state = { status: 'listening', actionName, mode, index };
36
+ }
37
+ /** Abandon listening/a pending conflict with no changes applied. */
38
+ cancel() {
39
+ this.state = { status: 'idle' };
40
+ }
41
+ /**
42
+ * Feed a captured raw `InputBinding` while in the `'listening'` state
43
+ * (a no-op returning the current state unchanged otherwise — e.g. a stray
44
+ * keypress arriving after the UI already cancelled). Checks
45
+ * `InputManager.findConflicts` first: a free binding is applied
46
+ * immediately (-> `'applied'`); a colliding one transitions to
47
+ * `'conflict'` instead of applying, so the UI can surface it before
48
+ * anything changes.
49
+ */
50
+ capture(binding) {
51
+ if (this.state.status !== 'listening')
52
+ return this.state;
53
+ const { actionName, mode, index } = this.state;
54
+ const conflicts = this.input.findConflicts(binding, actionName);
55
+ if (conflicts.length > 0) {
56
+ this.state = { status: 'conflict', actionName, mode, index, proposed: binding, conflicts };
57
+ return this.state;
58
+ }
59
+ this.apply(actionName, mode, index, binding);
60
+ this.state = { status: 'applied', actionName, binding };
61
+ return this.state;
62
+ }
63
+ /**
64
+ * From a `'conflict'` state, apply the pending proposed binding anyway
65
+ * (the UI decided the collision is acceptable, e.g. "steal this binding").
66
+ * Does NOT remove the colliding binding from the other action — that is a
67
+ * separate, explicit `InputManager.removeBinding` call the UI can make
68
+ * first if it wants a true swap. A no-op (returns current state) unless a
69
+ * conflict is pending.
70
+ */
71
+ resolveOverride() {
72
+ if (this.state.status !== 'conflict')
73
+ return this.state;
74
+ const { actionName, mode, index, proposed } = this.state;
75
+ this.apply(actionName, mode, index, proposed);
76
+ this.state = { status: 'applied', actionName, binding: proposed };
77
+ return this.state;
78
+ }
79
+ apply(actionName, mode, index, binding) {
80
+ if (mode === 'add')
81
+ this.input.addBinding(actionName, binding);
82
+ else
83
+ this.input.replaceBinding(actionName, index, binding);
84
+ }
85
+ }
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import type { InputAction, InputBinding, InputMapFile } from './input-types';
3
+ /** A single input binding. Every kind listed here is LIVE — F2 (spec §12) closed the last two
4
+ * dead stubs (`mouse_move`/`gamepad_axis_pair`) by giving both real `InputManager` readers. */
5
+ export declare const InputBindingSchema: z.ZodType<InputBinding>;
6
+ /** An action has a name (the record key) and one or more bindings. */
7
+ export declare const InputActionSchema: z.ZodType<InputAction>;
8
+ /**
9
+ * The `.inputmap.json` file format (`InputManager.loadMap`).
10
+ *
11
+ * `version` is RESERVED (no range-check reader exists yet for this format —
12
+ * same convention `2d.version`/`Scene2DSchema` used before T2.3 gave the 3D
13
+ * scene version axis a real reader; see `schema-consumption-map.ts`).
14
+ */
15
+ export declare const InputMapFileSchema: z.ZodType<InputMapFile>;
16
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/input/schema.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AA6L7E;gGACgG;AAChG,eAAO,MAAM,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAa1B,CAAC;AAE9B,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAwBnD,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAK1B,CAAC"}