murow 0.0.70 → 0.0.71

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 (439) hide show
  1. package/README.md +52 -37
  2. package/dist/cjs/core/binary-codec/binary-codec.js +1 -0
  3. package/dist/cjs/core/binary-codec/index.js +1 -0
  4. package/dist/cjs/core/driver/driver.js +1 -0
  5. package/dist/cjs/core/driver/drivers/immediate.js +1 -0
  6. package/dist/cjs/core/driver/drivers/index.js +1 -0
  7. package/dist/cjs/core/driver/drivers/raf.js +1 -0
  8. package/dist/cjs/core/driver/drivers/timeout.js +1 -0
  9. package/dist/cjs/core/driver/index.js +1 -0
  10. package/dist/cjs/core/events/event-system.js +1 -0
  11. package/dist/cjs/core/events/index.js +1 -0
  12. package/dist/cjs/core/fixed-ticker/fixed-ticker.js +1 -0
  13. package/dist/cjs/core/fixed-ticker/index.js +1 -0
  14. package/dist/cjs/core/free-list/free-list.js +1 -0
  15. package/dist/cjs/core/free-list/index.js +1 -0
  16. package/dist/cjs/core/generate-id/generate-id.js +1 -0
  17. package/dist/cjs/core/generate-id/index.js +1 -0
  18. package/dist/cjs/core/index.js +1 -0
  19. package/dist/cjs/core/input/index.js +1 -0
  20. package/dist/cjs/core/input/manager.js +1 -0
  21. package/dist/cjs/core/input/sources/browser.js +1 -0
  22. package/dist/cjs/core/input/sources/index.js +1 -0
  23. package/dist/cjs/core/input/types.js +1 -0
  24. package/dist/cjs/core/lerp/index.js +1 -0
  25. package/dist/cjs/core/lerp/lerp.js +1 -0
  26. package/dist/cjs/core/navmesh/index.js +1 -0
  27. package/dist/cjs/core/navmesh/navmesh-worker-pool.js +1 -0
  28. package/dist/cjs/core/navmesh/navmesh.js +1 -0
  29. package/dist/cjs/core/navmesh/navmesh.worker.js +1 -0
  30. package/dist/cjs/core/pooled-codec/index.js +1 -0
  31. package/dist/cjs/core/pooled-codec/pooled-codec.js +1 -0
  32. package/dist/cjs/core/prediction/index.js +1 -0
  33. package/dist/cjs/core/prediction/prediction.js +1 -0
  34. package/dist/cjs/core/ray/index.js +1 -0
  35. package/dist/cjs/core/ray/ray-2d.js +1 -0
  36. package/dist/cjs/core/ray/ray-3d.js +1 -0
  37. package/dist/cjs/core/simple-rng/index.js +1 -0
  38. package/dist/cjs/core/simple-rng/simple-rng.js +1 -0
  39. package/dist/cjs/core/sparse-batcher/index.js +1 -0
  40. package/dist/cjs/core/sparse-batcher/sparse-batcher.js +1 -0
  41. package/dist/cjs/ecs/component-store.js +1 -0
  42. package/dist/cjs/ecs/component.js +1 -0
  43. package/dist/cjs/ecs/entity-handle.js +1 -0
  44. package/dist/cjs/ecs/index.js +1 -0
  45. package/dist/cjs/ecs/system-builder.js +1 -0
  46. package/dist/cjs/ecs/world-systems.js +1 -0
  47. package/dist/cjs/ecs/world.js +1 -0
  48. package/dist/cjs/game/index.js +1 -0
  49. package/dist/cjs/game/loop/index.js +1 -0
  50. package/dist/cjs/game/loop/loop.js +1 -0
  51. package/dist/cjs/index.js +1 -0
  52. package/dist/cjs/net/adapters/browser-websocket.js +1 -0
  53. package/dist/cjs/net/adapters/bun-websocket.js +1 -0
  54. package/dist/cjs/net/buffer-pool.js +1 -0
  55. package/dist/cjs/net/client.js +1 -0
  56. package/dist/cjs/net/index.js +1 -0
  57. package/dist/cjs/net/server.js +1 -0
  58. package/dist/cjs/net/types.js +1 -0
  59. package/dist/cjs/net/validators.js +1 -0
  60. package/dist/cjs/protocol/index.js +1 -0
  61. package/dist/cjs/protocol/intent/define-intent.js +1 -0
  62. package/dist/cjs/protocol/intent/index.js +1 -0
  63. package/dist/cjs/protocol/intent/intent-registry.js +1 -0
  64. package/dist/cjs/protocol/intent/intent.js +1 -0
  65. package/dist/cjs/protocol/rpc/define-rpc.js +1 -0
  66. package/dist/cjs/protocol/rpc/index.js +1 -0
  67. package/dist/cjs/protocol/rpc/rpc-registry.js +1 -0
  68. package/dist/cjs/protocol/rpc/rpc.js +1 -0
  69. package/dist/cjs/protocol/snapshot/index.js +1 -0
  70. package/dist/cjs/protocol/snapshot/snapshot-codec.js +1 -0
  71. package/dist/cjs/protocol/snapshot/snapshot-registry.js +1 -0
  72. package/dist/cjs/protocol/snapshot/snapshot.js +1 -0
  73. package/dist/cjs/renderer/base-2d-renderer.js +1 -0
  74. package/dist/cjs/renderer/base-3d-renderer.js +1 -0
  75. package/dist/cjs/renderer/base-renderer.js +1 -0
  76. package/dist/cjs/renderer/index.js +1 -0
  77. package/dist/cjs/renderer/types.js +1 -0
  78. package/dist/esm/core/binary-codec/binary-codec.js +1 -0
  79. package/dist/esm/core/binary-codec/index.js +1 -0
  80. package/dist/esm/core/driver/driver.js +1 -0
  81. package/dist/esm/core/driver/drivers/immediate.js +1 -0
  82. package/dist/esm/core/driver/drivers/index.js +1 -0
  83. package/dist/esm/core/driver/drivers/raf.js +1 -0
  84. package/dist/esm/core/driver/drivers/timeout.js +1 -0
  85. package/dist/esm/core/driver/index.js +1 -0
  86. package/dist/esm/core/events/event-system.js +1 -0
  87. package/dist/esm/core/events/index.js +1 -0
  88. package/dist/esm/core/fixed-ticker/fixed-ticker.js +1 -0
  89. package/dist/esm/core/fixed-ticker/index.js +1 -0
  90. package/dist/esm/core/free-list/free-list.js +1 -0
  91. package/dist/esm/core/free-list/index.js +1 -0
  92. package/dist/esm/core/generate-id/generate-id.js +1 -0
  93. package/dist/esm/core/generate-id/index.js +1 -0
  94. package/dist/esm/core/index.js +1 -0
  95. package/dist/esm/core/input/index.js +1 -0
  96. package/dist/esm/core/input/manager.js +1 -0
  97. package/dist/esm/core/input/sources/browser.js +1 -0
  98. package/dist/esm/core/input/sources/index.js +1 -0
  99. package/dist/esm/core/input/types.js +0 -0
  100. package/dist/esm/core/lerp/index.js +1 -0
  101. package/dist/esm/core/lerp/lerp.js +1 -0
  102. package/dist/esm/core/navmesh/index.js +1 -0
  103. package/dist/esm/core/navmesh/navmesh-worker-pool.js +1 -0
  104. package/dist/esm/core/navmesh/navmesh.js +1 -0
  105. package/dist/esm/core/navmesh/navmesh.worker.js +1 -0
  106. package/dist/esm/core/pooled-codec/index.js +1 -0
  107. package/dist/esm/core/pooled-codec/pooled-codec.js +1 -0
  108. package/dist/esm/core/prediction/index.js +1 -0
  109. package/dist/esm/core/prediction/prediction.js +1 -0
  110. package/dist/esm/core/ray/index.js +1 -0
  111. package/dist/esm/core/ray/ray-2d.js +1 -0
  112. package/dist/esm/core/ray/ray-3d.js +1 -0
  113. package/dist/esm/core/simple-rng/index.js +1 -0
  114. package/dist/esm/core/simple-rng/simple-rng.js +1 -0
  115. package/dist/esm/core/sparse-batcher/index.js +1 -0
  116. package/dist/esm/core/sparse-batcher/sparse-batcher.js +1 -0
  117. package/dist/esm/ecs/component-store.js +1 -0
  118. package/dist/esm/ecs/component.js +1 -0
  119. package/dist/esm/ecs/entity-handle.js +1 -0
  120. package/dist/esm/ecs/index.js +1 -0
  121. package/dist/esm/ecs/system-builder.js +1 -0
  122. package/dist/esm/ecs/world-systems.js +1 -0
  123. package/dist/esm/ecs/world.js +1 -0
  124. package/dist/esm/game/index.js +1 -0
  125. package/dist/esm/game/loop/index.js +1 -0
  126. package/dist/esm/game/loop/loop.js +1 -0
  127. package/dist/esm/index.js +1 -0
  128. package/dist/esm/net/adapters/browser-websocket.js +1 -0
  129. package/dist/esm/net/adapters/bun-websocket.js +1 -0
  130. package/dist/esm/net/buffer-pool.js +1 -0
  131. package/dist/esm/net/client.js +1 -0
  132. package/dist/esm/net/index.js +1 -0
  133. package/dist/esm/net/server.js +1 -0
  134. package/dist/esm/net/types.js +1 -0
  135. package/dist/esm/net/validators.js +1 -0
  136. package/dist/esm/protocol/index.js +1 -0
  137. package/dist/esm/protocol/intent/define-intent.js +1 -0
  138. package/dist/esm/protocol/intent/index.js +1 -0
  139. package/dist/esm/protocol/intent/intent-registry.js +1 -0
  140. package/dist/esm/protocol/intent/intent.js +0 -0
  141. package/dist/esm/protocol/rpc/define-rpc.js +1 -0
  142. package/dist/esm/protocol/rpc/index.js +1 -0
  143. package/dist/esm/protocol/rpc/rpc-registry.js +1 -0
  144. package/dist/esm/protocol/rpc/rpc.js +0 -0
  145. package/dist/esm/protocol/snapshot/index.js +1 -0
  146. package/dist/esm/protocol/snapshot/snapshot-codec.js +1 -0
  147. package/dist/esm/protocol/snapshot/snapshot-registry.js +1 -0
  148. package/dist/esm/protocol/snapshot/snapshot.js +1 -0
  149. package/dist/esm/renderer/base-2d-renderer.js +1 -0
  150. package/dist/esm/renderer/base-3d-renderer.js +1 -0
  151. package/dist/esm/renderer/base-renderer.js +1 -0
  152. package/dist/esm/renderer/index.js +1 -0
  153. package/dist/esm/renderer/types.js +0 -0
  154. package/dist/{core → types/core}/binary-codec/binary-codec.d.ts +4 -0
  155. package/dist/{core → types/core}/events/event-system.d.ts +14 -33
  156. package/dist/types/core/free-list/free-list.d.ts +31 -0
  157. package/dist/types/core/free-list/index.d.ts +1 -0
  158. package/dist/{core → types/core}/index.d.ts +5 -0
  159. package/dist/{core → types/core}/input/index.d.ts +1 -0
  160. package/dist/{core → types/core}/input/manager.d.ts +2 -0
  161. package/dist/{core → types/core}/navmesh/navmesh.d.ts +1 -21
  162. package/dist/types/core/ray/index.d.ts +2 -0
  163. package/dist/types/core/ray/ray-2d.d.ts +37 -0
  164. package/dist/types/core/ray/ray-3d.d.ts +42 -0
  165. package/dist/types/core/simple-rng/index.d.ts +1 -0
  166. package/dist/types/core/simple-rng/simple-rng.d.ts +36 -0
  167. package/dist/types/core/sparse-batcher/index.d.ts +1 -0
  168. package/dist/types/core/sparse-batcher/sparse-batcher.d.ts +55 -0
  169. package/dist/{ecs → types/ecs}/world.d.ts +11 -0
  170. package/dist/{game → types/game}/loop/loop.d.ts +33 -29
  171. package/dist/{index.d.ts → types/index.d.ts} +1 -0
  172. package/dist/{net → types/net}/index.d.ts +2 -2
  173. package/dist/types/renderer/base-2d-renderer.d.ts +13 -0
  174. package/dist/types/renderer/base-3d-renderer.d.ts +10 -0
  175. package/dist/types/renderer/base-renderer.d.ts +21 -0
  176. package/dist/types/renderer/index.d.ts +4 -0
  177. package/dist/types/renderer/types.d.ts +79 -0
  178. package/dist/webgpu/cjs/index.js +6004 -0
  179. package/dist/webgpu/esm/index.js +5972 -0
  180. package/dist/webgpu/types/2d/animation.d.ts +97 -0
  181. package/dist/webgpu/types/2d/renderer.d.ts +55 -0
  182. package/dist/webgpu/types/2d/shader.d.ts +61 -0
  183. package/dist/webgpu/types/2d/sprite-accessor.d.ts +47 -0
  184. package/dist/webgpu/types/3d/gltf-skin-parser.d.ts +101 -0
  185. package/dist/webgpu/types/3d/morph-animation.d.ts +69 -0
  186. package/dist/webgpu/types/3d/morph-animation.test.d.ts +1 -0
  187. package/dist/webgpu/types/3d/renderer.d.ts +216 -0
  188. package/dist/webgpu/types/3d/shader.d.ts +136 -0
  189. package/dist/webgpu/types/3d/skeletal-animation-compute/index.d.ts +2 -0
  190. package/dist/webgpu/types/3d/skeletal-animation-compute/kernel.d.ts +8 -0
  191. package/dist/webgpu/types/3d/skeletal-animation-compute/packer.d.ts +32 -0
  192. package/dist/webgpu/types/3d/skeletal-animation.d.ts +90 -0
  193. package/dist/webgpu/types/camera/camera-2d.d.ts +53 -0
  194. package/dist/webgpu/types/camera/camera-2d.test.d.ts +1 -0
  195. package/dist/webgpu/types/camera/camera-3d.d.ts +81 -0
  196. package/dist/webgpu/types/camera/camera-3d.test.d.ts +1 -0
  197. package/dist/webgpu/types/camera/index.d.ts +2 -0
  198. package/dist/webgpu/types/compute/compute-builder.d.ts +123 -0
  199. package/dist/webgpu/types/compute/compute-builder.test.d.ts +1 -0
  200. package/dist/webgpu/types/core/constants.d.ts +59 -0
  201. package/dist/webgpu/types/core/constants.test.d.ts +1 -0
  202. package/dist/webgpu/types/core/index.d.ts +2 -0
  203. package/dist/webgpu/types/core/math.d.ts +37 -0
  204. package/dist/webgpu/types/core/types.d.ts +125 -0
  205. package/dist/webgpu/types/core/types.test.d.ts +1 -0
  206. package/dist/webgpu/types/geometry/built-in.d.ts +58 -0
  207. package/dist/webgpu/types/geometry/built-in.test.d.ts +1 -0
  208. package/dist/webgpu/types/geometry/geometry-builder.d.ts +281 -0
  209. package/dist/webgpu/types/geometry/geometry-builder.test.d.ts +1 -0
  210. package/dist/webgpu/types/geometry/index.d.ts +2 -0
  211. package/dist/webgpu/types/index.d.ts +32 -0
  212. package/dist/webgpu/types/particle/emitter.d.ts +36 -0
  213. package/dist/webgpu/types/shaders/index.d.ts +2 -0
  214. package/dist/webgpu/types/shaders/runtime-transpile.d.ts +18 -0
  215. package/dist/webgpu/types/shaders/sprite-2d.wgsl.d.ts +10 -0
  216. package/dist/webgpu/types/shaders/typegpu.d.ts +9 -0
  217. package/dist/webgpu/types/shaders/utils.d.ts +28 -0
  218. package/dist/webgpu/types/shaders/utils.test.d.ts +1 -0
  219. package/dist/webgpu/types/spritesheet/index.d.ts +1 -0
  220. package/dist/webgpu/types/spritesheet/spritesheet.d.ts +57 -0
  221. package/dist/webgpu/types/spritesheet/spritesheet.test.d.ts +1 -0
  222. package/package.json +96 -26
  223. package/dist/core/binary-codec/binary-codec.js +0 -354
  224. package/dist/core/binary-codec/index.js +0 -1
  225. package/dist/core/driver/driver.js +0 -47
  226. package/dist/core/driver/drivers/immediate.js +0 -61
  227. package/dist/core/driver/drivers/index.js +0 -3
  228. package/dist/core/driver/drivers/raf.js +0 -62
  229. package/dist/core/driver/drivers/timeout.js +0 -71
  230. package/dist/core/driver/index.js +0 -2
  231. package/dist/core/events/event-system.js +0 -88
  232. package/dist/core/events/index.js +0 -1
  233. package/dist/core/fixed-ticker/fixed-ticker.js +0 -105
  234. package/dist/core/fixed-ticker/index.js +0 -1
  235. package/dist/core/generate-id/generate-id.js +0 -25
  236. package/dist/core/generate-id/index.js +0 -1
  237. package/dist/core/index.js +0 -10
  238. package/dist/core/input/index.js +0 -2
  239. package/dist/core/input/manager.js +0 -211
  240. package/dist/core/input/sources/browser.js +0 -29
  241. package/dist/core/input/sources/index.js +0 -1
  242. package/dist/core/lerp/index.js +0 -1
  243. package/dist/core/lerp/lerp.js +0 -42
  244. package/dist/core/navmesh/index.js +0 -1
  245. package/dist/core/navmesh/navmesh-worker-pool.js +0 -180
  246. package/dist/core/navmesh/navmesh.js +0 -799
  247. package/dist/core/navmesh/navmesh.worker.js +0 -79
  248. package/dist/core/pooled-codec/index.js +0 -1
  249. package/dist/core/pooled-codec/pooled-codec.js +0 -410
  250. package/dist/core/prediction/index.js +0 -1
  251. package/dist/core/prediction/prediction.js +0 -99
  252. package/dist/core.esm.js +0 -1
  253. package/dist/core.js +0 -1
  254. package/dist/ecs/component-store.js +0 -175
  255. package/dist/ecs/component.js +0 -43
  256. package/dist/ecs/entity-handle.js +0 -515
  257. package/dist/ecs/example.js +0 -125
  258. package/dist/ecs/index.js +0 -4
  259. package/dist/ecs/system-builder.js +0 -249
  260. package/dist/ecs/world-systems.js +0 -79
  261. package/dist/ecs/world.js +0 -767
  262. package/dist/game/index.js +0 -1
  263. package/dist/game/loop/index.js +0 -1
  264. package/dist/game/loop/loop.js +0 -108
  265. package/dist/index.js +0 -26
  266. package/dist/net/adapters/browser-websocket.js +0 -74
  267. package/dist/net/adapters/bun-websocket.js +0 -245
  268. package/dist/net/buffer-pool.js +0 -89
  269. package/dist/net/client.js +0 -586
  270. package/dist/net/index.js +0 -58
  271. package/dist/net/server.js +0 -974
  272. package/dist/net/types.js +0 -31
  273. package/dist/net/validators.js +0 -88
  274. package/dist/protocol/index.js +0 -92
  275. package/dist/protocol/intent/define-intent.js +0 -125
  276. package/dist/protocol/intent/index.js +0 -91
  277. package/dist/protocol/intent/intent-registry.js +0 -91
  278. package/dist/protocol/rpc/define-rpc.js +0 -84
  279. package/dist/protocol/rpc/index.js +0 -3
  280. package/dist/protocol/rpc/rpc-registry.js +0 -159
  281. package/dist/protocol/rpc/rpc.js +0 -12
  282. package/dist/protocol/snapshot/index.js +0 -43
  283. package/dist/protocol/snapshot/snapshot-codec.js +0 -67
  284. package/dist/protocol/snapshot/snapshot-registry.js +0 -168
  285. package/dist/protocol/snapshot/snapshot.js +0 -30
  286. package/src/core/binary-codec/README.md +0 -60
  287. package/src/core/binary-codec/binary-codec.test.ts +0 -300
  288. package/src/core/binary-codec/binary-codec.ts +0 -448
  289. package/src/core/binary-codec/index.ts +0 -1
  290. package/src/core/driver/README.md +0 -97
  291. package/src/core/driver/driver.test.ts +0 -414
  292. package/src/core/driver/driver.ts +0 -71
  293. package/src/core/driver/drivers/immediate.ts +0 -66
  294. package/src/core/driver/drivers/index.ts +0 -3
  295. package/src/core/driver/drivers/raf.ts +0 -67
  296. package/src/core/driver/drivers/timeout.ts +0 -77
  297. package/src/core/driver/index.ts +0 -2
  298. package/src/core/events/README.md +0 -47
  299. package/src/core/events/event-system.test.ts +0 -243
  300. package/src/core/events/event-system.ts +0 -140
  301. package/src/core/events/index.ts +0 -1
  302. package/src/core/fixed-ticker/README.md +0 -77
  303. package/src/core/fixed-ticker/fixed-ticker.test.ts +0 -151
  304. package/src/core/fixed-ticker/fixed-ticker.ts +0 -174
  305. package/src/core/fixed-ticker/index.ts +0 -1
  306. package/src/core/generate-id/README.md +0 -18
  307. package/src/core/generate-id/generate-id.test.ts +0 -79
  308. package/src/core/generate-id/generate-id.ts +0 -37
  309. package/src/core/generate-id/index.ts +0 -1
  310. package/src/core/index.ts +0 -10
  311. package/src/core/input/README.md +0 -24
  312. package/src/core/input/index.ts +0 -2
  313. package/src/core/input/manager.ts +0 -259
  314. package/src/core/input/sources/browser.ts +0 -39
  315. package/src/core/input/sources/index.ts +0 -1
  316. package/src/core/input/types.ts +0 -40
  317. package/src/core/lerp/README.md +0 -79
  318. package/src/core/lerp/index.ts +0 -1
  319. package/src/core/lerp/lerp.test.ts +0 -90
  320. package/src/core/lerp/lerp.ts +0 -42
  321. package/src/core/navmesh/README.md +0 -164
  322. package/src/core/navmesh/index.ts +0 -1
  323. package/src/core/navmesh/navmesh-worker-pool.ts +0 -236
  324. package/src/core/navmesh/navmesh-workers.test.ts +0 -356
  325. package/src/core/navmesh/navmesh.test.ts +0 -344
  326. package/src/core/navmesh/navmesh.ts +0 -1047
  327. package/src/core/navmesh/navmesh.worker.ts +0 -147
  328. package/src/core/pooled-codec/README.md +0 -70
  329. package/src/core/pooled-codec/index.ts +0 -1
  330. package/src/core/pooled-codec/pooled-codec.test.ts +0 -862
  331. package/src/core/pooled-codec/pooled-codec.ts +0 -504
  332. package/src/core/prediction/README.md +0 -64
  333. package/src/core/prediction/index.ts +0 -1
  334. package/src/core/prediction/prediction.test.ts +0 -423
  335. package/src/core/prediction/prediction.ts +0 -112
  336. package/src/ecs/README.md +0 -427
  337. package/src/ecs/benchmark.test.ts +0 -1645
  338. package/src/ecs/component-store.ts +0 -198
  339. package/src/ecs/component.ts +0 -90
  340. package/src/ecs/entity-handle.test.ts +0 -393
  341. package/src/ecs/entity-handle.ts +0 -563
  342. package/src/ecs/example.ts +0 -152
  343. package/src/ecs/index.ts +0 -4
  344. package/src/ecs/system-builder.ts +0 -404
  345. package/src/ecs/world-systems.ts +0 -83
  346. package/src/ecs/world.test.ts +0 -310
  347. package/src/ecs/world.ts +0 -904
  348. package/src/game/index.ts +0 -1
  349. package/src/game/loop/README.md +0 -32
  350. package/src/game/loop/index.ts +0 -1
  351. package/src/game/loop/loop.ts +0 -236
  352. package/src/index.ts +0 -32
  353. package/src/net/README.md +0 -474
  354. package/src/net/adapters/browser-websocket.ts +0 -86
  355. package/src/net/adapters/bun-websocket.ts +0 -292
  356. package/src/net/buffer-pool.ts +0 -106
  357. package/src/net/client.test.ts +0 -807
  358. package/src/net/client.ts +0 -695
  359. package/src/net/index.ts +0 -60
  360. package/src/net/server.test.ts +0 -799
  361. package/src/net/server.ts +0 -1152
  362. package/src/net/types.ts +0 -228
  363. package/src/net/validators.ts +0 -104
  364. package/src/protocol/README.md +0 -469
  365. package/src/protocol/index.ts +0 -93
  366. package/src/protocol/intent/define-intent.test.ts +0 -397
  367. package/src/protocol/intent/define-intent.ts +0 -201
  368. package/src/protocol/intent/index.ts +0 -94
  369. package/src/protocol/intent/intent-registry.test.ts +0 -198
  370. package/src/protocol/intent/intent-registry.ts +0 -112
  371. package/src/protocol/intent/intent.ts +0 -12
  372. package/src/protocol/rpc/define-rpc.test.ts +0 -141
  373. package/src/protocol/rpc/define-rpc.ts +0 -113
  374. package/src/protocol/rpc/index.ts +0 -3
  375. package/src/protocol/rpc/rpc-registry.test.ts +0 -168
  376. package/src/protocol/rpc/rpc-registry.ts +0 -176
  377. package/src/protocol/rpc/rpc.ts +0 -37
  378. package/src/protocol/snapshot/index.ts +0 -45
  379. package/src/protocol/snapshot/snapshot-codec.test.ts +0 -138
  380. package/src/protocol/snapshot/snapshot-codec.ts +0 -87
  381. package/src/protocol/snapshot/snapshot-registry.test.ts +0 -310
  382. package/src/protocol/snapshot/snapshot-registry.ts +0 -201
  383. package/src/protocol/snapshot/snapshot.test.ts +0 -76
  384. package/src/protocol/snapshot/snapshot.ts +0 -41
  385. /package/dist/{core → types/core}/binary-codec/index.d.ts +0 -0
  386. /package/dist/{core → types/core}/driver/driver.d.ts +0 -0
  387. /package/dist/{core → types/core}/driver/drivers/immediate.d.ts +0 -0
  388. /package/dist/{core → types/core}/driver/drivers/index.d.ts +0 -0
  389. /package/dist/{core → types/core}/driver/drivers/raf.d.ts +0 -0
  390. /package/dist/{core → types/core}/driver/drivers/timeout.d.ts +0 -0
  391. /package/dist/{core → types/core}/driver/index.d.ts +0 -0
  392. /package/dist/{core → types/core}/events/index.d.ts +0 -0
  393. /package/dist/{core → types/core}/fixed-ticker/fixed-ticker.d.ts +0 -0
  394. /package/dist/{core → types/core}/fixed-ticker/index.d.ts +0 -0
  395. /package/dist/{core → types/core}/generate-id/generate-id.d.ts +0 -0
  396. /package/dist/{core → types/core}/generate-id/index.d.ts +0 -0
  397. /package/dist/{core → types/core}/input/sources/browser.d.ts +0 -0
  398. /package/dist/{core → types/core}/input/sources/index.d.ts +0 -0
  399. /package/dist/{core → types/core}/input/types.d.ts +0 -0
  400. /package/dist/{core → types/core}/lerp/index.d.ts +0 -0
  401. /package/dist/{core → types/core}/lerp/lerp.d.ts +0 -0
  402. /package/dist/{core → types/core}/navmesh/index.d.ts +0 -0
  403. /package/dist/{core → types/core}/navmesh/navmesh-worker-pool.d.ts +0 -0
  404. /package/dist/{core → types/core}/navmesh/navmesh.worker.d.ts +0 -0
  405. /package/dist/{core → types/core}/pooled-codec/index.d.ts +0 -0
  406. /package/dist/{core → types/core}/pooled-codec/pooled-codec.d.ts +0 -0
  407. /package/dist/{core → types/core}/prediction/index.d.ts +0 -0
  408. /package/dist/{core → types/core}/prediction/prediction.d.ts +0 -0
  409. /package/dist/{ecs → types/ecs}/component-store.d.ts +0 -0
  410. /package/dist/{ecs → types/ecs}/component.d.ts +0 -0
  411. /package/dist/{ecs → types/ecs}/entity-handle.d.ts +0 -0
  412. /package/dist/{ecs → types/ecs}/example.d.ts +0 -0
  413. /package/dist/{ecs → types/ecs}/index.d.ts +0 -0
  414. /package/dist/{ecs → types/ecs}/system-builder.d.ts +0 -0
  415. /package/dist/{ecs → types/ecs}/world-systems.d.ts +0 -0
  416. /package/dist/{game → types/game}/index.d.ts +0 -0
  417. /package/dist/{game → types/game}/loop/index.d.ts +0 -0
  418. /package/dist/{net → types/net}/adapters/browser-websocket.d.ts +0 -0
  419. /package/dist/{net → types/net}/adapters/bun-websocket.d.ts +0 -0
  420. /package/dist/{net → types/net}/buffer-pool.d.ts +0 -0
  421. /package/dist/{net → types/net}/client.d.ts +0 -0
  422. /package/dist/{net → types/net}/server.d.ts +0 -0
  423. /package/dist/{net → types/net}/types.d.ts +0 -0
  424. /package/dist/{net → types/net}/validators.d.ts +0 -0
  425. /package/dist/{protocol → types/protocol}/index.d.ts +0 -0
  426. /package/dist/{protocol → types/protocol}/intent/define-intent.d.ts +0 -0
  427. /package/dist/{protocol → types/protocol}/intent/index.d.ts +0 -0
  428. /package/dist/{protocol → types/protocol}/intent/intent-registry.d.ts +0 -0
  429. /package/dist/{protocol → types/protocol}/intent/intent.d.ts +0 -0
  430. /package/dist/{protocol → types/protocol}/rpc/define-rpc.d.ts +0 -0
  431. /package/dist/{protocol → types/protocol}/rpc/index.d.ts +0 -0
  432. /package/dist/{protocol → types/protocol}/rpc/rpc-registry.d.ts +0 -0
  433. /package/dist/{protocol → types/protocol}/rpc/rpc.d.ts +0 -0
  434. /package/dist/{protocol → types/protocol}/snapshot/index.d.ts +0 -0
  435. /package/dist/{protocol → types/protocol}/snapshot/snapshot-codec.d.ts +0 -0
  436. /package/dist/{protocol → types/protocol}/snapshot/snapshot-registry.d.ts +0 -0
  437. /package/dist/{protocol → types/protocol}/snapshot/snapshot.d.ts +0 -0
  438. /package/dist/{core/input/types.js → webgpu/types/2d/animation.test.d.ts} +0 -0
  439. /package/dist/{protocol/intent/intent.js → webgpu/types/2d/sprite-accessor.test.d.ts} +0 -0
