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,266 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Attachable collider records and placement (T11.4).
5
+ *
6
+ * A `LocalCollider2D` is immutable local-space data: its `offset` and shape
7
+ * dimensions are relative to an authored object position. `placeCollider2D`
8
+ * is the ONLY local -> world path; world colliders feed broad-phase,
9
+ * collider-pair, and debug operations. Placement preserves filter, sensor,
10
+ * identifier, and author metadata and never mutates the source.
11
+ *
12
+ * Translation only: a rectangle stays axis-aligned and a circle stays a
13
+ * circle. There is no general transform, and rendering never owns gameplay
14
+ * collision state.
15
+ */
16
+
17
+ import { assertValidAabb2D, assertValidCircle2D, assertValidPoint2D, assertUnsigned32Bits } from "../geometry/validation.js";
18
+ import { ALL_FILTER2D, canCollide2D } from "./filters.js";
19
+ import { collideAabbAabb2D, collideCircleAabb2D, collideCircleCircle2D } from "./manifolds.js";
20
+
21
+ /** Shared collider metadata. */
22
+
23
+ /** A local-space AABB collider. */
24
+
25
+ /** A local-space circle collider. */
26
+
27
+ /** A collider definition in the authored object's local space. */
28
+
29
+ /** A world-space AABB collider (already placed). */
30
+
31
+ /** A world-space circle collider (already placed). */
32
+
33
+ /** A collider placed in world space. */
34
+
35
+ /** Options for the beginner rectangle collider constructor. */
36
+
37
+ /** Options for the beginner circle collider constructor. */
38
+
39
+ /** Clone and freeze a caller-provided filter so later mutation cannot
40
+ * change already-created colliders or their placements. */
41
+ function freezeFilter(filter) {
42
+ return Object.freeze({
43
+ categoryBits: filter.categoryBits,
44
+ maskBits: filter.maskBits
45
+ });
46
+ }
47
+ function validateMetadata(metadata) {
48
+ if (metadata.filter !== undefined) {
49
+ assertUnsigned32Bits(metadata.filter.categoryBits, 'filter.categoryBits');
50
+ assertUnsigned32Bits(metadata.filter.maskBits, 'filter.maskBits');
51
+ }
52
+ }
53
+
54
+ /** Create an immutable local AABB collider. */
55
+ export function rectangleCollider2D(options) {
56
+ const collider = {
57
+ space: 'local',
58
+ shape: 'aabb',
59
+ offset: Object.freeze({
60
+ x: options.offset.x,
61
+ y: options.offset.y
62
+ }),
63
+ width: options.width,
64
+ height: options.height,
65
+ ...(options.filter === undefined ? {} : {
66
+ filter: freezeFilter(options.filter)
67
+ }),
68
+ ...(options.sensor === undefined ? {} : {
69
+ sensor: options.sensor
70
+ }),
71
+ ...(options.id === undefined ? {} : {
72
+ id: options.id
73
+ })
74
+ };
75
+ validateMetadata(collider);
76
+ assertValidAabb2D({
77
+ x: options.offset.x,
78
+ y: options.offset.y,
79
+ width: options.width,
80
+ height: options.height
81
+ }, 'collider');
82
+ return Object.freeze(collider);
83
+ }
84
+
85
+ /** Create an immutable local circle collider. */
86
+ export function circleCollider2D(options) {
87
+ const collider = {
88
+ space: 'local',
89
+ shape: 'circle',
90
+ offset: Object.freeze({
91
+ x: options.offset.x,
92
+ y: options.offset.y
93
+ }),
94
+ radius: options.radius,
95
+ ...(options.filter === undefined ? {} : {
96
+ filter: freezeFilter(options.filter)
97
+ }),
98
+ ...(options.sensor === undefined ? {} : {
99
+ sensor: options.sensor
100
+ }),
101
+ ...(options.id === undefined ? {} : {
102
+ id: options.id
103
+ })
104
+ };
105
+ validateMetadata(collider);
106
+ assertValidCircle2D({
107
+ x: options.offset.x,
108
+ y: options.offset.y,
109
+ radius: options.radius
110
+ }, 'collider');
111
+ return Object.freeze(collider);
112
+ }
113
+
114
+ /**
115
+ * Place a local collider at an authored object position, returning an
116
+ * immutable world-space collider. Rejects local colliders at compile time.
117
+ */
118
+ export function placeCollider2D(local, position) {
119
+ assertValidPoint2D(position, 'position');
120
+ const worldX = position.x + local.offset.x;
121
+ const worldY = position.y + local.offset.y;
122
+ const metadata = {
123
+ ...(local.filter === undefined ? {} : {
124
+ filter: local.filter
125
+ }),
126
+ ...(local.sensor === undefined ? {} : {
127
+ sensor: local.sensor
128
+ }),
129
+ ...(local.id === undefined ? {} : {
130
+ id: local.id
131
+ })
132
+ };
133
+ if (local.shape === 'aabb') {
134
+ const world = {
135
+ space: 'world',
136
+ shape: 'aabb',
137
+ x: worldX,
138
+ y: worldY,
139
+ width: local.width,
140
+ height: local.height,
141
+ ...metadata
142
+ };
143
+ assertValidAabb2D(world, 'world');
144
+ return Object.freeze(world);
145
+ }
146
+ const world = {
147
+ space: 'world',
148
+ shape: 'circle',
149
+ x: worldX,
150
+ y: worldY,
151
+ radius: local.radius,
152
+ ...metadata
153
+ };
154
+ assertValidCircle2D(world, 'world');
155
+ return Object.freeze(world);
156
+ }
157
+
158
+ /** World-space AABB view of a collider (for broad-phase bounds). */
159
+ export function worldColliderBounds2D(world) {
160
+ if (world.shape === 'aabb') {
161
+ return Object.freeze({
162
+ x: world.x,
163
+ y: world.y,
164
+ width: world.width,
165
+ height: world.height
166
+ });
167
+ }
168
+ return Object.freeze({
169
+ x: world.x - world.radius,
170
+ y: world.y - world.radius,
171
+ width: world.radius * 2,
172
+ height: world.radius * 2
173
+ });
174
+ }
175
+
176
+ /** World-space circle view of a collider (for narrow-phase pairs). */
177
+ export function worldColliderCircle2D(world) {
178
+ if (world.shape === 'circle') {
179
+ return Object.freeze({
180
+ x: world.x,
181
+ y: world.y,
182
+ radius: world.radius
183
+ });
184
+ }
185
+ return undefined;
186
+ }
187
+
188
+ /**
189
+ * Narrow-phase contact between two placed world colliders.
190
+ *
191
+ * Filters are normalized first: an absent filter behaves exactly as
192
+ * `ALL_FILTER2D`, so `NONE_FILTER2D` on either side truly collides with
193
+ * nothing. The dispatch preserves the public argument order: the returned
194
+ * normal always moves the FIRST argument out of the SECOND, including for
195
+ * mixed AABB/circle pairs (the AABB-first wrapper inverts only the
196
+ * circle-first manifold normal, keeping depth and the world contact point).
197
+ */
198
+ export function collideWorldColliders2D(first, second) {
199
+ const firstFilter = first.filter ?? ALL_FILTER2D;
200
+ const secondFilter = second.filter ?? ALL_FILTER2D;
201
+ if (!canCollide2D(firstFilter, secondFilter)) {
202
+ return undefined;
203
+ }
204
+ if (first.shape === 'aabb' && second.shape === 'aabb') {
205
+ return collideAabbAabb2D({
206
+ x: first.x,
207
+ y: first.y,
208
+ width: first.width,
209
+ height: first.height
210
+ }, {
211
+ x: second.x,
212
+ y: second.y,
213
+ width: second.width,
214
+ height: second.height
215
+ });
216
+ }
217
+ if (first.shape === 'circle' && second.shape === 'circle') {
218
+ return collideCircleCircle2D({
219
+ x: first.x,
220
+ y: first.y,
221
+ radius: first.radius
222
+ }, {
223
+ x: second.x,
224
+ y: second.y,
225
+ radius: second.radius
226
+ });
227
+ }
228
+ if (first.shape === 'circle' && second.shape === 'aabb') {
229
+ return collideCircleAabb2D({
230
+ x: first.x,
231
+ y: first.y,
232
+ radius: first.radius
233
+ }, {
234
+ x: second.x,
235
+ y: second.y,
236
+ width: second.width,
237
+ height: second.height
238
+ });
239
+ }
240
+ // AABB first, circle second: invert the circle-first manifold normal so
241
+ // the normal still moves the FIRST argument (the AABB) out of the second.
242
+ const aabbFirst = first;
243
+ const circleSecond = second;
244
+ const circleFirst = collideCircleAabb2D({
245
+ x: circleSecond.x,
246
+ y: circleSecond.y,
247
+ radius: circleSecond.radius
248
+ }, {
249
+ x: aabbFirst.x,
250
+ y: aabbFirst.y,
251
+ width: aabbFirst.width,
252
+ height: aabbFirst.height
253
+ });
254
+ if (circleFirst === undefined) {
255
+ return undefined;
256
+ }
257
+ return Object.freeze({
258
+ normal: Object.freeze({
259
+ x: 0 - circleFirst.normal.x,
260
+ y: 0 - circleFirst.normal.y
261
+ }),
262
+ depth: circleFirst.depth,
263
+ point: circleFirst.point
264
+ });
265
+ }
266
+ //# sourceMappingURL=colliders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assertValidAabb2D","assertValidCircle2D","assertValidPoint2D","assertUnsigned32Bits","ALL_FILTER2D","canCollide2D","collideAabbAabb2D","collideCircleAabb2D","collideCircleCircle2D","freezeFilter","filter","Object","freeze","categoryBits","maskBits","validateMetadata","metadata","undefined","rectangleCollider2D","options","collider","space","shape","offset","x","y","width","height","sensor","id","circleCollider2D","radius","placeCollider2D","local","position","worldX","worldY","world","worldColliderBounds2D","worldColliderCircle2D","collideWorldColliders2D","first","second","firstFilter","secondFilter","aabbFirst","circleSecond","circleFirst","normal","depth","point"],"sourceRoot":"../../../src","sources":["collision2d/colliders.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Headless debug projections (T11.6).
5
+ *
6
+ * Immutable debug primitives a renderer can draw without importing Skia
7
+ * into the collision module. Colors and labels are optional presentation
8
+ * metadata, never gameplay semantics. Production collision results never
9
+ * allocate debug data; projection is opt-in.
10
+ */
11
+
12
+ import { assertValidPoint2D, assertValidVector2D } from "../geometry/validation.js";
13
+
14
+ /** Optional presentation metadata. */
15
+
16
+ /** Debug AABB. */
17
+
18
+ /** Debug circle. */
19
+
20
+ /** Debug segment (sweep paths, rays). */
21
+
22
+ /** Debug point (contact points). */
23
+
24
+ /** Debug vector (normals), drawn from `(x, y)` along `(dx, dy)`. */
25
+
26
+ /** Any headless debug primitive. */
27
+
28
+ /** Project a world collider into a debug primitive, preserving its id. */
29
+ export function projectWorldCollider2D(world) {
30
+ const style = world.id === undefined ? {} : {
31
+ label: world.id
32
+ };
33
+ if (world.shape === 'aabb') {
34
+ return Object.freeze({
35
+ kind: 'aabb',
36
+ x: world.x,
37
+ y: world.y,
38
+ width: world.width,
39
+ height: world.height,
40
+ ...style
41
+ });
42
+ }
43
+ return Object.freeze({
44
+ kind: 'circle',
45
+ x: world.x,
46
+ y: world.y,
47
+ radius: world.radius,
48
+ ...style
49
+ });
50
+ }
51
+
52
+ /** Project a contact hit into its contact point and normal arrow. */
53
+ export function projectHit2D(hit) {
54
+ return Object.freeze({
55
+ point: Object.freeze({
56
+ kind: 'point',
57
+ x: hit.point.x,
58
+ y: hit.point.y
59
+ }),
60
+ normal: Object.freeze({
61
+ kind: 'vector',
62
+ x: hit.point.x,
63
+ y: hit.point.y,
64
+ dx: hit.normal.x,
65
+ dy: hit.normal.y
66
+ })
67
+ });
68
+ }
69
+
70
+ /** Project a sweep path (start to end of the swept reference point). */
71
+ export function projectSweepPath2D(start, end, label) {
72
+ assertValidPoint2D(start, 'start');
73
+ assertValidPoint2D(end, 'end');
74
+ return Object.freeze({
75
+ kind: 'segment',
76
+ start: Object.freeze({
77
+ x: start.x,
78
+ y: start.y
79
+ }),
80
+ end: Object.freeze({
81
+ x: end.x,
82
+ y: end.y
83
+ }),
84
+ ...(label === undefined ? {} : {
85
+ label
86
+ })
87
+ });
88
+ }
89
+
90
+ /** Project a plain vector arrow (for example a velocity). */
91
+ export function projectVector2D(origin, vector, label) {
92
+ assertValidPoint2D(origin, 'origin');
93
+ assertValidVector2D(vector, 'vector');
94
+ return Object.freeze({
95
+ kind: 'vector',
96
+ x: origin.x,
97
+ y: origin.y,
98
+ dx: vector.x,
99
+ dy: vector.y,
100
+ ...(label === undefined ? {} : {
101
+ label
102
+ })
103
+ });
104
+ }
105
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assertValidPoint2D","assertValidVector2D","projectWorldCollider2D","world","style","id","undefined","label","shape","Object","freeze","kind","x","y","width","height","radius","projectHit2D","hit","point","normal","dx","dy","projectSweepPath2D","start","end","projectVector2D","origin","vector"],"sourceRoot":"../../../src","sources":["collision2d/debug.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Collision filters (T11.4).
5
+ *
6
+ * Symmetric category/mask filtering with unsigned 32-bit bit sets,
7
+ * following the Box2D convention: two colliders are eligible only when each
8
+ * category is included by the other mask. No bit positions are reserved.
9
+ */
10
+
11
+ import { assertUnsigned32Bits } from "../geometry/validation.js";
12
+
13
+ /** Two explicit unsigned 32-bit bit sets for collision eligibility. */
14
+
15
+ /**
16
+ * True when the two filters allow a collision (symmetric check).
17
+ *
18
+ * Invalid (non-unsigned-32-bit) values throw `GeometryError` before any
19
+ * comparison; `false` never implies malformed input.
20
+ */
21
+ export function canCollide2D(first, second) {
22
+ assertUnsigned32Bits(first.categoryBits, 'first.categoryBits');
23
+ assertUnsigned32Bits(first.maskBits, 'first.maskBits');
24
+ assertUnsigned32Bits(second.categoryBits, 'second.categoryBits');
25
+ assertUnsigned32Bits(second.maskBits, 'second.maskBits');
26
+ return (first.categoryBits & second.maskBits) !== 0 && (second.categoryBits & first.maskBits) !== 0;
27
+ }
28
+
29
+ /** A collider without a filter: eligible with everything. */
30
+ export const ALL_FILTER2D = Object.freeze({
31
+ categoryBits: 0xffffffff,
32
+ maskBits: 0xffffffff
33
+ });
34
+
35
+ /** A collider that collides with nothing. */
36
+ export const NONE_FILTER2D = Object.freeze({
37
+ categoryBits: 0,
38
+ maskBits: 0
39
+ });
40
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assertUnsigned32Bits","canCollide2D","first","second","categoryBits","maskBits","ALL_FILTER2D","Object","freeze","NONE_FILTER2D"],"sourceRoot":"../../../src","sources":["collision2d/filters.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,oBAAoB,QAAQ,2BAAwB;;AAE7D;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAACC,KAAwB,EAAEC,MAAyB,EAAW;EACzFH,oBAAoB,CAACE,KAAK,CAACE,YAAY,EAAE,oBAAoB,CAAC;EAC9DJ,oBAAoB,CAACE,KAAK,CAACG,QAAQ,EAAE,gBAAgB,CAAC;EACtDL,oBAAoB,CAACG,MAAM,CAACC,YAAY,EAAE,qBAAqB,CAAC;EAChEJ,oBAAoB,CAACG,MAAM,CAACE,QAAQ,EAAE,iBAAiB,CAAC;EACxD,OACE,CAACH,KAAK,CAACE,YAAY,GAAGD,MAAM,CAACE,QAAQ,MAAM,CAAC,IAC5C,CAACF,MAAM,CAACC,YAAY,GAAGF,KAAK,CAACG,QAAQ,MAAM,CAAC;AAEhD;;AAEA;AACA,OAAO,MAAMC,YAA+B,GAAGC,MAAM,CAACC,MAAM,CAAC;EAC3DJ,YAAY,EAAE,UAAU;EACxBC,QAAQ,EAAE;AACZ,CAAC,CAAC;;AAEF;AACA,OAAO,MAAMI,aAAgC,GAAGF,MAAM,CAACC,MAAM,CAAC;EAC5DJ,YAAY,EAAE,CAAC;EACfC,QAAQ,EAAE;AACZ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ export { RESOLUTION_TOLERANCE } from "./manifolds.js";
4
+ export { collideAabbAabb2D, collideCircleAabb2D, collideCircleCircle2D } from "./manifolds.js";
5
+ export { closestPointOnAabb2D, intersectsAabbAabb2D, intersectsCircleAabb2D, intersectsCircleCircle2D, pointInAabb2D, pointInCircle2D } from "./intersections.js";
6
+ export { intersectSegmentAabb2D, intersectSegmentCircle2D } from "./segments.js";
7
+ export { sweepAabbAabb2D, sweepCircleAabb2D } from "./sweeps.js";
8
+ export { ALL_FILTER2D, canCollide2D, NONE_FILTER2D } from "./filters.js";
9
+ export { circleCollider2D, collideWorldColliders2D, placeCollider2D, rectangleCollider2D, worldColliderBounds2D, worldColliderCircle2D } from "./colliders.js";
10
+ export { buildSpatialHash2D, querySpatialHash2D } from "./spatialHash.js";
11
+ export { projectHit2D, projectSweepPath2D, projectVector2D, projectWorldCollider2D } from "./debug.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RESOLUTION_TOLERANCE","collideAabbAabb2D","collideCircleAabb2D","collideCircleCircle2D","closestPointOnAabb2D","intersectsAabbAabb2D","intersectsCircleAabb2D","intersectsCircleCircle2D","pointInAabb2D","pointInCircle2D","intersectSegmentAabb2D","intersectSegmentCircle2D","sweepAabbAabb2D","sweepCircleAabb2D","ALL_FILTER2D","canCollide2D","NONE_FILTER2D","circleCollider2D","collideWorldColliders2D","placeCollider2D","rectangleCollider2D","worldColliderBounds2D","worldColliderCircle2D","buildSpatialHash2D","querySpatialHash2D","projectHit2D","projectSweepPath2D","projectVector2D","projectWorldCollider2D"],"sourceRoot":"../../../src","sources":["collision2d/index.ts"],"mappings":";;AACA,SAASA,oBAAoB,QAAQ,gBAAa;AAClD,SACEC,iBAAiB,EACjBC,mBAAmB,EACnBC,qBAAqB,QAChB,gBAAa;AACpB,SACEC,oBAAoB,EACpBC,oBAAoB,EACpBC,sBAAsB,EACtBC,wBAAwB,EACxBC,aAAa,EACbC,eAAe,QACV,oBAAiB;AAExB,SACEC,sBAAsB,EACtBC,wBAAwB,QACnB,eAAY;AAMnB,SACEC,eAAe,EACfC,iBAAiB,QACZ,aAAU;AAEjB,SACEC,YAAY,EACZC,YAAY,EACZC,aAAa,QACR,cAAW;AAYlB,SACEC,gBAAgB,EAChBC,uBAAuB,EACvBC,eAAe,EACfC,mBAAmB,EACnBC,qBAAqB,EACrBC,qBAAqB,QAChB,gBAAa;AAEpB,SACEC,kBAAkB,EAClBC,kBAAkB,QACb,kBAAe;AAUtB,SACEC,YAAY,EACZC,kBAAkB,EAClBC,eAAe,EACfC,sBAAsB,QACjB,YAAS","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Static intersection predicates (T11.2).
5
+ *
6
+ * Boundary contact counts as intersection. Invalid geometry throws
7
+ * `GeometryError`; `false` means normal domain absence. All predicates
8
+ * allocate nothing.
9
+ */
10
+
11
+ import { assertValidAabb2D, assertValidCircle2D, assertValidPoint2D } from "../geometry/validation.js";
12
+
13
+ /** True when `point` lies in or on `aabb` (boundary inclusive). */
14
+ export function pointInAabb2D(point, aabb) {
15
+ assertValidPoint2D(point, 'point');
16
+ assertValidAabb2D(aabb);
17
+ return point.x >= aabb.x && point.x <= aabb.x + aabb.width && point.y >= aabb.y && point.y <= aabb.y + aabb.height;
18
+ }
19
+
20
+ /** True when `point` lies in or on `circle` (boundary inclusive). */
21
+ export function pointInCircle2D(point, circle) {
22
+ assertValidPoint2D(point, 'point');
23
+ assertValidCircle2D(circle);
24
+ const dx = point.x - circle.x;
25
+ const dy = point.y - circle.y;
26
+ return dx * dx + dy * dy <= circle.radius * circle.radius;
27
+ }
28
+
29
+ /** True when the two AABBs intersect or touch. */
30
+ export function intersectsAabbAabb2D(first, second) {
31
+ assertValidAabb2D(first, 'first');
32
+ assertValidAabb2D(second, 'second');
33
+ return first.x <= second.x + second.width && first.x + first.width >= second.x && first.y <= second.y + second.height && first.y + first.height >= second.y;
34
+ }
35
+
36
+ /** True when the two circles intersect or touch. */
37
+ export function intersectsCircleCircle2D(first, second) {
38
+ assertValidCircle2D(first, 'first');
39
+ assertValidCircle2D(second, 'second');
40
+ const dx = second.x - first.x;
41
+ const dy = second.y - first.y;
42
+ const radiusSum = first.radius + second.radius;
43
+ return dx * dx + dy * dy <= radiusSum * radiusSum;
44
+ }
45
+
46
+ /** True when the circle intersects or touches the AABB. */
47
+ export function intersectsCircleAabb2D(circle, aabb) {
48
+ assertValidCircle2D(circle);
49
+ assertValidAabb2D(aabb);
50
+ const closestX = clamp(circle.x, aabb.x, aabb.x + aabb.width);
51
+ const closestY = clamp(circle.y, aabb.y, aabb.y + aabb.height);
52
+ const dx = circle.x - closestX;
53
+ const dy = circle.y - closestY;
54
+ return dx * dx + dy * dy <= circle.radius * circle.radius;
55
+ }
56
+
57
+ /** Closest point on the AABB to the circle center (shared by manifold code). */
58
+ export function closestPointOnAabb2D(point, aabb) {
59
+ return {
60
+ x: clamp(point.x, aabb.x, aabb.x + aabb.width),
61
+ y: clamp(point.y, aabb.y, aabb.y + aabb.height)
62
+ };
63
+ }
64
+ function clamp(value, min, max) {
65
+ return value < min ? min : value > max ? max : value;
66
+ }
67
+ //# sourceMappingURL=intersections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assertValidAabb2D","assertValidCircle2D","assertValidPoint2D","pointInAabb2D","point","aabb","x","width","y","height","pointInCircle2D","circle","dx","dy","radius","intersectsAabbAabb2D","first","second","intersectsCircleCircle2D","radiusSum","intersectsCircleAabb2D","closestX","clamp","closestY","closestPointOnAabb2D","value","min","max"],"sourceRoot":"../../../src","sources":["collision2d/intersections.ts"],"mappings":"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","ignoreList":[]}