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 @@
1
+ {"version":3,"names":["createAudioInstallationError","GameAudioError","loadAudioApi","CATEGORIES","isValidVolume","volume","Number","isFinite","assertCategory","category","includes","String","assertVolume","interruptionObserverCount","assetInputLoader","__setAssetInputLoader","fn","__getAssetInputLoader","createGameAudio","options","api","AudioContext","sounds","soundIds","Object","keys","length","id","v","AudioManager","context","masterGain","categoryGains","master","music","sfx","ui","interruptionSub","interruptionEnabled","appStateSub","idleSuspendTimer","e","volumes","muted","disposed","userPaused","sessionPaused","appPaused","interruptionPaused","interruptionRequiresExplicitResume","bufferCache","Map","pendingDecodes","getBuffer","has","get","assetId","promise","input","assetUri","expoAssetFailed","Asset","ExpoAsset","asset","fromModule","downloadAsync","localUri","uri","buffer","decodeAudioData","message","set","delete","applyGain","gain","value","param","now","currentTime","cancelScheduledValues","setValueAtTime","linearRampToValueAtTime","applyAllGains","c","mg","createGain","connect","destination","cat","cg","Promise","all","map","close","clear","currentMusicId","currentMusicNode","musicGeneration","activeMusicGeneration","pendingMusic","activeVoices","Set","concurrencyMap","pendingReservations","cancelledReservations","isEffectivelyPaused","suspendChain","resolve","runSuspendLink","clearTimeout","suspend","state","resume","generation","startMusicInternal","scheduleIdleSuspend","requestSuspendUpdate","then","updateSuspendState","size","setTimeout","catch","dropVoice","voice","concurrencyKey","undefined","dropReservation","reservation","ensureNotDisposed","handleInterruption","event","type","shouldResume","observeAudioInterruptions","addSystemEventListener","console","warn","RN","require","AppState","addEventListener","isInactive","s","currentState","next","source","createBufferSource","loop","dest","stop","start","disconnect","lifecycleDetach","setSessionPaused","paused","audio","play","opts","concurrency","key","limit","overflow","Math","floor","oldest","values","add","voiceGain","cleaned","releaseVoice","anySource","onended","cleanup","catGain","playMusic","gen","stopMusic","pause","wasExplicit","setVolume","getVolume","setMuted","Boolean","isMuted","setPaused","bindLifecycle","bindAudioLifecycle","_setSessionPaused","p","dispose","remove","max","getStatus","sourceDetach","subscribe","status","detached","detach","_isIdleSuspended","_getConcurrencyCount","k","_getVoiceCounts","concurrencyKeys","cancelled","_handleInterruption","_getVolumes","_getGainTargets","out","g"],"sourceRoot":"../../../src","sources":["audio/createGameAudio.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ export class GameAudioError extends Error {
4
+ name = 'GameAudioError';
5
+ constructor(message) {
6
+ super(message);
7
+ }
8
+ }
9
+ export function createAudioInstallationError() {
10
+ return new GameAudioError('react-native-audio-api is not installed. Run `npx expo install react-native-audio-api react-native-worklets` and rebuild with `npx expo prebuild` (or `expo run:ios` / `expo run:android`). See https://docs.swmansion.com/react-native-audio-api/docs/fundamentals/getting-started');
11
+ }
12
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GameAudioError","Error","name","constructor","message","createAudioInstallationError"],"sourceRoot":"../../../src","sources":["audio/errors.ts"],"mappings":";;AAAA,OAAO,MAAMA,cAAc,SAASC,KAAK,CAAC;EAC/BC,IAAI,GAAG,gBAAgB;EAChCC,WAAWA,CAACC,OAAe,EAAE;IAC3B,KAAK,CAACA,OAAO,CAAC;EAChB;AACF;AAEA,OAAO,SAASC,4BAA4BA,CAAA,EAAmB;EAC7D,OAAO,IAAIL,cAAc,CACvB,qRACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export { createGameAudio } from "./createGameAudio.js";
4
+ export { GameAudioError } from "./errors.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createGameAudio","GameAudioError"],"sourceRoot":"../../../src","sources":["audio/index.ts"],"mappings":";;AAAA,SAASA,eAAe,QAAQ,sBAAmB;AACnD,SAASC,cAAc,QAAQ,aAAU","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Injectable resolver for the optional `react-native-audio-api` peer.
5
+ *
6
+ * Production code calls `loadAudioApi()` which does a dynamic `import()`.
7
+ * Tests inject a fake via `__setAudioApiLoader` to simulate a missing peer
8
+ * without relying on a production fallback object.
9
+ */
10
+
11
+ let loader = null;
12
+ export function __setAudioApiLoader(fn) {
13
+ loader = fn;
14
+ }
15
+ export async function loadAudioApi() {
16
+ if (loader) {
17
+ return loader();
18
+ }
19
+ // Dynamic import so `mock.module('react-native-audio-api', ...)` can intercept in tests
20
+ // and so importing `rn-gamekit/audio` does not eagerly load the native module.
21
+ const mod = await import('react-native-audio-api');
22
+ // The package re-exports AudioContext via `src/api.ts` -> `export * from './core/AudioContext'`
23
+ // and also via `src/index.ts`. Handle both shapes.
24
+ const AudioContext = mod.AudioContext ?? mod.default?.AudioContext ?? mod.AudioContext;
25
+ if (!AudioContext) {
26
+ throw new Error('AudioContext not found in react-native-audio-api — linking may have failed');
27
+ }
28
+ // GS-AUDIO-03: no synthesized no-op AudioManager. Interruption
29
+ // observation is an explicit optional capability: createGameAudio warns
30
+ // once and runs without it, so silence can never masquerade as support.
31
+ const AudioManager = mod.default?.AudioManager ?? mod.AudioManager ?? undefined;
32
+ return {
33
+ AudioContext: AudioContext,
34
+ AudioManager: AudioManager
35
+ };
36
+ }
37
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["loader","__setAudioApiLoader","fn","loadAudioApi","mod","AudioContext","default","Error","AudioManager","undefined"],"sourceRoot":"../../../src","sources":["audio/resolver.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AA+BA,IAAIA,MAA8C,GAAG,IAAI;AAEzD,OAAO,SAASC,mBAAmBA,CAACC,EAA0C,EAAQ;EACpFF,MAAM,GAAGE,EAAE;AACb;AAEA,OAAO,eAAeC,YAAYA,CAAA,EAA4B;EAC5D,IAAIH,MAAM,EAAE;IACV,OAAOA,MAAM,CAAC,CAAC;EACjB;EACA;EACA;EACA,MAAMI,GAAG,GAAI,MAAM,MAAM,CAAC,wBAAwB,CAGjD;EACD;EACA;EACA,MAAMC,YAAY,GACfD,GAAG,CAAkEC,YAAY,IACjFD,GAAG,CAAgFE,OAAO,EAAED,YAAY,IACxGD,GAAG,CAA+BC,YAAY;EACjD,IAAI,CAACA,YAAY,EAAE;IACjB,MAAM,IAAIE,KAAK,CAAC,4EAA4E,CAAC;EAC/F;EACA;EACA;EACA;EACA,MAAMC,YAAY,GACfJ,GAAG,CAAgFE,OAAO,EAAEE,YAAY,IACxGJ,GAAG,CAAkEI,YAAY,IAClFC,SAAS;EACX,OAAO;IACLJ,YAAY,EAAEA,YAA8C;IAC5DG,YAAY,EAAEA;EAChB,CAAC;AACH","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":["audio/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Subpath entry for `rn-gamekit/audio`.
5
+ * Importing `rn-gamekit` or `rn-gamekit/react` must not load this module.
6
+ */
7
+ export { createGameAudio } from "./audio/createGameAudio.js";
8
+ export { GameAudioError } from "./audio/errors.js";
9
+ //# sourceMappingURL=audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createGameAudio","GameAudioError"],"sourceRoot":"../../src","sources":["audio.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,4BAAyB;AACzD,SAASC,cAAc,QAAQ,mBAAgB","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Camera2D world-bounds clamping (T12.2).
5
+ *
6
+ * Keeps the visible camera region inside an authored world bound at the
7
+ * current zoom, using conservative enclosing-AABB containment for rotated
8
+ * views (frozen in T12.0): stable near boundaries, never jittering, and
9
+ * centering axes where the world is smaller than the view.
10
+ */
11
+
12
+ import { assertFiniteNumber, assertNonnegativeSize, GeometryError } from "../geometry/validation.js";
13
+ import { assertValidCamera2D, assertValidLogicalView } from "./validation.js";
14
+ import { rotatedHalfExtents2D } from "./extents.js";
15
+
16
+ /** Half-extents of the rotated visible rect, in world units. */
17
+ export function cameraHalfExtents2D(camera, logicalView) {
18
+ return {
19
+ ...rotatedHalfExtents2D(logicalView.width / 2 / camera.zoom, logicalView.height / 2 / camera.zoom, camera.rotationRadians)
20
+ };
21
+ }
22
+ function clampCenter(center, halfExtent, axisMin, axisMax) {
23
+ if (axisMax - axisMin < halfExtent * 2) {
24
+ return (axisMin + axisMax) / 2;
25
+ }
26
+ const min = axisMin + halfExtent;
27
+ const max = axisMax - halfExtent;
28
+ return center < min ? min : center > max ? max : center;
29
+ }
30
+
31
+ /**
32
+ * Clamp a camera so its visible region stays inside `worldBounds`.
33
+ *
34
+ * Conservative for rotated views: the enclosing AABB of the rotated
35
+ * visible rect is contained, so no part of the view leaves the world. An
36
+ * axis whose world is smaller than the view is centered rather than
37
+ * oscillating between impossible edges.
38
+ */
39
+ export function clampCameraBounds2D(camera, worldBounds, logicalView) {
40
+ assertValidCamera2D(camera);
41
+ assertValidLogicalView(logicalView);
42
+ if (typeof worldBounds !== 'object' || worldBounds === null || Array.isArray(worldBounds)) {
43
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'worldBounds', `expected a rect record, got ${worldBounds === null ? 'null' : typeof worldBounds}`);
44
+ }
45
+ assertFiniteNumber(worldBounds.x, 'worldBounds.x');
46
+ assertFiniteNumber(worldBounds.y, 'worldBounds.y');
47
+ assertNonnegativeSize(worldBounds.width, 'worldBounds.width');
48
+ assertNonnegativeSize(worldBounds.height, 'worldBounds.height');
49
+ const extents = cameraHalfExtents2D(camera, logicalView);
50
+ return Object.freeze({
51
+ center: Object.freeze({
52
+ x: clampCenter(camera.center.x, extents.x, worldBounds.x, worldBounds.x + worldBounds.width),
53
+ y: clampCenter(camera.center.y, extents.y, worldBounds.y, worldBounds.y + worldBounds.height)
54
+ }),
55
+ zoom: camera.zoom,
56
+ rotationRadians: camera.rotationRadians
57
+ });
58
+ }
59
+ //# sourceMappingURL=bounds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assertFiniteNumber","assertNonnegativeSize","GeometryError","assertValidCamera2D","assertValidLogicalView","rotatedHalfExtents2D","cameraHalfExtents2D","camera","logicalView","width","zoom","height","rotationRadians","clampCenter","center","halfExtent","axisMin","axisMax","min","max","clampCameraBounds2D","worldBounds","Array","isArray","x","y","extents","Object","freeze"],"sourceRoot":"../../../src","sources":["camera2d/bounds.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,kBAAkB,EAAEC,qBAAqB,EAAEC,aAAa,QAAQ,2BAAwB;AAEjG,SAASC,mBAAmB,EAAEC,sBAAsB,QAAQ,iBAAc;AAC1E,SAASC,oBAAoB,QAAQ,cAAW;;AAEhD;AACA,OAAO,SAASC,mBAAmBA,CAACC,MAAgB,EAAEC,WAAmB,EAA4B;EACnG,OAAO;IAAE,GAAGH,oBAAoB,CAACG,WAAW,CAACC,KAAK,GAAG,CAAC,GAAGF,MAAM,CAACG,IAAI,EAAEF,WAAW,CAACG,MAAM,GAAG,CAAC,GAAGJ,MAAM,CAACG,IAAI,EAAEH,MAAM,CAACK,eAAe;EAAE,CAAC;AACvI;AAEA,SAASC,WAAWA,CAACC,MAAc,EAAEC,UAAkB,EAAEC,OAAe,EAAEC,OAAe,EAAU;EACjG,IAAIA,OAAO,GAAGD,OAAO,GAAGD,UAAU,GAAG,CAAC,EAAE;IACtC,OAAO,CAACC,OAAO,GAAGC,OAAO,IAAI,CAAC;EAChC;EACA,MAAMC,GAAG,GAAGF,OAAO,GAAGD,UAAU;EAChC,MAAMI,GAAG,GAAGF,OAAO,GAAGF,UAAU;EAChC,OAAOD,MAAM,GAAGI,GAAG,GAAGA,GAAG,GAAGJ,MAAM,GAAGK,GAAG,GAAGA,GAAG,GAAGL,MAAM;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,mBAAmBA,CACjCb,MAAgB,EAChBc,WAAmB,EACnBb,WAAmB,EACT;EACVL,mBAAmB,CAACI,MAAM,CAAC;EAC3BH,sBAAsB,CAACI,WAAW,CAAC;EACnC,IACE,OAAOa,WAAW,KAAK,QAAQ,IAC/BA,WAAW,KAAK,IAAI,IACpBC,KAAK,CAACC,OAAO,CAACF,WAAW,CAAC,EAC1B;IACA,MAAM,IAAInB,aAAa,CACrB,yBAAyB,EACzB,aAAa,EACb,+BAA+BmB,WAAW,KAAK,IAAI,GAAG,MAAM,GAAG,OAAOA,WAAW,EACnF,CAAC;EACH;EACArB,kBAAkB,CAACqB,WAAW,CAACG,CAAC,EAAE,eAAe,CAAC;EAClDxB,kBAAkB,CAACqB,WAAW,CAACI,CAAC,EAAE,eAAe,CAAC;EAClDxB,qBAAqB,CAACoB,WAAW,CAACZ,KAAK,EAAE,mBAAmB,CAAC;EAC7DR,qBAAqB,CAACoB,WAAW,CAACV,MAAM,EAAE,oBAAoB,CAAC;EAE/D,MAAMe,OAAO,GAAGpB,mBAAmB,CAACC,MAAM,EAAEC,WAAW,CAAC;EACxD,OAAOmB,MAAM,CAACC,MAAM,CAAC;IACnBd,MAAM,EAAEa,MAAM,CAACC,MAAM,CAAC;MACpBJ,CAAC,EAAEX,WAAW,CAACN,MAAM,CAACO,MAAM,CAACU,CAAC,EAAEE,OAAO,CAACF,CAAC,EAAEH,WAAW,CAACG,CAAC,EAAEH,WAAW,CAACG,CAAC,GAAGH,WAAW,CAACZ,KAAK,CAAC;MAC5FgB,CAAC,EAAEZ,WAAW,CAACN,MAAM,CAACO,MAAM,CAACW,CAAC,EAAEC,OAAO,CAACD,CAAC,EAAEJ,WAAW,CAACI,CAAC,EAAEJ,WAAW,CAACI,CAAC,GAAGJ,WAAW,CAACV,MAAM;IAC9F,CAAC,CAAC;IACFD,IAAI,EAAEH,MAAM,CAACG,IAAI;IACjBE,eAAe,EAAEL,MAAM,CAACK;EAC1B,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Shared rotated half-extent arithmetic (GS-CAMERA-03).
5
+ *
6
+ * The conservative enclosing half-extents of a rotated visible rect:
7
+ * `ex = |hx·cosθ| + |hy·sinθ|`, `ey = |hx·sinθ| + |hy·cosθ|`.
8
+ *
9
+ * Trusted scalars only: no validation, no errors, worklet-safe. Callers
10
+ * validate at their own boundary (headless paths with the camera
11
+ * validators) or consume already-validated values (UI paths that must
12
+ * never construct errors per frame). Padding, parallax, and centering
13
+ * stay per-system and explicit.
14
+ */
15
+ export function rotatedHalfExtents2D(halfWidth, halfHeight, rotationRadians) {
16
+ 'worklet';
17
+
18
+ const cos = Math.abs(Math.cos(rotationRadians));
19
+ const sin = Math.abs(Math.sin(rotationRadians));
20
+ return {
21
+ x: halfWidth * cos + halfHeight * sin,
22
+ y: halfWidth * sin + halfHeight * cos
23
+ };
24
+ }
25
+ //# sourceMappingURL=extents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["rotatedHalfExtents2D","halfWidth","halfHeight","rotationRadians","cos","Math","abs","sin","x","y"],"sourceRoot":"../../../src","sources":["camera2d/extents.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,oBAAoBA,CAClCC,SAAiB,EACjBC,UAAkB,EAClBC,eAAuB,EACqB;EAC5C,SAAS;;EACT,MAAMC,GAAG,GAAGC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACD,GAAG,CAACD,eAAe,CAAC,CAAC;EAC/C,MAAMI,GAAG,GAAGF,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAACJ,eAAe,CAAC,CAAC;EAC/C,OAAO;IACLK,CAAC,EAAEP,SAAS,GAAGG,GAAG,GAAGF,UAAU,GAAGK,GAAG;IACrCE,CAAC,EAAER,SAAS,GAAGM,GAAG,GAAGL,UAAU,GAAGE;EACpC,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Camera2D follow behavior (T12.2).
5
+ *
6
+ * Deterministic, headless follow helpers for game update code. They never
7
+ * read a React ref, device clock, frame callback, or global singleton;
8
+ * games call them inside the scene update and store the returned camera in
9
+ * scene state.
10
+ */
11
+
12
+ import { assertFiniteNumber, assertNonnegativeSize, GeometryError } from "../geometry/validation.js";
13
+ import { assertFinitePoint2D, assertValidCamera2D } from "./validation.js";
14
+ function assertNonnegativeDeadZone(deadZone) {
15
+ if (typeof deadZone !== 'object' || deadZone === null || Array.isArray(deadZone)) {
16
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'deadZone', `expected a rect record, got ${deadZone === null ? 'null' : typeof deadZone}`);
17
+ }
18
+ const typed = deadZone;
19
+ assertFiniteNumber(typed.x, 'deadZone.x');
20
+ assertFiniteNumber(typed.y, 'deadZone.y');
21
+ assertNonnegativeSize(typed.width, 'deadZone.width');
22
+ assertNonnegativeSize(typed.height, 'deadZone.height');
23
+ }
24
+ function assertFollowOptionsShape(options) {
25
+ if (typeof options !== 'object' || options === null || Array.isArray(options)) {
26
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'options', `expected a follow options record, got ${options === null ? 'null' : typeof options}`);
27
+ }
28
+ }
29
+ function followFactor(halfLifeSeconds, deltaSeconds) {
30
+ if (!Number.isFinite(deltaSeconds) || !(deltaSeconds > 0)) {
31
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'deltaSeconds', `expected a finite positive step, got ${String(deltaSeconds)}`);
32
+ }
33
+ return 1 - Math.pow(0.5, deltaSeconds / halfLifeSeconds);
34
+ }
35
+
36
+ /**
37
+ * Compute the next camera for a follow target.
38
+ *
39
+ * - Without options: direct follow — the camera center becomes the target.
40
+ * - With a dead zone: the camera moves only when the target crosses the
41
+ * zone edge, by exactly the amount needed to bring the target back to
42
+ * the edge.
43
+ * - `perAxis` disables following on either axis.
44
+ * - `dampingHalfLifeSeconds` blends toward the desired center with a
45
+ * half-life model; equivalent fixed-step schedules produce equivalent
46
+ * results.
47
+ */
48
+ export function followCamera2D(camera, target, options, deltaSeconds) {
49
+ assertValidCamera2D(camera);
50
+ assertFinitePoint2D(target, 'target');
51
+ if (options !== undefined) {
52
+ assertFollowOptionsShape(options);
53
+ }
54
+ const perAxis = options?.perAxis;
55
+ if (perAxis !== undefined) {
56
+ // T12-SF3: the per-axis options must be a non-array record before any
57
+ // field is read.
58
+ if (typeof perAxis !== 'object' || perAxis === null || Array.isArray(perAxis)) {
59
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'perAxis', `expected a per-axis record, got ${perAxis === null ? 'null' : typeof perAxis}`);
60
+ }
61
+ const x = perAxis.x;
62
+ const y = perAxis.y;
63
+ if (x !== undefined && typeof x !== 'boolean') {
64
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'perAxis.x', `expected a boolean, got ${String(x)}`);
65
+ }
66
+ if (y !== undefined && typeof y !== 'boolean') {
67
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'perAxis.y', `expected a boolean, got ${String(y)}`);
68
+ }
69
+ }
70
+ const perAxisX = options?.perAxis?.x ?? true;
71
+ const perAxisY = options?.perAxis?.y ?? true;
72
+ const deadZone = options?.deadZone;
73
+ if (deadZone !== undefined) {
74
+ assertNonnegativeDeadZone(deadZone);
75
+ }
76
+ const halfLife = options?.dampingHalfLifeSeconds;
77
+ if (halfLife !== undefined) {
78
+ assertFiniteNumber(halfLife, 'dampingHalfLifeSeconds');
79
+ if (!(halfLife > 0)) {
80
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'dampingHalfLifeSeconds', `expected a finite positive half-life, got ${String(halfLife)}`);
81
+ }
82
+ if (deltaSeconds === undefined) {
83
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'deltaSeconds', 'damping requires an explicit fixed-step deltaSeconds');
84
+ }
85
+ }
86
+ const center = camera.center;
87
+ const desired = {
88
+ x: center.x,
89
+ y: center.y
90
+ };
91
+ if (deadZone === undefined) {
92
+ desired.x = target.x;
93
+ desired.y = target.y;
94
+ } else {
95
+ const minX = center.x + deadZone.x;
96
+ const maxX = minX + deadZone.width;
97
+ const minY = center.y + deadZone.y;
98
+ const maxY = minY + deadZone.height;
99
+ if (target.x > maxX) {
100
+ desired.x = target.x - deadZone.width - deadZone.x;
101
+ } else if (target.x < minX) {
102
+ desired.x = target.x - deadZone.x;
103
+ }
104
+ if (target.y > maxY) {
105
+ desired.y = target.y - deadZone.height - deadZone.y;
106
+ } else if (target.y < minY) {
107
+ desired.y = target.y - deadZone.y;
108
+ }
109
+ }
110
+ if (!perAxisX) {
111
+ desired.x = center.x;
112
+ }
113
+ if (!perAxisY) {
114
+ desired.y = center.y;
115
+ }
116
+ let nextCenter;
117
+ if (halfLife !== undefined && deltaSeconds !== undefined) {
118
+ const factor = followFactor(halfLife, deltaSeconds);
119
+ nextCenter = {
120
+ x: center.x + (desired.x - center.x) * factor,
121
+ y: center.y + (desired.y - center.y) * factor
122
+ };
123
+ } else {
124
+ nextCenter = desired;
125
+ }
126
+
127
+ // T12-F6: every public helper returns a frozen value; the caller's
128
+ // camera is never aliased or mutated.
129
+ return Object.freeze({
130
+ center: Object.freeze({
131
+ x: nextCenter.x,
132
+ y: nextCenter.y
133
+ }),
134
+ zoom: camera.zoom,
135
+ rotationRadians: camera.rotationRadians
136
+ });
137
+ }
138
+ //# sourceMappingURL=follow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assertFiniteNumber","assertNonnegativeSize","GeometryError","assertFinitePoint2D","assertValidCamera2D","assertNonnegativeDeadZone","deadZone","Array","isArray","typed","x","y","width","height","assertFollowOptionsShape","options","followFactor","halfLifeSeconds","deltaSeconds","Number","isFinite","String","Math","pow","followCamera2D","camera","target","undefined","perAxis","perAxisX","perAxisY","halfLife","dampingHalfLifeSeconds","center","desired","minX","maxX","minY","maxY","nextCenter","factor","Object","freeze","zoom","rotationRadians"],"sourceRoot":"../../../src","sources":["camera2d/follow.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,kBAAkB,EAAEC,qBAAqB,EAAEC,aAAa,QAAQ,2BAAwB;AAEjG,SAASC,mBAAmB,EAAEC,mBAAmB,QAAQ,iBAAc;AAEvE,SAASC,yBAAyBA,CAACC,QAAiB,EAA8B;EAChF,IAAI,OAAOA,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAK,IAAI,IAAIC,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,EAAE;IAChF,MAAM,IAAIJ,aAAa,CACrB,yBAAyB,EACzB,UAAU,EACV,+BAA+BI,QAAQ,KAAK,IAAI,GAAG,MAAM,GAAG,OAAOA,QAAQ,EAC7E,CAAC;EACH;EACA,MAAMG,KAAK,GAAGH,QAAkB;EAChCN,kBAAkB,CAACS,KAAK,CAACC,CAAC,EAAE,YAAY,CAAC;EACzCV,kBAAkB,CAACS,KAAK,CAACE,CAAC,EAAE,YAAY,CAAC;EACzCV,qBAAqB,CAACQ,KAAK,CAACG,KAAK,EAAE,gBAAgB,CAAC;EACpDX,qBAAqB,CAACQ,KAAK,CAACI,MAAM,EAAE,iBAAiB,CAAC;AACxD;AAEA,SAASC,wBAAwBA,CAACC,OAAgB,EAA8C;EAC9F,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,IAAI,IAAIR,KAAK,CAACC,OAAO,CAACO,OAAO,CAAC,EAAE;IAC7E,MAAM,IAAIb,aAAa,CACrB,yBAAyB,EACzB,SAAS,EACT,yCAAyCa,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,OAAOA,OAAO,EACrF,CAAC;EACH;AACF;AAEA,SAASC,YAAYA,CAACC,eAAuB,EAAEC,YAAoB,EAAU;EAC3E,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACF,YAAY,CAAC,IAAI,EAAEA,YAAY,GAAG,CAAC,CAAC,EAAE;IACzD,MAAM,IAAIhB,aAAa,CACrB,yBAAyB,EACzB,cAAc,EACd,wCAAwCmB,MAAM,CAACH,YAAY,CAAC,EAC9D,CAAC;EACH;EACA,OAAO,CAAC,GAAGI,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEL,YAAY,GAAGD,eAAe,CAAC;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASO,cAAcA,CAC5BC,MAAgB,EAChBC,MAAe,EACfX,OAAiC,EACjCG,YAAqB,EACX;EACVd,mBAAmB,CAACqB,MAAM,CAAC;EAC3BtB,mBAAmB,CAACuB,MAAM,EAAE,QAAQ,CAAC;EAErC,IAAIX,OAAO,KAAKY,SAAS,EAAE;IACzBb,wBAAwB,CAACC,OAAO,CAAC;EACnC;EACA,MAAMa,OAAO,GAAGb,OAAO,EAAEa,OAAO;EAChC,IAAIA,OAAO,KAAKD,SAAS,EAAE;IACzB;IACA;IACA,IAAI,OAAOC,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,IAAI,IAAIrB,KAAK,CAACC,OAAO,CAACoB,OAAO,CAAC,EAAE;MAC7E,MAAM,IAAI1B,aAAa,CACrB,yBAAyB,EACzB,SAAS,EACT,mCAAmC0B,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,OAAOA,OAAO,EAC/E,CAAC;IACH;IACA,MAAMlB,CAAC,GAAIkB,OAAO,CAAqBlB,CAAC;IACxC,MAAMC,CAAC,GAAIiB,OAAO,CAAqBjB,CAAC;IACxC,IAAID,CAAC,KAAKiB,SAAS,IAAI,OAAOjB,CAAC,KAAK,SAAS,EAAE;MAC7C,MAAM,IAAIR,aAAa,CAAC,yBAAyB,EAAE,WAAW,EAAE,2BAA2BmB,MAAM,CAACX,CAAC,CAAC,EAAE,CAAC;IACzG;IACA,IAAIC,CAAC,KAAKgB,SAAS,IAAI,OAAOhB,CAAC,KAAK,SAAS,EAAE;MAC7C,MAAM,IAAIT,aAAa,CAAC,yBAAyB,EAAE,WAAW,EAAE,2BAA2BmB,MAAM,CAACV,CAAC,CAAC,EAAE,CAAC;IACzG;EACF;EACA,MAAMkB,QAAQ,GAAGd,OAAO,EAAEa,OAAO,EAAElB,CAAC,IAAI,IAAI;EAC5C,MAAMoB,QAAQ,GAAGf,OAAO,EAAEa,OAAO,EAAEjB,CAAC,IAAI,IAAI;EAC5C,MAAML,QAAQ,GAAGS,OAAO,EAAET,QAAQ;EAClC,IAAIA,QAAQ,KAAKqB,SAAS,EAAE;IAC1BtB,yBAAyB,CAACC,QAAQ,CAAC;EACrC;EACA,MAAMyB,QAAQ,GAAGhB,OAAO,EAAEiB,sBAAsB;EAChD,IAAID,QAAQ,KAAKJ,SAAS,EAAE;IAC1B3B,kBAAkB,CAAC+B,QAAQ,EAAE,wBAAwB,CAAC;IACtD,IAAI,EAAEA,QAAQ,GAAG,CAAC,CAAC,EAAE;MACnB,MAAM,IAAI7B,aAAa,CACrB,yBAAyB,EACzB,wBAAwB,EACxB,6CAA6CmB,MAAM,CAACU,QAAQ,CAAC,EAC/D,CAAC;IACH;IACA,IAAIb,YAAY,KAAKS,SAAS,EAAE;MAC9B,MAAM,IAAIzB,aAAa,CACrB,yBAAyB,EACzB,cAAc,EACd,sDACF,CAAC;IACH;EACF;EAEA,MAAM+B,MAAM,GAAGR,MAAM,CAACQ,MAAM;EAC5B,MAAMC,OAAO,GAAG;IAAExB,CAAC,EAAEuB,MAAM,CAACvB,CAAC;IAAEC,CAAC,EAAEsB,MAAM,CAACtB;EAAE,CAAC;EAC5C,IAAIL,QAAQ,KAAKqB,SAAS,EAAE;IAC1BO,OAAO,CAACxB,CAAC,GAAGgB,MAAM,CAAChB,CAAC;IACpBwB,OAAO,CAACvB,CAAC,GAAGe,MAAM,CAACf,CAAC;EACtB,CAAC,MAAM;IACL,MAAMwB,IAAI,GAAGF,MAAM,CAACvB,CAAC,GAAGJ,QAAQ,CAACI,CAAC;IAClC,MAAM0B,IAAI,GAAGD,IAAI,GAAG7B,QAAQ,CAACM,KAAK;IAClC,MAAMyB,IAAI,GAAGJ,MAAM,CAACtB,CAAC,GAAGL,QAAQ,CAACK,CAAC;IAClC,MAAM2B,IAAI,GAAGD,IAAI,GAAG/B,QAAQ,CAACO,MAAM;IACnC,IAAIa,MAAM,CAAChB,CAAC,GAAG0B,IAAI,EAAE;MACnBF,OAAO,CAACxB,CAAC,GAAGgB,MAAM,CAAChB,CAAC,GAAGJ,QAAQ,CAACM,KAAK,GAAGN,QAAQ,CAACI,CAAC;IACpD,CAAC,MAAM,IAAIgB,MAAM,CAAChB,CAAC,GAAGyB,IAAI,EAAE;MAC1BD,OAAO,CAACxB,CAAC,GAAGgB,MAAM,CAAChB,CAAC,GAAGJ,QAAQ,CAACI,CAAC;IACnC;IACA,IAAIgB,MAAM,CAACf,CAAC,GAAG2B,IAAI,EAAE;MACnBJ,OAAO,CAACvB,CAAC,GAAGe,MAAM,CAACf,CAAC,GAAGL,QAAQ,CAACO,MAAM,GAAGP,QAAQ,CAACK,CAAC;IACrD,CAAC,MAAM,IAAIe,MAAM,CAACf,CAAC,GAAG0B,IAAI,EAAE;MAC1BH,OAAO,CAACvB,CAAC,GAAGe,MAAM,CAACf,CAAC,GAAGL,QAAQ,CAACK,CAAC;IACnC;EACF;EACA,IAAI,CAACkB,QAAQ,EAAE;IACbK,OAAO,CAACxB,CAAC,GAAGuB,MAAM,CAACvB,CAAC;EACtB;EACA,IAAI,CAACoB,QAAQ,EAAE;IACbI,OAAO,CAACvB,CAAC,GAAGsB,MAAM,CAACtB,CAAC;EACtB;EAEA,IAAI4B,UAAmB;EACvB,IAAIR,QAAQ,KAAKJ,SAAS,IAAIT,YAAY,KAAKS,SAAS,EAAE;IACxD,MAAMa,MAAM,GAAGxB,YAAY,CAACe,QAAQ,EAAEb,YAAY,CAAC;IACnDqB,UAAU,GAAG;MACX7B,CAAC,EAAEuB,MAAM,CAACvB,CAAC,GAAG,CAACwB,OAAO,CAACxB,CAAC,GAAGuB,MAAM,CAACvB,CAAC,IAAI8B,MAAM;MAC7C7B,CAAC,EAAEsB,MAAM,CAACtB,CAAC,GAAG,CAACuB,OAAO,CAACvB,CAAC,GAAGsB,MAAM,CAACtB,CAAC,IAAI6B;IACzC,CAAC;EACH,CAAC,MAAM;IACLD,UAAU,GAAGL,OAAO;EACtB;;EAEA;EACA;EACA,OAAOO,MAAM,CAACC,MAAM,CAAC;IACnBT,MAAM,EAAEQ,MAAM,CAACC,MAAM,CAAC;MAAEhC,CAAC,EAAE6B,UAAU,CAAC7B,CAAC;MAAEC,CAAC,EAAE4B,UAAU,CAAC5B;IAAE,CAAC,CAAC;IAC3DgC,IAAI,EAAElB,MAAM,CAACkB,IAAI;IACjBC,eAAe,EAAEnB,MAAM,CAACmB;EAC1B,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Camera2D — the opt-in 2D camera system (Task 12).
5
+ *
6
+ * Pure, headless, native-free camera math shared by rendering and pointer
7
+ * input: immutable camera values, forward and inverse transforms, follow,
8
+ * bounds clamping, deterministic shake, presentation interpolation, and
9
+ * conservative visibility culling. The React integration
10
+ * (`defineGameCamera2D`, `GameView`, `GameWorld2D`, `GameLayer2D`) lives in
11
+ * `src/react/`.
12
+ */
13
+ export { createCamera2D, getCameraVisibleBounds2D, logicalToWorld2D, worldToLogical2D, worldToSurface2D, surfaceToWorld2D } from "./transform.js";
14
+ export { interpolateCamera2D, interpolateCameraScalar2D, shortestRotationDelta2D } from "./interpolation.js";
15
+ export { followCamera2D } from "./follow.js";
16
+ export { clampCameraBounds2D, cameraHalfExtents2D } from "./bounds.js";
17
+ export { rotatedHalfExtents2D } from "./extents.js";
18
+ export { sampleCameraShake2D } from "./shake.js";
19
+ export { filterCameraVisible2D, intersectsCameraView2D, paddedCameraBounds2D } from "./visibility.js";
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createCamera2D","getCameraVisibleBounds2D","logicalToWorld2D","worldToLogical2D","worldToSurface2D","surfaceToWorld2D","interpolateCamera2D","interpolateCameraScalar2D","shortestRotationDelta2D","followCamera2D","clampCameraBounds2D","cameraHalfExtents2D","rotatedHalfExtents2D","sampleCameraShake2D","filterCameraVisible2D","intersectsCameraView2D","paddedCameraBounds2D"],"sourceRoot":"../../../src","sources":["camera2d/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,cAAc,EAAEC,wBAAwB,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,gBAAgB,QAAQ,gBAAa;AAC9I,SAASC,mBAAmB,EAAEC,yBAAyB,EAAEC,uBAAuB,QAAQ,oBAAiB;AACzG,SAASC,cAAc,QAAQ,aAAU;AACzC,SAASC,mBAAmB,EAAEC,mBAAmB,QAAQ,aAAU;AACnE,SAASC,oBAAoB,QAAQ,cAAW;AAChD,SAASC,mBAAmB,QAAQ,YAAS;AAC7C,SACEC,qBAAqB,EACrBC,sBAAsB,EACtBC,oBAAoB,QAEf,iBAAc","ignoreList":[]}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Camera2D presentation interpolation (T12.2, T12.3).
5
+ *
6
+ * The public `interpolateCamera2D` validates its inputs and returns a
7
+ * frozen camera. The internal `interpolateCameraScalar2D` is the trusted
8
+ * display-frequency projector: its COMPLETE call graph is workletized (no
9
+ * validation, no structured error construction, the shortest-arc math is
10
+ * inline), so the UI runtime can call it from the camera presentation
11
+ * worklet without crossing runtimes (T12-F2). Callers validate selector
12
+ * output at the JS commit boundary before publishing shared values.
13
+ */
14
+ import { assertFiniteNumber, GeometryError } from "../geometry/validation.js";
15
+ import { assertCameraShape } from "./validation.js";
16
+ function assertCutShape(cut, field) {
17
+ if (typeof cut !== 'object' || cut === null || Array.isArray(cut)) {
18
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', field, `expected a camera cut record, got ${cut === null ? 'null' : typeof cut}`);
19
+ }
20
+ assertFiniteNumber(cut.cutId, `${field}.cutId`);
21
+ const camera = cut.camera;
22
+ assertCameraShape(camera, `${field}.camera`);
23
+ const cameraField = `${field}.camera`;
24
+ assertFiniteNumber(camera.center.x, `${cameraField}.center.x`);
25
+ assertFiniteNumber(camera.center.y, `${cameraField}.center.y`);
26
+ assertFiniteNumber(camera.zoom, `${cameraField}.zoom`);
27
+ if (!(camera.zoom > 0)) {
28
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', `${cameraField}.zoom`, `expected a finite zoom greater than zero, got ${String(camera.zoom)}`);
29
+ }
30
+ assertFiniteNumber(camera.rotationRadians, `${cameraField}.rotationRadians`);
31
+ }
32
+
33
+ /**
34
+ * Trusted scalar projector (worklet-safe): interpolates center and zoom
35
+ * linearly and rotation across the shortest angular arc. A changed `cutId`
36
+ * (or an absent previous cut) snaps to the current camera. No validation,
37
+ * no allocation of structured errors.
38
+ */
39
+ export function interpolateCameraScalar2D(previous, current, alpha) {
40
+ 'worklet';
41
+
42
+ if (previous === undefined || previous.cutId !== current.cutId) {
43
+ return current.camera;
44
+ }
45
+ const from = previous.camera;
46
+ const to = current.camera;
47
+ let delta = (to.rotationRadians - from.rotationRadians) % (Math.PI * 2);
48
+ if (delta > Math.PI) {
49
+ delta -= Math.PI * 2;
50
+ } else if (delta < -Math.PI) {
51
+ delta += Math.PI * 2;
52
+ }
53
+ return {
54
+ center: {
55
+ x: from.center.x + (to.center.x - from.center.x) * alpha,
56
+ y: from.center.y + (to.center.y - from.center.y) * alpha
57
+ },
58
+ zoom: from.zoom + (to.zoom - from.zoom) * alpha,
59
+ rotationRadians: from.rotationRadians + delta * alpha
60
+ };
61
+ }
62
+
63
+ /** The shortest signed angular difference from `from` to `to`. */
64
+ export function shortestRotationDelta2D(from, to) {
65
+ let delta = (to - from) % (Math.PI * 2);
66
+ if (delta > Math.PI) {
67
+ delta -= Math.PI * 2;
68
+ } else if (delta < -Math.PI) {
69
+ delta += Math.PI * 2;
70
+ }
71
+ return delta;
72
+ }
73
+
74
+ /**
75
+ * Public interpolated camera: validates every input, clamps the alpha
76
+ * policy (reject outside `[0, 1]`), and returns a frozen value. Delegates
77
+ * to the trusted scalar projector.
78
+ */
79
+ export function interpolateCamera2D(previous, current, alpha) {
80
+ assertCutShape(current, 'current');
81
+ if (previous !== undefined) {
82
+ assertCutShape(previous, 'previous');
83
+ }
84
+ assertFiniteNumber(alpha, 'alpha');
85
+ if (alpha < 0 || alpha > 1) {
86
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'alpha', `expected alpha in [0, 1], got ${String(alpha)}`);
87
+ }
88
+ const interpolated = interpolateCameraScalar2D(previous, current, alpha);
89
+ return Object.freeze({
90
+ center: Object.freeze({
91
+ x: interpolated.center.x,
92
+ y: interpolated.center.y
93
+ }),
94
+ zoom: interpolated.zoom,
95
+ rotationRadians: interpolated.rotationRadians
96
+ });
97
+ }
98
+ //# sourceMappingURL=interpolation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assertFiniteNumber","GeometryError","assertCameraShape","assertCutShape","cut","field","Array","isArray","cutId","camera","cameraField","center","x","y","zoom","String","rotationRadians","interpolateCameraScalar2D","previous","current","alpha","undefined","from","to","delta","Math","PI","shortestRotationDelta2D","interpolateCamera2D","interpolated","Object","freeze"],"sourceRoot":"../../../src","sources":["camera2d/interpolation.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Camera2D deterministic shake (T12.2).
5
+ *
6
+ * Shake is reproducible from explicit state: a seed, elapsed simulation
7
+ * time, duration, and amplitude. No `Math.random()` anywhere. The sampler
8
+ * returns the unmodified base camera at and after the duration, and never
9
+ * mutates its input. Presentation applies the offset to the presented
10
+ * camera, so pointer inversion (which uses the same presented camera)
11
+ * keeps visible targets touchable.
12
+ */
13
+
14
+ import { assertValidCamera2D } from "./validation.js";
15
+ import { assertFiniteNumber, assertNonnegativeSize, GeometryError } from "../geometry/validation.js";
16
+ function assertValidShakeOptions(options) {
17
+ if (typeof options !== 'object' || options === null || Array.isArray(options)) {
18
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'options', `expected a shake options record, got ${options === null ? 'null' : typeof options}`);
19
+ }
20
+ assertFiniteNumber(options.seed, 'seed');
21
+ assertFiniteNumber(options.elapsedSeconds, 'elapsedSeconds');
22
+ if (!(options.elapsedSeconds >= 0)) {
23
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'elapsedSeconds', `expected a nonnegative elapsed time, got ${String(options.elapsedSeconds)}`);
24
+ }
25
+ assertFiniteNumber(options.durationSeconds, 'durationSeconds');
26
+ if (!(options.durationSeconds > 0)) {
27
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'durationSeconds', `expected a positive duration, got ${String(options.durationSeconds)}`);
28
+ }
29
+ assertNonnegativeSize(options.amplitude, 'amplitude');
30
+ if (options.frequency !== undefined) {
31
+ assertFiniteNumber(options.frequency, 'frequency');
32
+ }
33
+ }
34
+
35
+ /** Deterministic per-axis phase from the seed (never a wall-clock read). */
36
+ function phaseOf(seed, axis) {
37
+ const raw = Math.sin(seed * 12.9898 + axis * 78.233) * 43758.5453;
38
+ const fraction = raw - Math.floor(raw);
39
+ return fraction * Math.PI * 2;
40
+ }
41
+
42
+ /**
43
+ * Sample the presented camera offset for a shake.
44
+ *
45
+ * The offset decays linearly to zero over `durationSeconds`; at and after
46
+ * the duration the base camera is returned unchanged. Equal options
47
+ * produce equal results.
48
+ */
49
+ export function sampleCameraShake2D(base, options) {
50
+ assertValidCamera2D(base);
51
+ assertValidShakeOptions(options);
52
+ const {
53
+ seed,
54
+ elapsedSeconds,
55
+ durationSeconds,
56
+ amplitude,
57
+ frequency = Math.PI * 2
58
+ } = options;
59
+ if (elapsedSeconds >= durationSeconds || amplitude === 0) {
60
+ // T12-F6: even the endpoint returns a frozen copy — never the caller's
61
+ // base object by identity.
62
+ return Object.freeze({
63
+ center: Object.freeze({
64
+ x: base.center.x,
65
+ y: base.center.y
66
+ }),
67
+ zoom: base.zoom,
68
+ rotationRadians: base.rotationRadians
69
+ });
70
+ }
71
+ const envelope = 1 - elapsedSeconds / durationSeconds;
72
+ const offset = {
73
+ x: Math.sin(elapsedSeconds * frequency + phaseOf(seed, 1)) * amplitude * envelope,
74
+ y: Math.sin(elapsedSeconds * frequency + phaseOf(seed, 2)) * amplitude * envelope
75
+ };
76
+ return Object.freeze({
77
+ center: Object.freeze({
78
+ x: base.center.x + offset.x,
79
+ y: base.center.y + offset.y
80
+ }),
81
+ zoom: base.zoom,
82
+ rotationRadians: base.rotationRadians
83
+ });
84
+ }
85
+ //# sourceMappingURL=shake.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assertValidCamera2D","assertFiniteNumber","assertNonnegativeSize","GeometryError","assertValidShakeOptions","options","Array","isArray","seed","elapsedSeconds","String","durationSeconds","amplitude","frequency","undefined","phaseOf","axis","raw","Math","sin","fraction","floor","PI","sampleCameraShake2D","base","Object","freeze","center","x","y","zoom","rotationRadians","envelope","offset"],"sourceRoot":"../../../src","sources":["camera2d/shake.ts"],"mappings":"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","ignoreList":[]}