@@ -1,79 +0,0 @@
1
- # lerp
2
-
3
- A simple utility function for linear interpolation between two numeric values. Perfect for smooth animations, transitions, and value easing in game development.
4
-
5
- ## Features
6
-
7
- - Clean linear interpolation implementation.
8
- - Unclamped by design - allows extrapolation when t is outside [0, 1].
9
- - Zero dependencies.
10
- - Works in browsers and Node.js.
11
- - TypeScript support with proper type definitions.
12
-
13
- ## Usage
14
-
15
- ```typescript
16
- import { lerp } from './lerp';
17
-
18
- // Basic interpolation
19
- const value = lerp(0, 100, 0.5); // Returns 50
20
-
21
- // Animation example
22
- const startPos = 0;
23
- const endPos = 100;
24
- const progress = 0.75;
25
- const currentPos = lerp(startPos, endPos, progress); // Returns 75
26
-
27
- // Smooth camera movement
28
- function updateCamera(deltaTime: number) {
29
- const t = deltaTime * smoothingFactor;
30
- camera.x = lerp(camera.x, target.x, t);
31
- camera.y = lerp(camera.y, target.y, t);
32
- }
33
-
34
- // Color transitions
35
- const r = lerp(startColor.r, endColor.r, progress);
36
- const g = lerp(startColor.g, endColor.g, progress);
37
- const b = lerp(startColor.b, endColor.b, progress);
38
- ```
39
-
40
- ## Parameters
41
-
42
- - `start` (number): The starting value (returned when t = 0)
43
- - `end` (number): The ending value (returned when t = 1)
44
- - `t` (number): The interpolation factor, typically in range [0, 1]
45
-
46
- ## Returns
47
-
48
- `number` - The interpolated value between start and end.
49
-
50
- ## Extrapolation
51
-
52
- The function does not clamp the `t` parameter, allowing extrapolation:
53
-
54
- ```typescript
55
- lerp(0, 100, 1.5); // Returns 150 (extrapolated beyond end)
56
- lerp(0, 100, -0.5); // Returns -50 (extrapolated before start)
57
- ```
58
-
59
- If you need clamped interpolation, combine with a clamp function:
60
-
61
- ```typescript
62
- function clampedLerp(start: number, end: number, t: number): number {
63
- const clampedT = Math.max(0, Math.min(1, t));
64
- return lerp(start, end, clampedT);
65
- }
66
- ```
67
-
68
- ## Common Use Cases
69
-
70
- - **Smooth animations**: Interpolate position, rotation, scale over time
71
- - **Camera movement**: Create smooth camera following behavior
72
- - **UI transitions**: Fade effects, sliding panels, progress bars
73
- - **Color blending**: Transition between colors smoothly
74
- - **Value easing**: Gradually approach target values
75
- - **Physics simulations**: Interpolate between physics states for rendering
76
-
77
- ---
78
-
79
- `lerp` provides a foundational building block for smooth, continuous value transitions in game development and interactive applications.
@@ -1 +0,0 @@
1
- export * from './lerp';
@@ -1,90 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { lerp } from "./lerp";
3
-
4
- describe("lerp", () => {
5
- test("should return start value when t is 0", () => {
6
- expect(lerp(0, 100, 0)).toBe(0);
7
- expect(lerp(50, 200, 0)).toBe(50);
8
- expect(lerp(-10, 10, 0)).toBe(-10);
9
- });
10
-
11
- test("should return end value when t is 1", () => {
12
- expect(lerp(0, 100, 1)).toBe(100);
13
- expect(lerp(50, 200, 1)).toBe(200);
14
- expect(lerp(-10, 10, 1)).toBe(10);
15
- });
16
-
17
- test("should return midpoint when t is 0.5", () => {
18
- expect(lerp(0, 100, 0.5)).toBe(50);
19
- expect(lerp(50, 150, 0.5)).toBe(100);
20
- expect(lerp(-10, 10, 0.5)).toBe(0);
21
- });
22
-
23
- test("should interpolate between positive values", () => {
24
- expect(lerp(0, 100, 0.25)).toBe(25);
25
- expect(lerp(0, 100, 0.75)).toBe(75);
26
- expect(lerp(10, 20, 0.3)).toBeCloseTo(13, 5);
27
- });
28
-
29
- test("should interpolate between negative values", () => {
30
- expect(lerp(-100, -50, 0.5)).toBe(-75);
31
- expect(lerp(-10, -5, 0.2)).toBe(-9);
32
- });
33
-
34
- test("should interpolate from negative to positive", () => {
35
- expect(lerp(-50, 50, 0.5)).toBe(0);
36
- expect(lerp(-10, 10, 0.25)).toBe(-5);
37
- expect(lerp(-10, 10, 0.75)).toBe(5);
38
- });
39
-
40
- test("should handle extrapolation when t > 1", () => {
41
- expect(lerp(0, 100, 1.5)).toBe(150);
42
- expect(lerp(0, 100, 2)).toBe(200);
43
- expect(lerp(10, 20, 1.1)).toBeCloseTo(21, 5);
44
- });
45
-
46
- test("should handle extrapolation when t < 0", () => {
47
- expect(lerp(0, 100, -0.5)).toBe(-50);
48
- expect(lerp(0, 100, -1)).toBe(-100);
49
- expect(lerp(10, 20, -0.1)).toBeCloseTo(9, 5);
50
- });
51
-
52
- test("should handle same start and end values", () => {
53
- expect(lerp(50, 50, 0)).toBe(50);
54
- expect(lerp(50, 50, 0.5)).toBe(50);
55
- expect(lerp(50, 50, 1)).toBe(50);
56
- expect(lerp(50, 50, 2)).toBe(50);
57
- });
58
-
59
- test("should handle floating point values", () => {
60
- expect(lerp(0.1, 0.9, 0.5)).toBeCloseTo(0.5, 10);
61
- expect(lerp(1.5, 2.5, 0.3)).toBeCloseTo(1.8, 10);
62
- });
63
-
64
- test("should be commutative with inverted t", () => {
65
- const start = 10;
66
- const end = 20;
67
- expect(lerp(start, end, 0.3)).toBeCloseTo(lerp(end, start, 0.7), 10);
68
- });
69
-
70
- test("should handle very small differences", () => {
71
- expect(lerp(1.0, 1.0001, 0.5)).toBeCloseTo(1.00005, 10);
72
- });
73
-
74
- test("should handle very large values", () => {
75
- expect(lerp(1e10, 2e10, 0.5)).toBe(1.5e10);
76
- });
77
-
78
- test("should be linear (no easing)", () => {
79
- const start = 0;
80
- const end = 100;
81
- const step = 0.1;
82
- const expectedDiff = 10;
83
-
84
- for (let t = 0; t < 1; t += step) {
85
- const val1 = lerp(start, end, t);
86
- const val2 = lerp(start, end, t + step);
87
- expect(val2 - val1).toBeCloseTo(expectedDiff, 5);
88
- }
89
- });
90
- });
@@ -1,42 +0,0 @@
1
- /**
2
- * @description
3
- * Performs linear interpolation between two values.
4
- *
5
- * Linear interpolation (lerp) calculates a value between a start and end point
6
- * based on a normalized interpolation factor (t). When t = 0, the result equals
7
- * the start value; when t = 1, the result equals the end value. Values of t
8
- * between 0 and 1 produce intermediate results.
9
- *
10
- * @remarks
11
- * - This function does not clamp the interpolation factor. Values of t outside
12
- * the range [0, 1] will extrapolate beyond the start and end values.
13
- * - For clamped interpolation, combine with a clamp function on the t parameter.
14
- * - Commonly used for smooth animations, camera movements, and value transitions.
15
- *
16
- * @param start - The starting value (when t = 0)
17
- * @param end - The ending value (when t = 1)
18
- * @param t - The interpolation factor, typically in the range [0, 1]
19
- *
20
- * @returns {number} The interpolated value between start and end
21
- *
22
- * @example
23
- * ```typescript
24
- * // Basic interpolation
25
- * lerp(0, 100, 0.5); // Returns 50
26
- * lerp(0, 100, 0); // Returns 0
27
- * lerp(0, 100, 1); // Returns 100
28
- *
29
- * // Animation example
30
- * const startPos = 0;
31
- * const endPos = 100;
32
- * const progress = 0.75;
33
- * const currentPos = lerp(startPos, endPos, progress); // Returns 75
34
- *
35
- * // Extrapolation (t outside [0, 1])
36
- * lerp(0, 100, 1.5); // Returns 150
37
- * lerp(0, 100, -0.5); // Returns -50
38
- * ```
39
- */
40
- export function lerp(start: number, end: number, t: number): number {
41
- return start + (end - start) * t;
42
- }
@@ -1,164 +0,0 @@
1
- # NavMesh / Pathfinding Utility
2
-
3
- A lightweight navigation system for grid-based and hybrid games.
4
-
5
- Supports:
6
-
7
- * **Grid A*** pathfinding
8
- * **Line-of-sight graph navigation**
9
- * **Dynamic obstacles**
10
- * **Spatial hashing for fast queries**
11
- * **Circle / Rect / Polygon obstacles**
12
- * **Zero rebuilds unless data changes**
13
-
14
- Designed for **games**, not CAD-grade geometry.
15
-
16
- ---
17
-
18
- ## Features
19
-
20
- * ⚡ **Fast obstacle queries** via spatial hash
21
- * 🧠 **Smart rebuilds** (version-based, no unnecessary work)
22
- * 🧩 **Multiple obstacle types**
23
- * 🧭 **A*** with binary heap
24
- * 🧱 **Grid or graph navigation**
25
- * 🔁 Dynamic obstacle add / move / remove
26
- * 🧪 Deterministic & allocation-safe
27
-
28
- ---
29
-
30
- ## Usage
31
-
32
- ### Create navmesh
33
-
34
- ```ts
35
- const nav = new NavMesh('grid'); // or 'graph'
36
- ```
37
-
38
- ### Add obstacles
39
-
40
- ```ts
41
- nav.addObstacle({
42
- type: 'circle',
43
- pos: { x: 5, y: 5 },
44
- radius: 2
45
- });
46
- ```
47
-
48
- ```ts
49
- nav.addObstacle({
50
- type: 'rect',
51
- pos: { x: 2, y: 3 },
52
- size: { x: 4, y: 2 },
53
- });
54
- ```
55
-
56
- ```ts
57
- nav.addObstacle({
58
- type: 'polygon',
59
- pos: { x: 10, y: 5 },
60
- points: [
61
- { x: 0, y: 0 },
62
- { x: 2, y: 0 },
63
- { x: 1, y: 2 },
64
- ],
65
- });
66
- ```
67
-
68
- ### Move / remove
69
-
70
- ```ts
71
- nav.moveObstacle(id, { x: 8, y: 4 });
72
- nav.removeObstacle(id);
73
- ```
74
-
75
- ### Find path
76
-
77
- ```ts
78
- const path = nav.findPath({
79
- from: { x: 1, y: 1 },
80
- to: { x: 10, y: 8 }
81
- });
82
- ```
83
-
84
- ---
85
-
86
- ## Web Workers (Optional)
87
-
88
- For games with many concurrent pathfinding requests (20+ units), enable workers for parallel processing:
89
-
90
- ### Modes
91
-
92
- ```ts
93
- // Default: synchronous (workers: false)
94
- const nav = new NavMesh('grid'); // Returns Vec2[]
95
- const path = nav.findPath({ from, to });
96
-
97
- // Always use workers (workers: true)
98
- const nav = new NavMesh('grid', { workers: true }); // Returns Promise<Vec2[]>
99
- const path = await nav.findPath({ from, to });
100
-
101
- // Auto mode (workers: 'auto')
102
- const nav = new NavMesh('grid', { workers: 'auto' }); // Returns Vec2[] | Promise<Vec2[]>
103
- const result = nav.findPath({ from, to });
104
- const path = result instanceof Promise ? await result : result;
105
- ```
106
-
107
- ### Performance
108
-
109
- - **Single path**: Sync mode faster (no worker overhead)
110
- - **20+ parallel paths**: Workers ~3x faster
111
- - **30+ unit RTS**: Workers ~4.5x faster (35 FPS → 162 FPS)
112
-
113
- Use workers for RTS/strategy games with many simultaneous pathfinding requests.
114
-
115
- ```ts
116
- // Custom pool size (default: 4)
117
- const nav = new NavMesh('grid', {
118
- workers: true,
119
- workerPoolSize: 8,
120
- workerPath: './custom-worker.js'
121
- });
122
- ```
123
-
124
- ---
125
-
126
- ## Navigation Modes
127
-
128
- ### `grid`
129
-
130
- * A* over grid cells
131
- * Accurate
132
- * Best for RTS / tactics / tile games
133
-
134
- ### `graph`
135
-
136
- * Line-of-sight check
137
- * Falls back to grid if blocked
138
- * Faster for open maps
139
-
140
- ---
141
-
142
- ## Performance
143
-
144
- | Feature | Cost |
145
- | -------------- | --------------------------------- |
146
- | Obstacle query | **O(1)** avg |
147
- | Grid rebuild | O(n × area) |
148
- | Pathfinding | O(bᵈ log n) |
149
- | Memory | Minimal, no allocations per frame |
150
-
151
- Handles:
152
-
153
- * 1k+ obstacles
154
- * 10k+ A* nodes
155
- * Real-time updates
156
-
157
- ---
158
-
159
- ## Notes
160
-
161
- * Polygon points **must be local (0,0-based)**
162
- * Rotation is supported for rects & polygons
163
- * All math is deterministic
164
- * No dependencies
@@ -1 +0,0 @@
1
- export * from './navmesh';
@@ -1,236 +0,0 @@
1
- /**
2
- * NavMesh Worker Pool - Manages multiple workers for parallel pathfinding
3
- */
4
-
5
- import { ObstacleInput } from './navmesh';
6
-
7
- interface Vec2 {
8
- x: number;
9
- y: number;
10
- }
11
-
12
- interface PathRequest {
13
- id: number;
14
- from: Vec2;
15
- to: Vec2;
16
- resolve: (path: Vec2[]) => void;
17
- reject: (error: Error) => void;
18
- }
19
-
20
- interface PathResultMessage {
21
- type: 'PATH_RESULT';
22
- id: number;
23
- path: Vec2[];
24
- duration: number;
25
- }
26
-
27
- interface ErrorMessage {
28
- type: 'ERROR';
29
- error: string;
30
- }
31
-
32
- type WorkerResponse = PathResultMessage | ErrorMessage;
33
-
34
- export class NavMeshWorkerPool {
35
- private workers: Worker[] = [];
36
- private nextWorkerIndex = 0;
37
- private requestId = 0;
38
- private pendingRequests = new Map<number, PathRequest>();
39
- private initialized = false;
40
-
41
- constructor(
42
- private poolSize: number,
43
- private workerPath: string,
44
- private navType: 'grid' | 'graph' = 'grid',
45
- private obstacles: ObstacleInput[] = []
46
- ) {}
47
-
48
- /**
49
- * Initialize all workers in the pool
50
- */
51
- async init(): Promise<void> {
52
- if (this.initialized) return;
53
-
54
- const initPromises: Promise<void>[] = [];
55
-
56
- for (let i = 0; i < this.poolSize; i++) {
57
- const worker = new Worker(this.workerPath, { type: 'module' });
58
-
59
- // Set up message handler
60
- worker.onmessage = (e: MessageEvent<WorkerResponse>) => {
61
- const msg = e.data;
62
-
63
- if (msg.type === 'PATH_RESULT') {
64
- const request = this.pendingRequests.get(msg.id);
65
- if (request) {
66
- request.resolve(msg.path);
67
- this.pendingRequests.delete(msg.id);
68
- }
69
- } else if (msg.type === 'ERROR') {
70
- // Reject all pending requests for this worker
71
- for (const [id, request] of this.pendingRequests.entries()) {
72
- request.reject(new Error(msg.error));
73
- this.pendingRequests.delete(id);
74
- }
75
- }
76
- };
77
-
78
- worker.onerror = (error) => {
79
- console.error('Worker error:', error);
80
- // Reject all pending requests for this worker
81
- for (const [id, request] of this.pendingRequests.entries()) {
82
- request.reject(new Error('Worker error'));
83
- this.pendingRequests.delete(id);
84
- }
85
- };
86
-
87
- this.workers.push(worker);
88
-
89
- // Initialize worker
90
- const readyPromise = new Promise<void>((resolve) => {
91
- const onReady = (e: MessageEvent) => {
92
- if (e.data.type === 'READY') {
93
- worker.removeEventListener('message', onReady);
94
- resolve();
95
- }
96
- };
97
- worker.addEventListener('message', onReady);
98
- });
99
-
100
- worker.postMessage({
101
- type: 'INIT',
102
- navType: this.navType,
103
- obstacles: this.obstacles,
104
- });
105
-
106
- initPromises.push(readyPromise);
107
- }
108
-
109
- await Promise.all(initPromises);
110
- this.initialized = true;
111
- }
112
-
113
- /**
114
- * Find a path using the next available worker (round-robin)
115
- */
116
- async findPath(from: Vec2, to: Vec2): Promise<Vec2[]> {
117
- if (!this.initialized) {
118
- throw new Error('Worker pool not initialized. Call init() first.');
119
- }
120
-
121
- const id = this.requestId++;
122
- const worker = this.workers[this.nextWorkerIndex];
123
- this.nextWorkerIndex = (this.nextWorkerIndex + 1) % this.workers.length;
124
-
125
- return new Promise<Vec2[]>((resolve, reject) => {
126
- this.pendingRequests.set(id, { id, from, to, resolve, reject });
127
-
128
- worker.postMessage({
129
- type: 'FIND_PATH',
130
- id,
131
- from,
132
- to,
133
- });
134
- });
135
- }
136
-
137
- /**
138
- * Add an obstacle to all workers
139
- */
140
- async addObstacle(obstacle: ObstacleInput): Promise<number> {
141
- if (!this.initialized) {
142
- throw new Error('Worker pool not initialized. Call init() first.');
143
- }
144
-
145
- // Add to all workers
146
- const promises = this.workers.map((worker) => {
147
- return new Promise<number>((resolve) => {
148
- const onAdded = (e: MessageEvent) => {
149
- if (e.data.type === 'OBSTACLE_ADDED') {
150
- worker.removeEventListener('message', onAdded);
151
- resolve(e.data.obstacleId);
152
- }
153
- };
154
- worker.addEventListener('message', onAdded);
155
- worker.postMessage({ type: 'ADD_OBSTACLE', obstacle });
156
- });
157
- });
158
-
159
- const ids = await Promise.all(promises);
160
- return ids[0]; // All workers should return the same ID
161
- }
162
-
163
- /**
164
- * Remove an obstacle from all workers
165
- */
166
- async removeObstacle(obstacleId: number): Promise<void> {
167
- if (!this.initialized) {
168
- throw new Error('Worker pool not initialized. Call init() first.');
169
- }
170
-
171
- const promises = this.workers.map((worker) => {
172
- return new Promise<void>((resolve) => {
173
- const onRemoved = (e: MessageEvent) => {
174
- if (e.data.type === 'OBSTACLE_REMOVED') {
175
- worker.removeEventListener('message', onRemoved);
176
- resolve();
177
- }
178
- };
179
- worker.addEventListener('message', onRemoved);
180
- worker.postMessage({ type: 'REMOVE_OBSTACLE', obstacleId });
181
- });
182
- });
183
-
184
- await Promise.all(promises);
185
- }
186
-
187
- /**
188
- * Move an obstacle in all workers
189
- */
190
- async moveObstacle(obstacleId: number, pos: Vec2): Promise<void> {
191
- if (!this.initialized) {
192
- throw new Error('Worker pool not initialized. Call init() first.');
193
- }
194
-
195
- const promises = this.workers.map((worker) => {
196
- return new Promise<void>((resolve) => {
197
- const onMoved = (e: MessageEvent) => {
198
- if (e.data.type === 'OBSTACLE_MOVED') {
199
- worker.removeEventListener('message', onMoved);
200
- resolve();
201
- }
202
- };
203
- worker.addEventListener('message', onMoved);
204
- worker.postMessage({ type: 'MOVE_OBSTACLE', obstacleId, pos });
205
- });
206
- });
207
-
208
- await Promise.all(promises);
209
- }
210
-
211
- /**
212
- * Terminate all workers
213
- */
214
- terminate() {
215
- for (const worker of this.workers) {
216
- worker.terminate();
217
- }
218
- this.workers = [];
219
- this.pendingRequests.clear();
220
- this.initialized = false;
221
- }
222
-
223
- /**
224
- * Get the number of pending requests
225
- */
226
- get pendingCount(): number {
227
- return this.pendingRequests.size;
228
- }
229
-
230
- /**
231
- * Get the pool size
232
- */
233
- get size(): number {
234
- return this.workers.length;
235
- }
236
- }