rn-gamekit 0.1.0 → 0.2.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 (601) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +95 -14
  3. package/lib/module/assets/defineAssets.js +28 -3
  4. package/lib/module/assets/defineAssets.js.map +1 -1
  5. package/lib/module/assets.js +11 -0
  6. package/lib/module/assets.js.map +1 -0
  7. package/lib/module/audio/createGameAudio.js +784 -0
  8. package/lib/module/audio/createGameAudio.js.map +1 -0
  9. package/lib/module/audio/errors.js +12 -0
  10. package/lib/module/audio/errors.js.map +1 -0
  11. package/lib/module/audio/index.js +5 -0
  12. package/lib/module/audio/index.js.map +1 -0
  13. package/lib/module/audio/resolver.js +37 -0
  14. package/lib/module/audio/resolver.js.map +1 -0
  15. package/lib/module/audio/types.js +4 -0
  16. package/lib/module/audio/types.js.map +1 -0
  17. package/lib/module/audio.js +9 -0
  18. package/lib/module/audio.js.map +1 -0
  19. package/lib/module/camera2d/bounds.js +59 -0
  20. package/lib/module/camera2d/bounds.js.map +1 -0
  21. package/lib/module/camera2d/extents.js +25 -0
  22. package/lib/module/camera2d/extents.js.map +1 -0
  23. package/lib/module/camera2d/follow.js +138 -0
  24. package/lib/module/camera2d/follow.js.map +1 -0
  25. package/lib/module/camera2d/index.js +20 -0
  26. package/lib/module/camera2d/index.js.map +1 -0
  27. package/lib/module/camera2d/interpolation.js +98 -0
  28. package/lib/module/camera2d/interpolation.js.map +1 -0
  29. package/lib/module/camera2d/shake.js +85 -0
  30. package/lib/module/camera2d/shake.js.map +1 -0
  31. package/lib/module/camera2d/transform.js +151 -0
  32. package/lib/module/camera2d/transform.js.map +1 -0
  33. package/lib/module/camera2d/types.js +4 -0
  34. package/lib/module/camera2d/types.js.map +1 -0
  35. package/lib/module/camera2d/validation.js +98 -0
  36. package/lib/module/camera2d/validation.js.map +1 -0
  37. package/lib/module/camera2d/visibility.js +138 -0
  38. package/lib/module/camera2d/visibility.js.map +1 -0
  39. package/lib/module/camera2d.js +9 -0
  40. package/lib/module/camera2d.js.map +1 -0
  41. package/lib/module/collision2d/colliders.js +266 -0
  42. package/lib/module/collision2d/colliders.js.map +1 -0
  43. package/lib/module/collision2d/debug.js +105 -0
  44. package/lib/module/collision2d/debug.js.map +1 -0
  45. package/lib/module/collision2d/filters.js +40 -0
  46. package/lib/module/collision2d/filters.js.map +1 -0
  47. package/lib/module/collision2d/index.js +12 -0
  48. package/lib/module/collision2d/index.js.map +1 -0
  49. package/lib/module/collision2d/intersections.js +67 -0
  50. package/lib/module/collision2d/intersections.js.map +1 -0
  51. package/lib/module/collision2d/manifolds.js +218 -0
  52. package/lib/module/collision2d/manifolds.js.map +1 -0
  53. package/lib/module/collision2d/segments.js +187 -0
  54. package/lib/module/collision2d/segments.js.map +1 -0
  55. package/lib/module/collision2d/spatialHash.js +167 -0
  56. package/lib/module/collision2d/spatialHash.js.map +1 -0
  57. package/lib/module/collision2d/sweeps.js +255 -0
  58. package/lib/module/collision2d/sweeps.js.map +1 -0
  59. package/lib/module/collision2d.js +9 -0
  60. package/lib/module/collision2d.js.map +1 -0
  61. package/lib/module/core/input/buttonPad.js +214 -0
  62. package/lib/module/core/input/buttonPad.js.map +1 -0
  63. package/lib/module/core/input/createInputBuffer.js +66 -14
  64. package/lib/module/core/input/createInputBuffer.js.map +1 -1
  65. package/lib/module/core/session/createGameSession.js +454 -50
  66. package/lib/module/core/session/createGameSession.js.map +1 -1
  67. package/lib/module/core/session/deepFreeze.js +92 -2
  68. package/lib/module/core/session/deepFreeze.js.map +1 -1
  69. package/lib/module/core/session/types.js +12 -0
  70. package/lib/module/core/session/types.js.map +1 -1
  71. package/lib/module/definition/defineGame.js +23 -0
  72. package/lib/module/definition/defineGame.js.map +1 -1
  73. package/lib/module/events/defineGameEvents.js +46 -0
  74. package/lib/module/events/defineGameEvents.js.map +1 -0
  75. package/lib/module/events/errors.js +16 -0
  76. package/lib/module/events/errors.js.map +1 -0
  77. package/lib/module/events/index.js +7 -0
  78. package/lib/module/events/index.js.map +1 -0
  79. package/lib/module/events/payload.js +219 -0
  80. package/lib/module/events/payload.js.map +1 -0
  81. package/lib/module/events/seed.js +33 -0
  82. package/lib/module/events/seed.js.map +1 -0
  83. package/lib/module/events/types.js +4 -0
  84. package/lib/module/events/types.js.map +1 -0
  85. package/lib/module/events.js +13 -0
  86. package/lib/module/events.js.map +1 -0
  87. package/lib/module/geometry/helpers.js +140 -0
  88. package/lib/module/geometry/helpers.js.map +1 -0
  89. package/lib/module/geometry/index.js +5 -0
  90. package/lib/module/geometry/index.js.map +1 -0
  91. package/lib/module/geometry/validation.js +104 -0
  92. package/lib/module/geometry/validation.js.map +1 -0
  93. package/lib/module/geometry.js +9 -0
  94. package/lib/module/geometry.js.map +1 -0
  95. package/lib/module/haptics/createGameHaptics.js +214 -0
  96. package/lib/module/haptics/createGameHaptics.js.map +1 -0
  97. package/lib/module/haptics/errors.js +12 -0
  98. package/lib/module/haptics/errors.js.map +1 -0
  99. package/lib/module/haptics/index.js +5 -0
  100. package/lib/module/haptics/index.js.map +1 -0
  101. package/lib/module/haptics/resolver.js +37 -0
  102. package/lib/module/haptics/resolver.js.map +1 -0
  103. package/lib/module/haptics/types.js +4 -0
  104. package/lib/module/haptics/types.js.map +1 -0
  105. package/lib/module/haptics.js +9 -0
  106. package/lib/module/haptics.js.map +1 -0
  107. package/lib/module/index.js +8 -1
  108. package/lib/module/index.js.map +1 -1
  109. package/lib/module/particles/createParticleSystem.js +481 -0
  110. package/lib/module/particles/createParticleSystem.js.map +1 -0
  111. package/lib/module/particles/defineParticleEffect.js +178 -0
  112. package/lib/module/particles/defineParticleEffect.js.map +1 -0
  113. package/lib/module/particles/errors.js +9 -0
  114. package/lib/module/particles/errors.js.map +1 -0
  115. package/lib/module/particles/index.js +8 -0
  116. package/lib/module/particles/index.js.map +1 -0
  117. package/lib/module/particles/sampling.js +121 -0
  118. package/lib/module/particles/sampling.js.map +1 -0
  119. package/lib/module/particles/types.js +4 -0
  120. package/lib/module/particles/types.js.map +1 -0
  121. package/lib/module/particles.js +4 -0
  122. package/lib/module/particles.js.map +1 -0
  123. package/lib/module/react/GameButtonPad.js +344 -0
  124. package/lib/module/react/GameButtonPad.js.map +1 -0
  125. package/lib/module/react/GamePointerInput.js +74 -16
  126. package/lib/module/react/GamePointerInput.js.map +1 -1
  127. package/lib/module/react/GameView.js +139 -60
  128. package/lib/module/react/GameView.js.map +1 -1
  129. package/lib/module/react/assets/createGameAssetStore.js +145 -95
  130. package/lib/module/react/assets/createGameAssetStore.js.map +1 -1
  131. package/lib/module/react/assets/useGameAssets.js +60 -35
  132. package/lib/module/react/assets/useGameAssets.js.map +1 -1
  133. package/lib/module/react/bindAppLifecycle.js +46 -17
  134. package/lib/module/react/bindAppLifecycle.js.map +1 -1
  135. package/lib/module/react/bindGameSession.js +13 -2
  136. package/lib/module/react/bindGameSession.js.map +1 -1
  137. package/lib/module/react/camera2d/GameLayer2D.js +50 -0
  138. package/lib/module/react/camera2d/GameLayer2D.js.map +1 -0
  139. package/lib/module/react/camera2d/defineGameCamera2D.js +30 -0
  140. package/lib/module/react/camera2d/defineGameCamera2D.js.map +1 -0
  141. package/lib/module/react/camera2d/usePresentedCameraBinding.js +177 -0
  142. package/lib/module/react/camera2d/usePresentedCameraBinding.js.map +1 -0
  143. package/lib/module/react/cleanupList.js +38 -0
  144. package/lib/module/react/cleanupList.js.map +1 -0
  145. package/lib/module/react/lifecycleSource.js +49 -0
  146. package/lib/module/react/lifecycleSource.js.map +1 -0
  147. package/lib/module/react/particles/ParticleView.js +308 -0
  148. package/lib/module/react/particles/ParticleView.js.map +1 -0
  149. package/lib/module/react/particles/culling.js +115 -0
  150. package/lib/module/react/particles/culling.js.map +1 -0
  151. package/lib/module/react/particles/index.js +7 -0
  152. package/lib/module/react/particles/index.js.map +1 -0
  153. package/lib/module/react/particles/spriteXForm.js +45 -0
  154. package/lib/module/react/particles/spriteXForm.js.map +1 -0
  155. package/lib/module/react/particles/useParticlePresentation.js +204 -0
  156. package/lib/module/react/particles/useParticlePresentation.js.map +1 -0
  157. package/lib/module/react/pointerBinding.js +55 -17
  158. package/lib/module/react/pointerBinding.js.map +1 -1
  159. package/lib/module/react/pointerCamera.js +28 -0
  160. package/lib/module/react/pointerCamera.js.map +1 -0
  161. package/lib/module/react/pointerCoalescer.js +16 -9
  162. package/lib/module/react/pointerCoalescer.js.map +1 -1
  163. package/lib/module/react/sprites/GameSprite.js +5 -17
  164. package/lib/module/react/sprites/GameSprite.js.map +1 -1
  165. package/lib/module/react/sprites/GameWorld2D.js +112 -9
  166. package/lib/module/react/sprites/GameWorld2D.js.map +1 -1
  167. package/lib/module/react/sprites/Sprite.js +48 -63
  168. package/lib/module/react/sprites/Sprite.js.map +1 -1
  169. package/lib/module/react/sprites/SpriteBatch.js +53 -28
  170. package/lib/module/react/sprites/SpriteBatch.js.map +1 -1
  171. package/lib/module/react/sprites/batchVisibility.js +58 -0
  172. package/lib/module/react/sprites/batchVisibility.js.map +1 -0
  173. package/lib/module/react/sprites/spriteSelection.js +103 -0
  174. package/lib/module/react/sprites/spriteSelection.js.map +1 -0
  175. package/lib/module/react/sprites/spriteTransform.js +46 -25
  176. package/lib/module/react/sprites/spriteTransform.js.map +1 -1
  177. package/lib/module/react/tilemap/TileMapLayer2D.js +217 -0
  178. package/lib/module/react/tilemap/TileMapLayer2D.js.map +1 -0
  179. package/lib/module/react/tilemap/tilePresentation.js +374 -0
  180. package/lib/module/react/tilemap/tilePresentation.js.map +1 -0
  181. package/lib/module/react/useGameSession.js +70 -0
  182. package/lib/module/react/useGameSession.js.map +1 -0
  183. package/lib/module/react/useGameSessionStatus.js +46 -0
  184. package/lib/module/react/useGameSessionStatus.js.map +1 -0
  185. package/lib/module/react/viewportBinding.js +5 -1
  186. package/lib/module/react/viewportBinding.js.map +1 -1
  187. package/lib/module/react.js +12 -1
  188. package/lib/module/react.js.map +1 -1
  189. package/lib/module/scene/defineScene.js +17 -0
  190. package/lib/module/scene/defineScene.js.map +1 -1
  191. package/lib/module/sprites/sampleSpriteClip.js +66 -6
  192. package/lib/module/sprites/sampleSpriteClip.js.map +1 -1
  193. package/lib/module/sprites/spriteAnimationState.js +10 -20
  194. package/lib/module/sprites/spriteAnimationState.js.map +1 -1
  195. package/lib/module/sprites.js +11 -0
  196. package/lib/module/sprites.js.map +1 -0
  197. package/lib/module/storage/adapters/asyncStorage.js +57 -0
  198. package/lib/module/storage/adapters/asyncStorage.js.map +1 -0
  199. package/lib/module/storage/adapters/memory.js +50 -0
  200. package/lib/module/storage/adapters/memory.js.map +1 -0
  201. package/lib/module/storage/errors.js +34 -0
  202. package/lib/module/storage/errors.js.map +1 -0
  203. package/lib/module/storage/index.js +11 -0
  204. package/lib/module/storage/index.js.map +1 -0
  205. package/lib/module/storage/schema.js +151 -0
  206. package/lib/module/storage/schema.js.map +1 -0
  207. package/lib/module/storage/serialization.js +249 -0
  208. package/lib/module/storage/serialization.js.map +1 -0
  209. package/lib/module/storage/store.js +387 -0
  210. package/lib/module/storage/store.js.map +1 -0
  211. package/lib/module/storage/types.js +16 -0
  212. package/lib/module/storage/types.js.map +1 -0
  213. package/lib/module/storage/validation.js +111 -0
  214. package/lib/module/storage/validation.js.map +1 -0
  215. package/lib/module/storage.js +4 -0
  216. package/lib/module/storage.js.map +1 -0
  217. package/lib/module/testing.js +4 -0
  218. package/lib/module/testing.js.map +1 -1
  219. package/lib/module/tilemap/chunkStats.js +27 -0
  220. package/lib/module/tilemap/chunkStats.js.map +1 -0
  221. package/lib/module/tilemap/definitions.js +308 -0
  222. package/lib/module/tilemap/definitions.js.map +1 -0
  223. package/lib/module/tilemap/errors.js +13 -0
  224. package/lib/module/tilemap/errors.js.map +1 -0
  225. package/lib/module/tilemap/index.js +10 -0
  226. package/lib/module/tilemap/index.js.map +1 -0
  227. package/lib/module/tilemap/movement.js +379 -0
  228. package/lib/module/tilemap/movement.js.map +1 -0
  229. package/lib/module/tilemap/queries.js +114 -0
  230. package/lib/module/tilemap/queries.js.map +1 -0
  231. package/lib/module/tilemap/tiledAdapter.js +141 -0
  232. package/lib/module/tilemap/tiledAdapter.js.map +1 -0
  233. package/lib/module/tilemap/types.js +4 -0
  234. package/lib/module/tilemap/types.js.map +1 -0
  235. package/lib/module/tilemap.js +4 -0
  236. package/lib/module/tilemap.js.map +1 -0
  237. package/lib/typescript/src/assets/defineAssets.d.ts +1 -1
  238. package/lib/typescript/src/assets/defineAssets.d.ts.map +1 -1
  239. package/lib/typescript/src/assets.d.ts +11 -0
  240. package/lib/typescript/src/assets.d.ts.map +1 -0
  241. package/lib/typescript/src/audio/createGameAudio.d.ts +5 -0
  242. package/lib/typescript/src/audio/createGameAudio.d.ts.map +1 -0
  243. package/lib/typescript/src/audio/errors.d.ts +6 -0
  244. package/lib/typescript/src/audio/errors.d.ts.map +1 -0
  245. package/lib/typescript/src/audio/index.d.ts +4 -0
  246. package/lib/typescript/src/audio/index.d.ts.map +1 -0
  247. package/lib/typescript/src/audio/resolver.d.ts +44 -0
  248. package/lib/typescript/src/audio/resolver.d.ts.map +1 -0
  249. package/lib/typescript/src/audio/types.d.ts +42 -0
  250. package/lib/typescript/src/audio/types.d.ts.map +1 -0
  251. package/lib/typescript/src/audio.d.ts +8 -0
  252. package/lib/typescript/src/audio.d.ts.map +1 -0
  253. package/lib/typescript/src/camera2d/bounds.d.ts +25 -0
  254. package/lib/typescript/src/camera2d/bounds.d.ts.map +1 -0
  255. package/lib/typescript/src/camera2d/extents.d.ts +17 -0
  256. package/lib/typescript/src/camera2d/extents.d.ts.map +1 -0
  257. package/lib/typescript/src/camera2d/follow.d.ts +24 -0
  258. package/lib/typescript/src/camera2d/follow.d.ts.map +1 -0
  259. package/lib/typescript/src/camera2d/index.d.ts +19 -0
  260. package/lib/typescript/src/camera2d/index.d.ts.map +1 -0
  261. package/lib/typescript/src/camera2d/interpolation.d.ts +17 -0
  262. package/lib/typescript/src/camera2d/interpolation.d.ts.map +1 -0
  263. package/lib/typescript/src/camera2d/shake.d.ts +20 -0
  264. package/lib/typescript/src/camera2d/shake.d.ts.map +1 -0
  265. package/lib/typescript/src/camera2d/transform.d.ts +44 -0
  266. package/lib/typescript/src/camera2d/transform.d.ts.map +1 -0
  267. package/lib/typescript/src/camera2d/types.d.ts +74 -0
  268. package/lib/typescript/src/camera2d/types.d.ts.map +1 -0
  269. package/lib/typescript/src/camera2d/validation.d.ts +30 -0
  270. package/lib/typescript/src/camera2d/validation.d.ts.map +1 -0
  271. package/lib/typescript/src/camera2d/visibility.d.ts +47 -0
  272. package/lib/typescript/src/camera2d/visibility.d.ts.map +1 -0
  273. package/lib/typescript/src/camera2d.d.ts +7 -0
  274. package/lib/typescript/src/camera2d.d.ts.map +1 -0
  275. package/lib/typescript/src/collision2d/colliders.d.ts +120 -0
  276. package/lib/typescript/src/collision2d/colliders.d.ts.map +1 -0
  277. package/lib/typescript/src/collision2d/debug.d.ts +67 -0
  278. package/lib/typescript/src/collision2d/debug.d.ts.map +1 -0
  279. package/lib/typescript/src/collision2d/filters.d.ts +28 -0
  280. package/lib/typescript/src/collision2d/filters.d.ts.map +1 -0
  281. package/lib/typescript/src/collision2d/index.d.ts +17 -0
  282. package/lib/typescript/src/collision2d/index.d.ts.map +1 -0
  283. package/lib/typescript/src/collision2d/intersections.d.ts +24 -0
  284. package/lib/typescript/src/collision2d/intersections.d.ts.map +1 -0
  285. package/lib/typescript/src/collision2d/manifolds.d.ts +39 -0
  286. package/lib/typescript/src/collision2d/manifolds.d.ts.map +1 -0
  287. package/lib/typescript/src/collision2d/segments.d.ts +24 -0
  288. package/lib/typescript/src/collision2d/segments.d.ts.map +1 -0
  289. package/lib/typescript/src/collision2d/spatialHash.d.ts +50 -0
  290. package/lib/typescript/src/collision2d/spatialHash.d.ts.map +1 -0
  291. package/lib/typescript/src/collision2d/sweeps.d.ts +60 -0
  292. package/lib/typescript/src/collision2d/sweeps.d.ts.map +1 -0
  293. package/lib/typescript/src/collision2d.d.ts +7 -0
  294. package/lib/typescript/src/collision2d.d.ts.map +1 -0
  295. package/lib/typescript/src/core/input/buttonPad.d.ts +59 -0
  296. package/lib/typescript/src/core/input/buttonPad.d.ts.map +1 -0
  297. package/lib/typescript/src/core/input/createInputBuffer.d.ts +1 -1
  298. package/lib/typescript/src/core/input/createInputBuffer.d.ts.map +1 -1
  299. package/lib/typescript/src/core/input/types.d.ts +7 -0
  300. package/lib/typescript/src/core/input/types.d.ts.map +1 -1
  301. package/lib/typescript/src/core/session/createGameSession.d.ts +4 -2
  302. package/lib/typescript/src/core/session/createGameSession.d.ts.map +1 -1
  303. package/lib/typescript/src/core/session/deepFreeze.d.ts +21 -1
  304. package/lib/typescript/src/core/session/deepFreeze.d.ts.map +1 -1
  305. package/lib/typescript/src/core/session/diagnostics.d.ts +2 -0
  306. package/lib/typescript/src/core/session/diagnostics.d.ts.map +1 -1
  307. package/lib/typescript/src/core/session/types.d.ts +69 -4
  308. package/lib/typescript/src/core/session/types.d.ts.map +1 -1
  309. package/lib/typescript/src/definition/defineGame.d.ts +12 -1
  310. package/lib/typescript/src/definition/defineGame.d.ts.map +1 -1
  311. package/lib/typescript/src/definition/types.d.ts +10 -1
  312. package/lib/typescript/src/definition/types.d.ts.map +1 -1
  313. package/lib/typescript/src/events/defineGameEvents.d.ts +26 -0
  314. package/lib/typescript/src/events/defineGameEvents.d.ts.map +1 -0
  315. package/lib/typescript/src/events/errors.d.ts +12 -0
  316. package/lib/typescript/src/events/errors.d.ts.map +1 -0
  317. package/lib/typescript/src/events/index.d.ts +6 -0
  318. package/lib/typescript/src/events/index.d.ts.map +1 -0
  319. package/lib/typescript/src/events/payload.d.ts +21 -0
  320. package/lib/typescript/src/events/payload.d.ts.map +1 -0
  321. package/lib/typescript/src/events/seed.d.ts +3 -0
  322. package/lib/typescript/src/events/seed.d.ts.map +1 -0
  323. package/lib/typescript/src/events/types.d.ts +42 -0
  324. package/lib/typescript/src/events/types.d.ts.map +1 -0
  325. package/lib/typescript/src/events.d.ts +12 -0
  326. package/lib/typescript/src/events.d.ts.map +1 -0
  327. package/lib/typescript/src/geometry/helpers.d.ts +35 -0
  328. package/lib/typescript/src/geometry/helpers.d.ts.map +1 -0
  329. package/lib/typescript/src/geometry/index.d.ts +4 -0
  330. package/lib/typescript/src/geometry/index.d.ts.map +1 -0
  331. package/lib/typescript/src/geometry/types.d.ts +49 -0
  332. package/lib/typescript/src/geometry/types.d.ts.map +1 -1
  333. package/lib/typescript/src/geometry/validation.d.ts +44 -0
  334. package/lib/typescript/src/geometry/validation.d.ts.map +1 -0
  335. package/lib/typescript/src/geometry.d.ts +7 -0
  336. package/lib/typescript/src/geometry.d.ts.map +1 -0
  337. package/lib/typescript/src/haptics/createGameHaptics.d.ts +3 -0
  338. package/lib/typescript/src/haptics/createGameHaptics.d.ts.map +1 -0
  339. package/lib/typescript/src/haptics/errors.d.ts +6 -0
  340. package/lib/typescript/src/haptics/errors.d.ts.map +1 -0
  341. package/lib/typescript/src/haptics/index.d.ts +4 -0
  342. package/lib/typescript/src/haptics/index.d.ts.map +1 -0
  343. package/lib/typescript/src/haptics/resolver.d.ts +22 -0
  344. package/lib/typescript/src/haptics/resolver.d.ts.map +1 -0
  345. package/lib/typescript/src/haptics/types.d.ts +37 -0
  346. package/lib/typescript/src/haptics/types.d.ts.map +1 -0
  347. package/lib/typescript/src/haptics.d.ts +8 -0
  348. package/lib/typescript/src/haptics.d.ts.map +1 -0
  349. package/lib/typescript/src/index.d.ts +10 -2
  350. package/lib/typescript/src/index.d.ts.map +1 -1
  351. package/lib/typescript/src/particles/createParticleSystem.d.ts +5 -0
  352. package/lib/typescript/src/particles/createParticleSystem.d.ts.map +1 -0
  353. package/lib/typescript/src/particles/defineParticleEffect.d.ts +3 -0
  354. package/lib/typescript/src/particles/defineParticleEffect.d.ts.map +1 -0
  355. package/lib/typescript/src/particles/errors.d.ts +5 -0
  356. package/lib/typescript/src/particles/errors.d.ts.map +1 -0
  357. package/lib/typescript/src/particles/index.d.ts +6 -0
  358. package/lib/typescript/src/particles/index.d.ts.map +1 -0
  359. package/lib/typescript/src/particles/sampling.d.ts +54 -0
  360. package/lib/typescript/src/particles/sampling.d.ts.map +1 -0
  361. package/lib/typescript/src/particles/types.d.ts +292 -0
  362. package/lib/typescript/src/particles/types.d.ts.map +1 -0
  363. package/lib/typescript/src/particles.d.ts +2 -0
  364. package/lib/typescript/src/particles.d.ts.map +1 -0
  365. package/lib/typescript/src/react/GameButtonPad.d.ts +84 -0
  366. package/lib/typescript/src/react/GameButtonPad.d.ts.map +1 -0
  367. package/lib/typescript/src/react/GamePointerInput.d.ts.map +1 -1
  368. package/lib/typescript/src/react/GameView.d.ts +27 -1
  369. package/lib/typescript/src/react/GameView.d.ts.map +1 -1
  370. package/lib/typescript/src/react/assets/createGameAssetStore.d.ts.map +1 -1
  371. package/lib/typescript/src/react/assets/useGameAssets.d.ts.map +1 -1
  372. package/lib/typescript/src/react/bindAppLifecycle.d.ts +7 -1
  373. package/lib/typescript/src/react/bindAppLifecycle.d.ts.map +1 -1
  374. package/lib/typescript/src/react/bindGameSession.d.ts.map +1 -1
  375. package/lib/typescript/src/react/camera2d/GameLayer2D.d.ts +24 -0
  376. package/lib/typescript/src/react/camera2d/GameLayer2D.d.ts.map +1 -0
  377. package/lib/typescript/src/react/camera2d/defineGameCamera2D.d.ts +44 -0
  378. package/lib/typescript/src/react/camera2d/defineGameCamera2D.d.ts.map +1 -0
  379. package/lib/typescript/src/react/camera2d/usePresentedCameraBinding.d.ts +22 -0
  380. package/lib/typescript/src/react/camera2d/usePresentedCameraBinding.d.ts.map +1 -0
  381. package/lib/typescript/src/react/cleanupList.d.ts +21 -0
  382. package/lib/typescript/src/react/cleanupList.d.ts.map +1 -0
  383. package/lib/typescript/src/react/instrumentation.d.ts +33 -3
  384. package/lib/typescript/src/react/instrumentation.d.ts.map +1 -1
  385. package/lib/typescript/src/react/lifecycleSource.d.ts +21 -0
  386. package/lib/typescript/src/react/lifecycleSource.d.ts.map +1 -0
  387. package/lib/typescript/src/react/particles/ParticleView.d.ts +65 -0
  388. package/lib/typescript/src/react/particles/ParticleView.d.ts.map +1 -0
  389. package/lib/typescript/src/react/particles/culling.d.ts +70 -0
  390. package/lib/typescript/src/react/particles/culling.d.ts.map +1 -0
  391. package/lib/typescript/src/react/particles/index.d.ts +7 -0
  392. package/lib/typescript/src/react/particles/index.d.ts.map +1 -0
  393. package/lib/typescript/src/react/particles/spriteXForm.d.ts +28 -0
  394. package/lib/typescript/src/react/particles/spriteXForm.d.ts.map +1 -0
  395. package/lib/typescript/src/react/particles/useParticlePresentation.d.ts +48 -0
  396. package/lib/typescript/src/react/particles/useParticlePresentation.d.ts.map +1 -0
  397. package/lib/typescript/src/react/pointerBinding.d.ts +38 -8
  398. package/lib/typescript/src/react/pointerBinding.d.ts.map +1 -1
  399. package/lib/typescript/src/react/pointerCamera.d.ts +20 -0
  400. package/lib/typescript/src/react/pointerCamera.d.ts.map +1 -0
  401. package/lib/typescript/src/react/pointerCoalescer.d.ts +17 -1
  402. package/lib/typescript/src/react/pointerCoalescer.d.ts.map +1 -1
  403. package/lib/typescript/src/react/sprites/GameSprite.d.ts +3 -10
  404. package/lib/typescript/src/react/sprites/GameSprite.d.ts.map +1 -1
  405. package/lib/typescript/src/react/sprites/GameWorld2D.d.ts +51 -6
  406. package/lib/typescript/src/react/sprites/GameWorld2D.d.ts.map +1 -1
  407. package/lib/typescript/src/react/sprites/Sprite.d.ts.map +1 -1
  408. package/lib/typescript/src/react/sprites/SpriteBatch.d.ts +22 -1
  409. package/lib/typescript/src/react/sprites/SpriteBatch.d.ts.map +1 -1
  410. package/lib/typescript/src/react/sprites/batchVisibility.d.ts +28 -0
  411. package/lib/typescript/src/react/sprites/batchVisibility.d.ts.map +1 -0
  412. package/lib/typescript/src/react/sprites/spriteSelection.d.ts +58 -0
  413. package/lib/typescript/src/react/sprites/spriteSelection.d.ts.map +1 -0
  414. package/lib/typescript/src/react/sprites/spriteTransform.d.ts +27 -12
  415. package/lib/typescript/src/react/sprites/spriteTransform.d.ts.map +1 -1
  416. package/lib/typescript/src/react/tilemap/TileMapLayer2D.d.ts +69 -0
  417. package/lib/typescript/src/react/tilemap/TileMapLayer2D.d.ts.map +1 -0
  418. package/lib/typescript/src/react/tilemap/tilePresentation.d.ts +217 -0
  419. package/lib/typescript/src/react/tilemap/tilePresentation.d.ts.map +1 -0
  420. package/lib/typescript/src/react/useGameSession.d.ts +48 -0
  421. package/lib/typescript/src/react/useGameSession.d.ts.map +1 -0
  422. package/lib/typescript/src/react/useGameSessionStatus.d.ts +23 -0
  423. package/lib/typescript/src/react/useGameSessionStatus.d.ts.map +1 -0
  424. package/lib/typescript/src/react/viewportBinding.d.ts +5 -1
  425. package/lib/typescript/src/react/viewportBinding.d.ts.map +1 -1
  426. package/lib/typescript/src/react.d.ts +18 -1
  427. package/lib/typescript/src/react.d.ts.map +1 -1
  428. package/lib/typescript/src/scene/defineScene.d.ts +22 -2
  429. package/lib/typescript/src/scene/defineScene.d.ts.map +1 -1
  430. package/lib/typescript/src/scene/types.d.ts +24 -4
  431. package/lib/typescript/src/scene/types.d.ts.map +1 -1
  432. package/lib/typescript/src/sprites/sampleSpriteClip.d.ts +26 -2
  433. package/lib/typescript/src/sprites/sampleSpriteClip.d.ts.map +1 -1
  434. package/lib/typescript/src/sprites/spriteAnimationState.d.ts +6 -7
  435. package/lib/typescript/src/sprites/spriteAnimationState.d.ts.map +1 -1
  436. package/lib/typescript/src/sprites.d.ts +10 -0
  437. package/lib/typescript/src/sprites.d.ts.map +1 -0
  438. package/lib/typescript/src/storage/adapters/asyncStorage.d.ts +18 -0
  439. package/lib/typescript/src/storage/adapters/asyncStorage.d.ts.map +1 -0
  440. package/lib/typescript/src/storage/adapters/memory.d.ts +16 -0
  441. package/lib/typescript/src/storage/adapters/memory.d.ts.map +1 -0
  442. package/lib/typescript/src/storage/errors.d.ts +37 -0
  443. package/lib/typescript/src/storage/errors.d.ts.map +1 -0
  444. package/lib/typescript/src/storage/index.d.ts +11 -0
  445. package/lib/typescript/src/storage/index.d.ts.map +1 -0
  446. package/lib/typescript/src/storage/schema.d.ts +22 -0
  447. package/lib/typescript/src/storage/schema.d.ts.map +1 -0
  448. package/lib/typescript/src/storage/serialization.d.ts +23 -0
  449. package/lib/typescript/src/storage/serialization.d.ts.map +1 -0
  450. package/lib/typescript/src/storage/store.d.ts +3 -0
  451. package/lib/typescript/src/storage/store.d.ts.map +1 -0
  452. package/lib/typescript/src/storage/types.d.ts +69 -0
  453. package/lib/typescript/src/storage/types.d.ts.map +1 -0
  454. package/lib/typescript/src/storage/validation.d.ts +24 -0
  455. package/lib/typescript/src/storage/validation.d.ts.map +1 -0
  456. package/lib/typescript/src/storage.d.ts +2 -0
  457. package/lib/typescript/src/storage.d.ts.map +1 -0
  458. package/lib/typescript/src/testing.d.ts +1 -0
  459. package/lib/typescript/src/testing.d.ts.map +1 -1
  460. package/lib/typescript/src/tilemap/chunkStats.d.ts +14 -0
  461. package/lib/typescript/src/tilemap/chunkStats.d.ts.map +1 -0
  462. package/lib/typescript/src/tilemap/definitions.d.ts +38 -0
  463. package/lib/typescript/src/tilemap/definitions.d.ts.map +1 -0
  464. package/lib/typescript/src/tilemap/errors.d.ts +7 -0
  465. package/lib/typescript/src/tilemap/errors.d.ts.map +1 -0
  466. package/lib/typescript/src/tilemap/index.d.ts +8 -0
  467. package/lib/typescript/src/tilemap/index.d.ts.map +1 -0
  468. package/lib/typescript/src/tilemap/movement.d.ts +52 -0
  469. package/lib/typescript/src/tilemap/movement.d.ts.map +1 -0
  470. package/lib/typescript/src/tilemap/queries.d.ts +21 -0
  471. package/lib/typescript/src/tilemap/queries.d.ts.map +1 -0
  472. package/lib/typescript/src/tilemap/tiledAdapter.d.ts +32 -0
  473. package/lib/typescript/src/tilemap/tiledAdapter.d.ts.map +1 -0
  474. package/lib/typescript/src/tilemap/types.d.ts +127 -0
  475. package/lib/typescript/src/tilemap/types.d.ts.map +1 -0
  476. package/lib/typescript/src/tilemap.d.ts +2 -0
  477. package/lib/typescript/src/tilemap.d.ts.map +1 -0
  478. package/package.json +94 -4
  479. package/src/assets/defineAssets.ts +31 -5
  480. package/src/assets.ts +27 -0
  481. package/src/audio/createGameAudio.ts +749 -0
  482. package/src/audio/errors.ts +12 -0
  483. package/src/audio/index.ts +9 -0
  484. package/src/audio/resolver.ts +74 -0
  485. package/src/audio/types.ts +47 -0
  486. package/src/audio.ts +13 -0
  487. package/src/camera2d/bounds.ts +69 -0
  488. package/src/camera2d/extents.ts +25 -0
  489. package/src/camera2d/follow.ts +165 -0
  490. package/src/camera2d/index.ts +29 -0
  491. package/src/camera2d/interpolation.ts +113 -0
  492. package/src/camera2d/shake.ts +90 -0
  493. package/src/camera2d/transform.ts +148 -0
  494. package/src/camera2d/types.ts +73 -0
  495. package/src/camera2d/validation.ts +126 -0
  496. package/src/camera2d/visibility.ts +181 -0
  497. package/src/camera2d.ts +6 -0
  498. package/src/collision2d/colliders.ts +292 -0
  499. package/src/collision2d/debug.ts +133 -0
  500. package/src/collision2d/filters.ts +48 -0
  501. package/src/collision2d/index.ts +74 -0
  502. package/src/collision2d/intersections.ts +82 -0
  503. package/src/collision2d/manifolds.ts +191 -0
  504. package/src/collision2d/segments.ts +176 -0
  505. package/src/collision2d/spatialHash.ts +211 -0
  506. package/src/collision2d/sweeps.ts +269 -0
  507. package/src/collision2d.ts +6 -0
  508. package/src/core/input/buttonPad.ts +235 -0
  509. package/src/core/input/createInputBuffer.ts +95 -14
  510. package/src/core/input/types.ts +7 -0
  511. package/src/core/session/createGameSession.ts +480 -53
  512. package/src/core/session/deepFreeze.ts +104 -3
  513. package/src/core/session/diagnostics.ts +2 -0
  514. package/src/core/session/types.ts +77 -4
  515. package/src/definition/defineGame.ts +61 -3
  516. package/src/definition/types.ts +10 -0
  517. package/src/events/defineGameEvents.ts +46 -0
  518. package/src/events/errors.ts +14 -0
  519. package/src/events/index.ts +14 -0
  520. package/src/events/payload.ts +234 -0
  521. package/src/events/seed.ts +33 -0
  522. package/src/events/types.ts +53 -0
  523. package/src/events.ts +20 -0
  524. package/src/geometry/helpers.ts +136 -0
  525. package/src/geometry/index.ts +14 -0
  526. package/src/geometry/types.ts +54 -0
  527. package/src/geometry/validation.ts +131 -0
  528. package/src/geometry.ts +6 -0
  529. package/src/haptics/createGameHaptics.ts +214 -0
  530. package/src/haptics/errors.ts +12 -0
  531. package/src/haptics/index.ts +3 -0
  532. package/src/haptics/resolver.ts +58 -0
  533. package/src/haptics/types.ts +48 -0
  534. package/src/haptics.ts +7 -0
  535. package/src/index.ts +37 -1
  536. package/src/particles/createParticleSystem.ts +505 -0
  537. package/src/particles/defineParticleEffect.ts +164 -0
  538. package/src/particles/errors.ts +6 -0
  539. package/src/particles/index.ts +5 -0
  540. package/src/particles/sampling.ts +141 -0
  541. package/src/particles/types.ts +327 -0
  542. package/src/particles.ts +1 -0
  543. package/src/react/GameButtonPad.tsx +436 -0
  544. package/src/react/GamePointerInput.tsx +73 -8
  545. package/src/react/GameView.tsx +160 -61
  546. package/src/react/assets/createGameAssetStore.ts +140 -107
  547. package/src/react/assets/useGameAssets.ts +63 -31
  548. package/src/react/bindAppLifecycle.ts +55 -19
  549. package/src/react/bindGameSession.ts +12 -2
  550. package/src/react/camera2d/GameLayer2D.tsx +43 -0
  551. package/src/react/camera2d/defineGameCamera2D.ts +59 -0
  552. package/src/react/camera2d/usePresentedCameraBinding.ts +185 -0
  553. package/src/react/cleanupList.ts +48 -0
  554. package/src/react/instrumentation.ts +31 -3
  555. package/src/react/lifecycleSource.ts +58 -0
  556. package/src/react/particles/ParticleView.tsx +358 -0
  557. package/src/react/particles/culling.ts +145 -0
  558. package/src/react/particles/index.ts +6 -0
  559. package/src/react/particles/spriteXForm.ts +72 -0
  560. package/src/react/particles/useParticlePresentation.ts +261 -0
  561. package/src/react/pointerBinding.ts +74 -16
  562. package/src/react/pointerCamera.ts +33 -0
  563. package/src/react/pointerCoalescer.ts +36 -10
  564. package/src/react/sprites/GameSprite.tsx +4 -33
  565. package/src/react/sprites/GameWorld2D.tsx +113 -7
  566. package/src/react/sprites/Sprite.tsx +51 -72
  567. package/src/react/sprites/SpriteBatch.tsx +74 -22
  568. package/src/react/sprites/batchVisibility.ts +76 -0
  569. package/src/react/sprites/spriteSelection.ts +133 -0
  570. package/src/react/sprites/spriteTransform.ts +46 -26
  571. package/src/react/tilemap/TileMapLayer2D.tsx +274 -0
  572. package/src/react/tilemap/tilePresentation.ts +491 -0
  573. package/src/react/useGameSession.ts +90 -0
  574. package/src/react/useGameSessionStatus.ts +53 -0
  575. package/src/react/viewportBinding.ts +5 -1
  576. package/src/react.ts +18 -1
  577. package/src/scene/defineScene.ts +47 -5
  578. package/src/scene/types.ts +37 -3
  579. package/src/sprites/sampleSpriteClip.ts +82 -14
  580. package/src/sprites/spriteAnimationState.ts +29 -25
  581. package/src/sprites.ts +22 -0
  582. package/src/storage/adapters/asyncStorage.ts +77 -0
  583. package/src/storage/adapters/memory.ts +58 -0
  584. package/src/storage/errors.ts +88 -0
  585. package/src/storage/index.ts +18 -0
  586. package/src/storage/schema.ts +147 -0
  587. package/src/storage/serialization.ts +248 -0
  588. package/src/storage/store.ts +380 -0
  589. package/src/storage/types.ts +76 -0
  590. package/src/storage/validation.ts +102 -0
  591. package/src/storage.ts +1 -0
  592. package/src/testing.ts +4 -0
  593. package/src/tilemap/chunkStats.ts +24 -0
  594. package/src/tilemap/definitions.ts +327 -0
  595. package/src/tilemap/errors.ts +11 -0
  596. package/src/tilemap/index.ts +10 -0
  597. package/src/tilemap/movement.ts +368 -0
  598. package/src/tilemap/queries.ts +136 -0
  599. package/src/tilemap/tiledAdapter.ts +165 -0
  600. package/src/tilemap/types.ts +119 -0
  601. package/src/tilemap.ts +1 -0
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ import { tileError } from "./errors.js";
4
+
5
+ /**
6
+ * Narrow Tiled JSON adapter (T16.5, hardened per T16-F6).
7
+ *
8
+ * Accepts ONLY the finite orthogonal subset used by the reference level:
9
+ * - `orientation: "orthogonal"`, `infinite: false`
10
+ * - `layers` of `type: "tilelayer"` with inline numeric `data` (no base64,
11
+ * no compression, no chunks)
12
+ * - EVERY other layer type (objectgroup, group, imagelayer, ...) is rejected
13
+ * with its exact source path — nothing silently disappears
14
+ * - Nonzero `offsetx`/`offsety` are rejected (v1 has no layer offsets)
15
+ * - No per-tile flips (high GID bits) — rejected with a source path
16
+ *
17
+ * The root value, options object, and every layer entry are validated BEFORE
18
+ * any property access, so malformed input always surfaces as a structured
19
+ * TileMapError instead of a TypeError. Raw Tiled JSON never enters
20
+ * fixed-step or rendering hot paths; the output is a normalized Gamekit map
21
+ * input.
22
+ */
23
+
24
+ function reject(cond, path, message) {
25
+ if (cond) throw tileError(path, message);
26
+ }
27
+ function assertPlainObject(value, path) {
28
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
29
+ throw tileError(path, `expected an object; got ${value === null ? 'null' : Array.isArray(value) ? 'array' : typeof value}`);
30
+ }
31
+ }
32
+ export function parseTiledMap2D(json, tileset, options) {
33
+ // Validate inputs BEFORE any property access (T16-F6).
34
+ assertPlainObject(json, 'root');
35
+ assertPlainObject(options, 'options');
36
+ const gidMap = options.gidToTileName;
37
+ if (gidMap === null || typeof gidMap !== 'object' || Array.isArray(gidMap)) {
38
+ throw tileError('options.gidToTileName', 'must be an object mapping gids to tile names');
39
+ }
40
+ if (options.layerIds !== undefined) {
41
+ if (!Array.isArray(options.layerIds)) throw tileError('options.layerIds', 'must be an array of layer names');
42
+ for (let i = 0; i < options.layerIds.length; i++) {
43
+ if (typeof options.layerIds[i] !== 'string') {
44
+ throw tileError(`options.layerIds[${i}]`, 'must be a string');
45
+ }
46
+ }
47
+ }
48
+ if (options.collidableLayers !== undefined) {
49
+ if (!Array.isArray(options.collidableLayers)) throw tileError('options.collidableLayers', 'must be an array of layer names');
50
+ for (let i = 0; i < options.collidableLayers.length; i++) {
51
+ if (typeof options.collidableLayers[i] !== 'string') {
52
+ throw tileError(`options.collidableLayers[${i}]`, 'must be a string');
53
+ }
54
+ }
55
+ }
56
+ if (tileset === undefined || tileset.idOfName === undefined) {
57
+ throw tileError('tileset', 'must be a value produced by defineTileSet2D');
58
+ }
59
+ const root = json;
60
+ reject(root.orientation !== 'orthogonal', 'root.orientation', `only "orthogonal" is supported; got ${JSON.stringify(root.orientation)}`);
61
+ reject(root.infinite === true, 'root.infinite', 'infinite maps are not supported in v1');
62
+ const width = root.width;
63
+ const height = root.height;
64
+ reject(typeof width !== 'number' || !Number.isSafeInteger(width) || width <= 0, 'root.width', 'must be a positive integer');
65
+ reject(typeof height !== 'number' || !Number.isSafeInteger(height) || height <= 0, 'root.height', 'must be a positive integer');
66
+ const tw = root.tilewidth;
67
+ const th = root.tileheight;
68
+ reject(typeof tw !== 'number' || !Number.isFinite(tw) || tw <= 0, 'root.tilewidth', 'must be finite and > 0');
69
+ reject(typeof th !== 'number' || !Number.isFinite(th) || th <= 0, 'root.tileheight', 'must be finite and > 0');
70
+ reject(!Array.isArray(root.layers), 'root.layers', 'must be an array of layer objects');
71
+ const layersRaw = root.layers;
72
+ const wanted = options.layerIds;
73
+ const collidableLayers = options.collidableLayers;
74
+ const layers = [];
75
+ layersRaw.forEach((rawLayerUnknown, index) => {
76
+ assertPlainObject(rawLayerUnknown, `layers[${index}]`);
77
+ const layer = rawLayerUnknown;
78
+ const rawType = layer.type;
79
+ reject(typeof rawType !== 'string', `layers[${index}].type`, `must be a string layer type; got ${JSON.stringify(rawType)}`);
80
+ // T16-F6: tilelayer is the ONLY accepted type — every other layer type
81
+ // (objectgroup, group, imagelayer, unknown future types) is rejected
82
+ // with its exact source path instead of being silently skipped.
83
+ reject(rawType !== 'tilelayer', `layers[${index}](${JSON.stringify(String(layer.name ?? ''))}).type`, `"${String(rawType)}" layers are not supported in v1`);
84
+ const name = typeof layer.name === 'string' && layer.name.length > 0 ? layer.name : `layer${index}`;
85
+ if (wanted !== undefined && !wanted.includes(name)) return;
86
+ const p = `layers[${index}](${JSON.stringify(name)})`;
87
+ // T16-F6: nonzero layer offsets change cell placement — rejected, not ignored.
88
+ reject(layer.offsetx !== undefined && layer.offsetx !== 0, `${p}.offsetx`, `nonzero layer offsets are not supported in v1; got ${JSON.stringify(layer.offsetx)}`);
89
+ reject(layer.offsety !== undefined && layer.offsety !== 0, `${p}.offsety`, `nonzero layer offsets are not supported in v1; got ${JSON.stringify(layer.offsety)}`);
90
+ reject(layer.encoding !== undefined && layer.encoding !== 'csv', `${p}.encoding`, `only inline CSV-free numeric arrays are supported; got ${JSON.stringify(layer.encoding)}`);
91
+ reject(layer.compression !== undefined, `${p}.compression`, 'compressed layers are not supported in v1');
92
+ reject(layer.chunks !== undefined, `${p}.chunks`, 'chunked (infinite) layers are not supported in v1');
93
+ reject(!Array.isArray(layer.data), `${p}.data`, 'must be an inline array of gids');
94
+ const layerWidth = layer.width;
95
+ const layerHeight = layer.height;
96
+ reject(layerWidth !== width, `${p}.width`, `must equal map width ${String(width)}`);
97
+ reject(layerHeight !== height, `${p}.height`, `must equal map height ${String(height)}`);
98
+ const gidData = layer.data;
99
+ reject(gidData.length !== width * height, `${p}.data`, `length must equal width*height (${String(width)}*${String(height)})`);
100
+
101
+ // Convert gids -> Gamekit ids. Flip bits unsupported.
102
+ const out = new Array(gidData.length);
103
+ for (let i = 0; i < gidData.length; i++) {
104
+ const rawUnknown = gidData[i];
105
+ const raw = typeof rawUnknown === 'number' ? rawUnknown : -1;
106
+ reject(!Number.isSafeInteger(raw) || raw < 0, `${p}.data[${i}]`, `must be a non-negative safe integer; got ${JSON.stringify(rawUnknown)}`);
107
+ if (raw === 0) {
108
+ out[i] = 0;
109
+ continue;
110
+ }
111
+ const FLIP_BITS = 0x80000000 | 0x40000000 | 0x20000000;
112
+ reject((raw & FLIP_BITS) !== 0, `${p}.data[${i}]`, 'per-tile flip/rotation flags are not supported in v1');
113
+ const mapped = gidMap[raw];
114
+ reject(mapped === undefined, `${p}.data[${i}]`, `gid ${raw} has no mapping in gidToTileName`);
115
+ const gamekitId = tileset.idOfName[mapped] ?? -1;
116
+ reject(gamekitId === -1, `${p}.data[${i}]`, `mapped tile name ${JSON.stringify(mapped)} is missing from the bound tileset`);
117
+ out[i] = gamekitId;
118
+ }
119
+ layers.push({
120
+ id: name,
121
+ width: width,
122
+ height: height,
123
+ data: out,
124
+ collidable: collidableLayers ? collidableLayers.includes(name) : true
125
+ });
126
+ });
127
+ reject(layers.length === 0, 'layers', 'no tilelayers matched; at least one is required');
128
+ return {
129
+ cellSize: {
130
+ width: tw,
131
+ height: th
132
+ },
133
+ tileset,
134
+ layers,
135
+ origin: {
136
+ x: 0,
137
+ y: 0
138
+ }
139
+ };
140
+ }
141
+ //# sourceMappingURL=tiledAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["tileError","reject","cond","path","message","assertPlainObject","value","Array","isArray","parseTiledMap2D","json","tileset","options","gidMap","gidToTileName","layerIds","undefined","i","length","collidableLayers","idOfName","root","orientation","JSON","stringify","infinite","width","height","Number","isSafeInteger","tw","tilewidth","th","tileheight","isFinite","layers","layersRaw","wanted","forEach","rawLayerUnknown","index","layer","rawType","type","String","name","includes","p","offsetx","offsety","encoding","compression","chunks","data","layerWidth","layerHeight","gidData","out","rawUnknown","raw","FLIP_BITS","mapped","gamekitId","push","id","collidable","cellSize","origin","x","y"],"sourceRoot":"../../../src","sources":["tilemap/tiledAdapter.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["tilemap/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export * from "./tilemap/index.js";
4
+ //# sourceMappingURL=tilemap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["tilemap.ts"],"mappings":";;AAAA,cAAc,oBAAiB","ignoreList":[]}
@@ -6,7 +6,7 @@ export declare function image(source: number): ImageDescriptor;
6
6
  * clips. Frame and clip names are preserved as string literals; clip frame
7
7
  * references are restricted to the declared frames.
8
8
  */
9
- export declare function spriteSheet<TFrames extends Record<string, SpriteFrameRect>, TClips extends Record<string, SpriteClip<Extract<keyof TFrames, string>>>>(source: number, spec: {
9
+ export declare function spriteSheet<const TFrames extends Record<string, SpriteFrameRect>, const TClips extends Record<string, SpriteClip<Extract<keyof TFrames, string>>>>(source: number, spec: {
10
10
  readonly frames: TFrames;
11
11
  readonly animations: TClips;
12
12
  }): SpriteSheetDescriptor<TFrames, TClips>;
@@ -1 +1 @@
1
- {"version":3,"file":"defineAssets.d.ts","sourceRoot":"","sources":["../../../../src/assets/defineAssets.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,eAAe,EACf,qBAAqB,EACtB,MAAM,YAAS,CAAC;AAEjB,qEAAqE;AACrE,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAGrD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC/C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAEzE,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IACJ,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,GACA,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CASxC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,SAAS,aAAa,EACxD,MAAM,EAAE,OAAO,GACd,iBAAiB,CAAC,OAAO,CAAC,CAI5B"}
1
+ {"version":3,"file":"defineAssets.d.ts","sourceRoot":"","sources":["../../../../src/assets/defineAssets.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,eAAe,EACf,qBAAqB,EACtB,MAAM,YAAS,CAAC;AAEjB,qEAAqE;AACrE,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAGrD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,KAAK,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACrD,KAAK,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAE/E,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IACJ,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,GACA,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAqBxC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,SAAS,aAAa,EACxD,MAAM,EAAE,OAAO,GACd,iBAAiB,CAAC,OAAO,CAAC,CAU5B"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Subpath entry for `rn-gamekit/assets`.
3
+ *
4
+ * Asset manifest definitions and public descriptor types — no React hooks,
5
+ * Skia decoding, or Expo Asset acquisition.
6
+ */
7
+ export { defineAssets, image, spriteSheet } from './assets/defineAssets.js';
8
+ export { GameAssetError } from './assets/errors.js';
9
+ export type { GameAssetErrorCode } from './assets/errors.js';
10
+ export type { AssetDescriptor, AssetGroup, AssetGroupMap, AssetSourceHandle, BrandedAssetDescriptor, GameAssetLease, GameAssetManifest, ImageDescriptor, LoadedAssets, LoadedImage, LoadedSpriteSheet, ManifestOf, SpriteAnimationMode, SpriteClip, SpriteFrameRect, SpriteSheetDescriptor, } from './assets/types.js';
11
+ //# sourceMappingURL=assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/assets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,0BAAuB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAiB,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAiB,CAAC;AAC1D,YAAY,EACV,eAAe,EACf,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,qBAAqB,GACtB,MAAM,mBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { AudioSoundRecord, CreateGameAudioOptions, GameAudio } from './types.js';
2
+ export declare function __setAssetInputLoader(fn: ((assetId: number) => Promise<number | string | ArrayBuffer>) | null): void;
3
+ export declare function __getAssetInputLoader(): ((assetId: number) => Promise<number | string | ArrayBuffer>) | null;
4
+ export declare function createGameAudio<T extends AudioSoundRecord>(options: CreateGameAudioOptions<T>): Promise<GameAudio<T>>;
5
+ //# sourceMappingURL=createGameAudio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createGameAudio.d.ts","sourceRoot":"","sources":["../../../../src/audio/createGameAudio.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,gBAAgB,EAAE,sBAAsB,EAAE,SAAS,EAAwB,MAAM,YAAS,CAAC;AA4BxH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,GAAG,IAAI,GACvE,IAAI,CAEN;AAED,wBAAgB,qBAAqB,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,GAAG,IAAI,CAE5G;AAED,wBAAsB,eAAe,CAAC,CAAC,SAAS,gBAAgB,EAC9D,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAksBvB"}
@@ -0,0 +1,6 @@
1
+ export declare class GameAudioError extends Error {
2
+ name: string;
3
+ constructor(message: string);
4
+ }
5
+ export declare function createAudioInstallationError(): GameAudioError;
6
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/audio/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;IAC9B,IAAI,SAAoB;gBACrB,OAAO,EAAE,MAAM;CAG5B;AAED,wBAAgB,4BAA4B,IAAI,cAAc,CAI7D"}
@@ -0,0 +1,4 @@
1
+ export { createGameAudio } from './createGameAudio.js';
2
+ export { GameAudioError } from './errors.js';
3
+ export type { AudioCategory, AudioSoundRecord, CreateGameAudioOptions, GameAudio, GameAudioPlayOptions, } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/audio/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAU,CAAC;AAC1C,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,SAAS,EACT,oBAAoB,GACrB,MAAM,YAAS,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Injectable resolver for the optional `react-native-audio-api` peer.
3
+ *
4
+ * Production code calls `loadAudioApi()` which does a dynamic `import()`.
5
+ * Tests inject a fake via `__setAudioApiLoader` to simulate a missing peer
6
+ * without relying on a production fallback object.
7
+ */
8
+ export type LoadedAudioApi = {
9
+ AudioContext: new (options?: {
10
+ sampleRate?: number;
11
+ }) => {
12
+ readonly state: 'running' | 'suspended' | 'closed';
13
+ readonly currentTime: number;
14
+ readonly destination: unknown;
15
+ readonly sampleRate: number;
16
+ decodeAudioData(input: number | string | ArrayBuffer): Promise<{
17
+ length: number;
18
+ duration: number;
19
+ } & Record<string, unknown>>;
20
+ createBufferSource(): {
21
+ buffer: unknown | null;
22
+ loop: boolean;
23
+ connect(destination: unknown): void;
24
+ start(when?: number, offset?: number, duration?: number): void;
25
+ stop(when?: number): void;
26
+ addEventListener?(type: string, cb: () => void): void;
27
+ };
28
+ createGain(): unknown;
29
+ suspend(): Promise<void>;
30
+ resume(): Promise<void>;
31
+ close(): Promise<void>;
32
+ };
33
+ AudioManager: {
34
+ getDevicePreferredSampleRate(): number;
35
+ addSystemEventListener(name: 'interruption' | 'volumeChange' | 'duck' | 'routeChange', cb: (event: unknown) => void): {
36
+ remove(): void;
37
+ subscriptionId?: string;
38
+ };
39
+ observeAudioInterruptions(param: unknown): void;
40
+ } | undefined;
41
+ };
42
+ export declare function __setAudioApiLoader(fn: (() => Promise<LoadedAudioApi>) | null): void;
43
+ export declare function loadAudioApi(): Promise<LoadedAudioApi>;
44
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../src/audio/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,KAAK,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK;QACvD,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;QACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;QAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/H,kBAAkB,IAAI;YACpB,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;YACvB,IAAI,EAAE,OAAO,CAAC;YACd,OAAO,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAC1B,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;SACvD,CAAC;QACF,UAAU,IAAI,OAAO,CAAC;QACtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KACxB,CAAC;IACF,YAAY,EAAE;QACZ,4BAA4B,IAAI,MAAM,CAAC;QACvC,sBAAsB,CACpB,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,MAAM,GAAG,aAAa,EAC9D,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAC3B;YAAE,MAAM,IAAI,IAAI,CAAC;YAAC,cAAc,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;KACjD,GAAG,SAAS,CAAC;CACf,CAAC;AAIF,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAEpF;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,CA8B5D"}
@@ -0,0 +1,42 @@
1
+ export type AudioCategory = 'master' | 'music' | 'sfx' | 'ui';
2
+ import type { GameLifecycleSource } from '../core/session/types.js';
3
+ export type AudioSoundRecord = Record<string, number>;
4
+ export interface CreateGameAudioOptions<T extends AudioSoundRecord> {
5
+ readonly sounds: T;
6
+ }
7
+ export interface GameAudioPlayOptions {
8
+ readonly category?: AudioCategory;
9
+ readonly volume?: number;
10
+ readonly loop?: boolean;
11
+ readonly concurrency?: {
12
+ readonly key?: string;
13
+ readonly limit?: number;
14
+ readonly overflow?: 'drop-new' | 'stop-oldest';
15
+ };
16
+ }
17
+ export interface GameAudio<T extends AudioSoundRecord = AudioSoundRecord> {
18
+ play<K extends keyof T & string>(id: K, options?: GameAudioPlayOptions): void;
19
+ playMusic<K extends keyof T & string>(id: K): Promise<void>;
20
+ stopMusic(): void;
21
+ pause(): void;
22
+ resume(): void;
23
+ setVolume(category: AudioCategory, volume: number): void;
24
+ getVolume(category: AudioCategory): number;
25
+ setMuted(muted: boolean): void;
26
+ isMuted(): boolean;
27
+ /**
28
+ * Session-driven pause (GS-AUDIO-04): follows the bound session status,
29
+ * independent of the manual pause()/resume() hold, app backgrounding,
30
+ * interruption, and mute — any reason suspends.
31
+ */
32
+ setPaused(paused: boolean): void;
33
+ /**
34
+ * Bind one session lifecycle source (GS-AUDIO-04, mirrors haptics):
35
+ * applies the current status immediately, follows transitions, and
36
+ * detaches any previously bound source. Returns an idempotent detach.
37
+ * All subscriptions disappear on disposal.
38
+ */
39
+ bindLifecycle(source: GameLifecycleSource): () => void;
40
+ dispose(): void;
41
+ }
42
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/audio/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;AAG9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAAuB,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtD,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,gBAAgB;IAChE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;KAChD,CAAC;CACH;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB;IACtE,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC9E,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,SAAS,IAAI,IAAI,CAAC;IAClB,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,IAAI,CAAC;IACf,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,OAAO,IAAI,OAAO,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,IAAI,CAAC;IACvD,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Subpath entry for `rn-gamekit/audio`.
3
+ * Importing `rn-gamekit` or `rn-gamekit/react` must not load this module.
4
+ */
5
+ export { createGameAudio } from './audio/createGameAudio.js';
6
+ export { GameAudioError } from './audio/errors.js';
7
+ export type { AudioCategory, AudioSoundRecord, CreateGameAudioOptions, GameAudio, GameAudioPlayOptions, } from './audio/types.js';
8
+ //# sourceMappingURL=audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../src/audio.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAAyB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAgB,CAAC;AAChD,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,SAAS,EACT,oBAAoB,GACrB,MAAM,kBAAe,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Camera2D world-bounds clamping (T12.2).
3
+ *
4
+ * Keeps the visible camera region inside an authored world bound at the
5
+ * current zoom, using conservative enclosing-AABB containment for rotated
6
+ * views (frozen in T12.0): stable near boundaries, never jittering, and
7
+ * centering axes where the world is smaller than the view.
8
+ */
9
+ import type { Aabb2D } from '../geometry/types.js';
10
+ import type { Camera2D } from './types.js';
11
+ /** Half-extents of the rotated visible rect, in world units. */
12
+ export declare function cameraHalfExtents2D(camera: Camera2D, logicalView: Aabb2D): {
13
+ x: number;
14
+ y: number;
15
+ };
16
+ /**
17
+ * Clamp a camera so its visible region stays inside `worldBounds`.
18
+ *
19
+ * Conservative for rotated views: the enclosing AABB of the rotated
20
+ * visible rect is contained, so no part of the view leaves the world. An
21
+ * axis whose world is smaller than the view is centered rather than
22
+ * oscillating between impossible edges.
23
+ */
24
+ export declare function clampCameraBounds2D(camera: Camera2D, worldBounds: Aabb2D, logicalView: Aabb2D): Camera2D;
25
+ //# sourceMappingURL=bounds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounds.d.ts","sourceRoot":"","sources":["../../../../src/camera2d/bounds.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAS,CAAC;AAIxC,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAEnG;AAWD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,QAAQ,EAChB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,QAAQ,CA4BV"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Shared rotated half-extent arithmetic (GS-CAMERA-03).
3
+ *
4
+ * The conservative enclosing half-extents of a rotated visible rect:
5
+ * `ex = |hx·cosθ| + |hy·sinθ|`, `ey = |hx·sinθ| + |hy·cosθ|`.
6
+ *
7
+ * Trusted scalars only: no validation, no errors, worklet-safe. Callers
8
+ * validate at their own boundary (headless paths with the camera
9
+ * validators) or consume already-validated values (UI paths that must
10
+ * never construct errors per frame). Padding, parallax, and centering
11
+ * stay per-system and explicit.
12
+ */
13
+ export declare function rotatedHalfExtents2D(halfWidth: number, halfHeight: number, rotationRadians: number): {
14
+ readonly x: number;
15
+ readonly y: number;
16
+ };
17
+ //# sourceMappingURL=extents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extents.d.ts","sourceRoot":"","sources":["../../../../src/camera2d/extents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,GACtB;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAQ5C"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Camera2D follow behavior (T12.2).
3
+ *
4
+ * Deterministic, headless follow helpers for game update code. They never
5
+ * read a React ref, device clock, frame callback, or global singleton;
6
+ * games call them inside the scene update and store the returned camera in
7
+ * scene state.
8
+ */
9
+ import type { Point2D } from '../geometry/types.js';
10
+ import type { Camera2D, FollowCamera2DOptions2D } from './types.js';
11
+ /**
12
+ * Compute the next camera for a follow target.
13
+ *
14
+ * - Without options: direct follow — the camera center becomes the target.
15
+ * - With a dead zone: the camera moves only when the target crosses the
16
+ * zone edge, by exactly the amount needed to bring the target back to
17
+ * the edge.
18
+ * - `perAxis` disables following on either axis.
19
+ * - `dampingHalfLifeSeconds` blends toward the desired center with a
20
+ * half-life model; equivalent fixed-step schedules produce equivalent
21
+ * results.
22
+ */
23
+ export declare function followCamera2D(camera: Camera2D, target: Point2D, options?: FollowCamera2DOptions2D, deltaSeconds?: number): Camera2D;
24
+ //# sourceMappingURL=follow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"follow.d.ts","sourceRoot":"","sources":["../../../../src/camera2d/follow.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,sBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,YAAS,CAAC;AAuCjE;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,uBAAuB,EACjC,YAAY,CAAC,EAAE,MAAM,GACpB,QAAQ,CAkGV"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Camera2D — the opt-in 2D camera system (Task 12).
3
+ *
4
+ * Pure, headless, native-free camera math shared by rendering and pointer
5
+ * input: immutable camera values, forward and inverse transforms, follow,
6
+ * bounds clamping, deterministic shake, presentation interpolation, and
7
+ * conservative visibility culling. The React integration
8
+ * (`defineGameCamera2D`, `GameView`, `GameWorld2D`, `GameLayer2D`) lives in
9
+ * `src/react/`.
10
+ */
11
+ export { createCamera2D, getCameraVisibleBounds2D, logicalToWorld2D, worldToLogical2D, worldToSurface2D, surfaceToWorld2D } from './transform.js';
12
+ export { interpolateCamera2D, interpolateCameraScalar2D, shortestRotationDelta2D } from './interpolation.js';
13
+ export { followCamera2D } from './follow.js';
14
+ export { clampCameraBounds2D, cameraHalfExtents2D } from './bounds.js';
15
+ export { rotatedHalfExtents2D } from './extents.js';
16
+ export { sampleCameraShake2D } from './shake.js';
17
+ export { filterCameraVisible2D, intersectsCameraView2D, paddedCameraBounds2D, type CameraViewShape2D, } from './visibility.js';
18
+ export type { Camera2D, CameraCut2D, CameraFollowAxisOptions2D, CameraShakeOptions2D, FollowCamera2DOptions2D, } from './types.js';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/camera2d/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAa,CAAC;AAC/I,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,oBAAiB,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,aAAU,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAU,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAW,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAS,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,iBAAiB,GACvB,MAAM,iBAAc,CAAC;AACtB,YAAY,EACV,QAAQ,EACR,WAAW,EACX,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,YAAS,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Camera2D, CameraCut2D } from './types.js';
2
+ /**
3
+ * Trusted scalar projector (worklet-safe): interpolates center and zoom
4
+ * linearly and rotation across the shortest angular arc. A changed `cutId`
5
+ * (or an absent previous cut) snaps to the current camera. No validation,
6
+ * no allocation of structured errors.
7
+ */
8
+ export declare function interpolateCameraScalar2D(previous: CameraCut2D | undefined, current: CameraCut2D, alpha: number): Camera2D;
9
+ /** The shortest signed angular difference from `from` to `to`. */
10
+ export declare function shortestRotationDelta2D(from: number, to: number): number;
11
+ /**
12
+ * Public interpolated camera: validates every input, clamps the alpha
13
+ * policy (reject outside `[0, 1]`), and returns a frozen value. Delegates
14
+ * to the trusted scalar projector.
15
+ */
16
+ export declare function interpolateCamera2D(previous: CameraCut2D | undefined, current: CameraCut2D, alpha: number): Camera2D;
17
+ //# sourceMappingURL=interpolation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolation.d.ts","sourceRoot":"","sources":["../../../../src/camera2d/interpolation.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAS,CAAC;AA4BrD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,GACZ,QAAQ,CAqBV;AAED,kEAAkE;AAClE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAQxE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,GACZ,QAAQ,CAmBV"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Camera2D deterministic shake (T12.2).
3
+ *
4
+ * Shake is reproducible from explicit state: a seed, elapsed simulation
5
+ * time, duration, and amplitude. No `Math.random()` anywhere. The sampler
6
+ * returns the unmodified base camera at and after the duration, and never
7
+ * mutates its input. Presentation applies the offset to the presented
8
+ * camera, so pointer inversion (which uses the same presented camera)
9
+ * keeps visible targets touchable.
10
+ */
11
+ import type { Camera2D, CameraShakeOptions2D } from './types.js';
12
+ /**
13
+ * Sample the presented camera offset for a shake.
14
+ *
15
+ * The offset decays linearly to zero over `durationSeconds`; at and after
16
+ * the duration the base camera is returned unchanged. Equal options
17
+ * produce equal results.
18
+ */
19
+ export declare function sampleCameraShake2D(base: Camera2D, options: CameraShakeOptions2D): Camera2D;
20
+ //# sourceMappingURL=shake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shake.d.ts","sourceRoot":"","sources":["../../../../src/camera2d/shake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,YAAS,CAAC;AA0C9D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,oBAAoB,GAC5B,QAAQ,CA2BV"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Camera2D transforms (T12.1).
3
+ *
4
+ * The frozen transform model (T12.0):
5
+ *
6
+ * world point -> camera transform -> logical view point -> viewport -> surface
7
+ * logical = L + rotate(P - C, -R) * Z
8
+ * world = C + rotate((logical - L) / Z, R)
9
+ *
10
+ * where C is the camera center, Z the zoom, R the rotation, and L the
11
+ * center of the authored logical view rect. Rotation follows the Skia
12
+ * convention (positive radians in the y-down screen plane); zoom is
13
+ * uniform and greater than zero. The convenience surface functions derive
14
+ * the logical view from the resolved viewport's visible bounds, so
15
+ * rendering and pointer input share one composition.
16
+ */
17
+ import type { Aabb2D, Point2D } from '../geometry/types.js';
18
+ import type { ResolvedViewport2D } from '../viewport2d/types.js';
19
+ import type { Camera2D } from './types.js';
20
+ /** Rotate a point by an angle (Skia y-down convention). */
21
+ export declare function rotatePoint2D(point: Point2D, radians: number): Point2D;
22
+ /** The center of the camera's authored logical view. */
23
+ export declare function logicalViewCenter2D(logicalView: Aabb2D): Point2D;
24
+ /**
25
+ * Create a camera from optional partial values; missing fields default to
26
+ * the identity camera (`center` origin, `zoom` 1, no rotation).
27
+ */
28
+ export declare function createCamera2D(value?: Partial<Camera2D>): Camera2D;
29
+ /** World -> logical view: `L + rotate(P - C, -R) * Z`. */
30
+ export declare function worldToLogical2D(point: Point2D, camera: Camera2D, logicalView: Aabb2D): Point2D;
31
+ /** Logical view -> world: `C + rotate((logical - L) / Z, R)`. */
32
+ export declare function logicalToWorld2D(point: Point2D, camera: Camera2D, logicalView: Aabb2D): Point2D;
33
+ /** The conservative world-space AABB visible through the camera. */
34
+ export declare function getCameraVisibleBounds2D(camera: Camera2D, logicalView: Aabb2D): Aabb2D;
35
+ /**
36
+ * World -> surface through the camera and the resolved viewport.
37
+ *
38
+ * The camera's logical view is the viewport's visible logical bounds, so
39
+ * this composes exactly the transform the renderer draws with.
40
+ */
41
+ export declare function worldToSurface2D(point: Point2D, viewport: ResolvedViewport2D, camera: Camera2D): Point2D;
42
+ /** Surface -> world through the viewport and the presented camera. */
43
+ export declare function surfaceToWorld2D(point: Point2D, viewport: ResolvedViewport2D, camera: Camera2D): Point2D;
44
+ //# sourceMappingURL=transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../../src/camera2d/transform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,sBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAqB,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAS,CAAC;AAIxC,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAOtE;AAED,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAKhE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAmBlE;AAED,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAe/F;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAe/F;AAED,oEAAoE;AACpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CActF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,QAAQ,GACf,OAAO,CAKT;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,QAAQ,GACf,OAAO,CAKT"}