murow 0.0.70 → 0.0.72

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 (470) hide show
  1. package/README.md +54 -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/renderer-2d.js +1 -0
  74. package/dist/cjs/renderer/base/renderer-3d.js +1 -0
  75. package/dist/cjs/renderer/base/renderer.js +1 -0
  76. package/dist/cjs/renderer/gltf/helpers.js +1 -0
  77. package/dist/cjs/renderer/gltf/parser.js +1 -0
  78. package/dist/cjs/renderer/gltf/skeletal-animation.js +1 -0
  79. package/dist/cjs/renderer/gltf/skin-parser.js +1 -0
  80. package/dist/cjs/renderer/index.js +1 -0
  81. package/dist/cjs/renderer/math.js +1 -0
  82. package/dist/cjs/renderer/prefab-bucket/concrete.js +1 -0
  83. package/dist/cjs/renderer/prefab-bucket/index.js +1 -0
  84. package/dist/cjs/renderer/prefab-bucket/parsers.js +1 -0
  85. package/dist/cjs/renderer/prefab-bucket/specs.js +1 -0
  86. package/dist/cjs/renderer/spritesheet/helpers.js +1 -0
  87. package/dist/cjs/renderer/spritesheet/parser.js +1 -0
  88. package/dist/cjs/renderer/types.js +1 -0
  89. package/dist/esm/core/binary-codec/binary-codec.js +1 -0
  90. package/dist/esm/core/binary-codec/index.js +1 -0
  91. package/dist/esm/core/driver/driver.js +1 -0
  92. package/dist/esm/core/driver/drivers/immediate.js +1 -0
  93. package/dist/esm/core/driver/drivers/index.js +1 -0
  94. package/dist/esm/core/driver/drivers/raf.js +1 -0
  95. package/dist/esm/core/driver/drivers/timeout.js +1 -0
  96. package/dist/esm/core/driver/index.js +1 -0
  97. package/dist/esm/core/events/event-system.js +1 -0
  98. package/dist/esm/core/events/index.js +1 -0
  99. package/dist/esm/core/fixed-ticker/fixed-ticker.js +1 -0
  100. package/dist/esm/core/fixed-ticker/index.js +1 -0
  101. package/dist/esm/core/free-list/free-list.js +1 -0
  102. package/dist/esm/core/free-list/index.js +1 -0
  103. package/dist/esm/core/generate-id/generate-id.js +1 -0
  104. package/dist/esm/core/generate-id/index.js +1 -0
  105. package/dist/esm/core/index.js +1 -0
  106. package/dist/esm/core/input/index.js +1 -0
  107. package/dist/esm/core/input/manager.js +1 -0
  108. package/dist/esm/core/input/sources/browser.js +1 -0
  109. package/dist/esm/core/input/sources/index.js +1 -0
  110. package/dist/esm/core/input/types.js +0 -0
  111. package/dist/esm/core/lerp/index.js +1 -0
  112. package/dist/esm/core/lerp/lerp.js +1 -0
  113. package/dist/esm/core/navmesh/index.js +1 -0
  114. package/dist/esm/core/navmesh/navmesh-worker-pool.js +1 -0
  115. package/dist/esm/core/navmesh/navmesh.js +1 -0
  116. package/dist/esm/core/navmesh/navmesh.worker.js +1 -0
  117. package/dist/esm/core/pooled-codec/index.js +1 -0
  118. package/dist/esm/core/pooled-codec/pooled-codec.js +1 -0
  119. package/dist/esm/core/prediction/index.js +1 -0
  120. package/dist/esm/core/prediction/prediction.js +1 -0
  121. package/dist/esm/core/ray/index.js +1 -0
  122. package/dist/esm/core/ray/ray-2d.js +1 -0
  123. package/dist/esm/core/ray/ray-3d.js +1 -0
  124. package/dist/esm/core/simple-rng/index.js +1 -0
  125. package/dist/esm/core/simple-rng/simple-rng.js +1 -0
  126. package/dist/esm/core/sparse-batcher/index.js +1 -0
  127. package/dist/esm/core/sparse-batcher/sparse-batcher.js +1 -0
  128. package/dist/esm/ecs/component-store.js +1 -0
  129. package/dist/esm/ecs/component.js +1 -0
  130. package/dist/esm/ecs/entity-handle.js +1 -0
  131. package/dist/esm/ecs/index.js +1 -0
  132. package/dist/esm/ecs/system-builder.js +1 -0
  133. package/dist/esm/ecs/world-systems.js +1 -0
  134. package/dist/esm/ecs/world.js +1 -0
  135. package/dist/esm/game/index.js +1 -0
  136. package/dist/esm/game/loop/index.js +1 -0
  137. package/dist/esm/game/loop/loop.js +1 -0
  138. package/dist/esm/index.js +1 -0
  139. package/dist/esm/net/adapters/browser-websocket.js +1 -0
  140. package/dist/esm/net/adapters/bun-websocket.js +1 -0
  141. package/dist/esm/net/buffer-pool.js +1 -0
  142. package/dist/esm/net/client.js +1 -0
  143. package/dist/esm/net/index.js +1 -0
  144. package/dist/esm/net/server.js +1 -0
  145. package/dist/esm/net/types.js +1 -0
  146. package/dist/esm/net/validators.js +1 -0
  147. package/dist/esm/protocol/index.js +1 -0
  148. package/dist/esm/protocol/intent/define-intent.js +1 -0
  149. package/dist/esm/protocol/intent/index.js +1 -0
  150. package/dist/esm/protocol/intent/intent-registry.js +1 -0
  151. package/dist/esm/protocol/intent/intent.js +0 -0
  152. package/dist/esm/protocol/rpc/define-rpc.js +1 -0
  153. package/dist/esm/protocol/rpc/index.js +1 -0
  154. package/dist/esm/protocol/rpc/rpc-registry.js +1 -0
  155. package/dist/esm/protocol/rpc/rpc.js +0 -0
  156. package/dist/esm/protocol/snapshot/index.js +1 -0
  157. package/dist/esm/protocol/snapshot/snapshot-codec.js +1 -0
  158. package/dist/esm/protocol/snapshot/snapshot-registry.js +1 -0
  159. package/dist/esm/protocol/snapshot/snapshot.js +1 -0
  160. package/dist/esm/renderer/base/renderer-2d.js +1 -0
  161. package/dist/esm/renderer/base/renderer-3d.js +1 -0
  162. package/dist/esm/renderer/base/renderer.js +1 -0
  163. package/dist/esm/renderer/gltf/helpers.js +1 -0
  164. package/dist/esm/renderer/gltf/parser.js +1 -0
  165. package/dist/esm/renderer/gltf/skeletal-animation.js +1 -0
  166. package/dist/esm/renderer/gltf/skin-parser.js +1 -0
  167. package/dist/esm/renderer/index.js +1 -0
  168. package/dist/esm/renderer/math.js +1 -0
  169. package/dist/esm/renderer/prefab-bucket/concrete.js +1 -0
  170. package/dist/esm/renderer/prefab-bucket/index.js +1 -0
  171. package/dist/esm/renderer/prefab-bucket/parsers.js +1 -0
  172. package/dist/esm/renderer/prefab-bucket/specs.js +0 -0
  173. package/dist/esm/renderer/spritesheet/helpers.js +1 -0
  174. package/dist/esm/renderer/spritesheet/parser.js +1 -0
  175. package/dist/esm/renderer/types.js +0 -0
  176. package/dist/{core → types/core}/binary-codec/binary-codec.d.ts +4 -0
  177. package/dist/{core → types/core}/events/event-system.d.ts +14 -33
  178. package/dist/types/core/free-list/free-list.d.ts +31 -0
  179. package/dist/types/core/free-list/index.d.ts +1 -0
  180. package/dist/{core → types/core}/index.d.ts +5 -0
  181. package/dist/{core → types/core}/input/index.d.ts +1 -0
  182. package/dist/{core → types/core}/input/manager.d.ts +2 -0
  183. package/dist/{core → types/core}/navmesh/navmesh.d.ts +1 -21
  184. package/dist/types/core/ray/index.d.ts +2 -0
  185. package/dist/types/core/ray/ray-2d.d.ts +37 -0
  186. package/dist/types/core/ray/ray-3d.d.ts +42 -0
  187. package/dist/types/core/simple-rng/index.d.ts +1 -0
  188. package/dist/types/core/simple-rng/simple-rng.d.ts +36 -0
  189. package/dist/types/core/sparse-batcher/index.d.ts +1 -0
  190. package/dist/types/core/sparse-batcher/sparse-batcher.d.ts +55 -0
  191. package/dist/{ecs → types/ecs}/world.d.ts +11 -0
  192. package/dist/{game → types/game}/loop/loop.d.ts +33 -29
  193. package/dist/{index.d.ts → types/index.d.ts} +1 -0
  194. package/dist/{net → types/net}/index.d.ts +2 -2
  195. package/dist/types/renderer/base/renderer-2d.d.ts +13 -0
  196. package/dist/types/renderer/base/renderer-3d.d.ts +10 -0
  197. package/dist/types/renderer/base/renderer.d.ts +21 -0
  198. package/dist/types/renderer/gltf/helpers.d.ts +43 -0
  199. package/dist/types/renderer/gltf/parser.d.ts +49 -0
  200. package/dist/types/renderer/gltf/skeletal-animation.d.ts +96 -0
  201. package/dist/types/renderer/gltf/skin-parser.d.ts +107 -0
  202. package/dist/types/renderer/index.d.ts +15 -0
  203. package/dist/types/renderer/math.d.ts +37 -0
  204. package/dist/types/renderer/prefab-bucket/concrete.d.ts +55 -0
  205. package/dist/types/renderer/prefab-bucket/index.d.ts +113 -0
  206. package/dist/types/renderer/prefab-bucket/parsers.d.ts +8 -0
  207. package/dist/types/renderer/prefab-bucket/specs.d.ts +166 -0
  208. package/dist/types/renderer/spritesheet/helpers.d.ts +38 -0
  209. package/dist/types/renderer/spritesheet/parser.d.ts +21 -0
  210. package/dist/types/renderer/types.d.ts +89 -0
  211. package/dist/webgpu/cjs/index.js +5401 -0
  212. package/dist/webgpu/esm/index.js +5378 -0
  213. package/dist/webgpu/types/2d/animation.d.ts +97 -0
  214. package/dist/webgpu/types/2d/renderer.d.ts +86 -0
  215. package/dist/webgpu/types/2d/shader.d.ts +61 -0
  216. package/dist/webgpu/types/2d/sprite-accessor.d.ts +47 -0
  217. package/dist/webgpu/types/3d/clip-resync-coordinator.d.ts +20 -0
  218. package/dist/webgpu/types/3d/morph-animation.d.ts +69 -0
  219. package/dist/webgpu/types/3d/morph-animation.test.d.ts +1 -0
  220. package/dist/webgpu/types/3d/renderer.d.ts +266 -0
  221. package/dist/webgpu/types/3d/shader.d.ts +136 -0
  222. package/dist/webgpu/types/3d/skeletal-animation-compute/index.d.ts +2 -0
  223. package/dist/webgpu/types/3d/skeletal-animation-compute/kernel.d.ts +25 -0
  224. package/dist/webgpu/types/3d/skeletal-animation-compute/packer.d.ts +32 -0
  225. package/dist/webgpu/types/camera/camera-2d.d.ts +53 -0
  226. package/dist/webgpu/types/camera/camera-2d.test.d.ts +1 -0
  227. package/dist/webgpu/types/camera/camera-3d.d.ts +81 -0
  228. package/dist/webgpu/types/camera/camera-3d.test.d.ts +1 -0
  229. package/dist/webgpu/types/camera/index.d.ts +2 -0
  230. package/dist/webgpu/types/compute/compute-builder.d.ts +123 -0
  231. package/dist/webgpu/types/compute/compute-builder.test.d.ts +1 -0
  232. package/dist/webgpu/types/core/constants.d.ts +59 -0
  233. package/dist/webgpu/types/core/constants.test.d.ts +1 -0
  234. package/dist/webgpu/types/core/index.d.ts +2 -0
  235. package/dist/webgpu/types/core/types.d.ts +125 -0
  236. package/dist/webgpu/types/core/types.test.d.ts +1 -0
  237. package/dist/webgpu/types/geometry/built-in.d.ts +58 -0
  238. package/dist/webgpu/types/geometry/built-in.test.d.ts +1 -0
  239. package/dist/webgpu/types/geometry/geometry-builder.d.ts +281 -0
  240. package/dist/webgpu/types/geometry/geometry-builder.test.d.ts +1 -0
  241. package/dist/webgpu/types/geometry/index.d.ts +2 -0
  242. package/dist/webgpu/types/index.d.ts +35 -0
  243. package/dist/webgpu/types/particle/emitter.d.ts +36 -0
  244. package/dist/webgpu/types/shaders/index.d.ts +2 -0
  245. package/dist/webgpu/types/shaders/runtime-transpile.d.ts +18 -0
  246. package/dist/webgpu/types/shaders/sprite-2d.wgsl.d.ts +10 -0
  247. package/dist/webgpu/types/shaders/typegpu.d.ts +9 -0
  248. package/dist/webgpu/types/shaders/utils.d.ts +28 -0
  249. package/dist/webgpu/types/shaders/utils.test.d.ts +1 -0
  250. package/dist/webgpu/types/spritesheet/index.d.ts +1 -0
  251. package/dist/webgpu/types/spritesheet/spritesheet.d.ts +28 -0
  252. package/dist/webgpu/types/spritesheet/spritesheet.test.d.ts +1 -0
  253. package/package.json +96 -26
  254. package/dist/core/binary-codec/binary-codec.js +0 -354
  255. package/dist/core/binary-codec/index.js +0 -1
  256. package/dist/core/driver/driver.js +0 -47
  257. package/dist/core/driver/drivers/immediate.js +0 -61
  258. package/dist/core/driver/drivers/index.js +0 -3
  259. package/dist/core/driver/drivers/raf.js +0 -62
  260. package/dist/core/driver/drivers/timeout.js +0 -71
  261. package/dist/core/driver/index.js +0 -2
  262. package/dist/core/events/event-system.js +0 -88
  263. package/dist/core/events/index.js +0 -1
  264. package/dist/core/fixed-ticker/fixed-ticker.js +0 -105
  265. package/dist/core/fixed-ticker/index.js +0 -1
  266. package/dist/core/generate-id/generate-id.js +0 -25
  267. package/dist/core/generate-id/index.js +0 -1
  268. package/dist/core/index.js +0 -10
  269. package/dist/core/input/index.js +0 -2
  270. package/dist/core/input/manager.js +0 -211
  271. package/dist/core/input/sources/browser.js +0 -29
  272. package/dist/core/input/sources/index.js +0 -1
  273. package/dist/core/lerp/index.js +0 -1
  274. package/dist/core/lerp/lerp.js +0 -42
  275. package/dist/core/navmesh/index.js +0 -1
  276. package/dist/core/navmesh/navmesh-worker-pool.js +0 -180
  277. package/dist/core/navmesh/navmesh.js +0 -799
  278. package/dist/core/navmesh/navmesh.worker.js +0 -79
  279. package/dist/core/pooled-codec/index.js +0 -1
  280. package/dist/core/pooled-codec/pooled-codec.js +0 -410
  281. package/dist/core/prediction/index.js +0 -1
  282. package/dist/core/prediction/prediction.js +0 -99
  283. package/dist/core.esm.js +0 -1
  284. package/dist/core.js +0 -1
  285. package/dist/ecs/component-store.js +0 -175
  286. package/dist/ecs/component.js +0 -43
  287. package/dist/ecs/entity-handle.js +0 -515
  288. package/dist/ecs/example.js +0 -125
  289. package/dist/ecs/index.js +0 -4
  290. package/dist/ecs/system-builder.js +0 -249
  291. package/dist/ecs/world-systems.js +0 -79
  292. package/dist/ecs/world.js +0 -767
  293. package/dist/game/index.js +0 -1
  294. package/dist/game/loop/index.js +0 -1
  295. package/dist/game/loop/loop.js +0 -108
  296. package/dist/index.js +0 -26
  297. package/dist/net/adapters/browser-websocket.js +0 -74
  298. package/dist/net/adapters/bun-websocket.js +0 -245
  299. package/dist/net/buffer-pool.js +0 -89
  300. package/dist/net/client.js +0 -586
  301. package/dist/net/index.js +0 -58
  302. package/dist/net/server.js +0 -974
  303. package/dist/net/types.js +0 -31
  304. package/dist/net/validators.js +0 -88
  305. package/dist/protocol/index.js +0 -92
  306. package/dist/protocol/intent/define-intent.js +0 -125
  307. package/dist/protocol/intent/index.js +0 -91
  308. package/dist/protocol/intent/intent-registry.js +0 -91
  309. package/dist/protocol/rpc/define-rpc.js +0 -84
  310. package/dist/protocol/rpc/index.js +0 -3
  311. package/dist/protocol/rpc/rpc-registry.js +0 -159
  312. package/dist/protocol/rpc/rpc.js +0 -12
  313. package/dist/protocol/snapshot/index.js +0 -43
  314. package/dist/protocol/snapshot/snapshot-codec.js +0 -67
  315. package/dist/protocol/snapshot/snapshot-registry.js +0 -168
  316. package/dist/protocol/snapshot/snapshot.js +0 -30
  317. package/src/core/binary-codec/README.md +0 -60
  318. package/src/core/binary-codec/binary-codec.test.ts +0 -300
  319. package/src/core/binary-codec/binary-codec.ts +0 -448
  320. package/src/core/binary-codec/index.ts +0 -1
  321. package/src/core/driver/README.md +0 -97
  322. package/src/core/driver/driver.test.ts +0 -414
  323. package/src/core/driver/driver.ts +0 -71
  324. package/src/core/driver/drivers/immediate.ts +0 -66
  325. package/src/core/driver/drivers/index.ts +0 -3
  326. package/src/core/driver/drivers/raf.ts +0 -67
  327. package/src/core/driver/drivers/timeout.ts +0 -77
  328. package/src/core/driver/index.ts +0 -2
  329. package/src/core/events/README.md +0 -47
  330. package/src/core/events/event-system.test.ts +0 -243
  331. package/src/core/events/event-system.ts +0 -140
  332. package/src/core/events/index.ts +0 -1
  333. package/src/core/fixed-ticker/README.md +0 -77
  334. package/src/core/fixed-ticker/fixed-ticker.test.ts +0 -151
  335. package/src/core/fixed-ticker/fixed-ticker.ts +0 -174
  336. package/src/core/fixed-ticker/index.ts +0 -1
  337. package/src/core/generate-id/README.md +0 -18
  338. package/src/core/generate-id/generate-id.test.ts +0 -79
  339. package/src/core/generate-id/generate-id.ts +0 -37
  340. package/src/core/generate-id/index.ts +0 -1
  341. package/src/core/index.ts +0 -10
  342. package/src/core/input/README.md +0 -24
  343. package/src/core/input/index.ts +0 -2
  344. package/src/core/input/manager.ts +0 -259
  345. package/src/core/input/sources/browser.ts +0 -39
  346. package/src/core/input/sources/index.ts +0 -1
  347. package/src/core/input/types.ts +0 -40
  348. package/src/core/lerp/README.md +0 -79
  349. package/src/core/lerp/index.ts +0 -1
  350. package/src/core/lerp/lerp.test.ts +0 -90
  351. package/src/core/lerp/lerp.ts +0 -42
  352. package/src/core/navmesh/README.md +0 -164
  353. package/src/core/navmesh/index.ts +0 -1
  354. package/src/core/navmesh/navmesh-worker-pool.ts +0 -236
  355. package/src/core/navmesh/navmesh-workers.test.ts +0 -356
  356. package/src/core/navmesh/navmesh.test.ts +0 -344
  357. package/src/core/navmesh/navmesh.ts +0 -1047
  358. package/src/core/navmesh/navmesh.worker.ts +0 -147
  359. package/src/core/pooled-codec/README.md +0 -70
  360. package/src/core/pooled-codec/index.ts +0 -1
  361. package/src/core/pooled-codec/pooled-codec.test.ts +0 -862
  362. package/src/core/pooled-codec/pooled-codec.ts +0 -504
  363. package/src/core/prediction/README.md +0 -64
  364. package/src/core/prediction/index.ts +0 -1
  365. package/src/core/prediction/prediction.test.ts +0 -423
  366. package/src/core/prediction/prediction.ts +0 -112
  367. package/src/ecs/README.md +0 -427
  368. package/src/ecs/benchmark.test.ts +0 -1645
  369. package/src/ecs/component-store.ts +0 -198
  370. package/src/ecs/component.ts +0 -90
  371. package/src/ecs/entity-handle.test.ts +0 -393
  372. package/src/ecs/entity-handle.ts +0 -563
  373. package/src/ecs/example.ts +0 -152
  374. package/src/ecs/index.ts +0 -4
  375. package/src/ecs/system-builder.ts +0 -404
  376. package/src/ecs/world-systems.ts +0 -83
  377. package/src/ecs/world.test.ts +0 -310
  378. package/src/ecs/world.ts +0 -904
  379. package/src/game/index.ts +0 -1
  380. package/src/game/loop/README.md +0 -32
  381. package/src/game/loop/index.ts +0 -1
  382. package/src/game/loop/loop.ts +0 -236
  383. package/src/index.ts +0 -32
  384. package/src/net/README.md +0 -474
  385. package/src/net/adapters/browser-websocket.ts +0 -86
  386. package/src/net/adapters/bun-websocket.ts +0 -292
  387. package/src/net/buffer-pool.ts +0 -106
  388. package/src/net/client.test.ts +0 -807
  389. package/src/net/client.ts +0 -695
  390. package/src/net/index.ts +0 -60
  391. package/src/net/server.test.ts +0 -799
  392. package/src/net/server.ts +0 -1152
  393. package/src/net/types.ts +0 -228
  394. package/src/net/validators.ts +0 -104
  395. package/src/protocol/README.md +0 -469
  396. package/src/protocol/index.ts +0 -93
  397. package/src/protocol/intent/define-intent.test.ts +0 -397
  398. package/src/protocol/intent/define-intent.ts +0 -201
  399. package/src/protocol/intent/index.ts +0 -94
  400. package/src/protocol/intent/intent-registry.test.ts +0 -198
  401. package/src/protocol/intent/intent-registry.ts +0 -112
  402. package/src/protocol/intent/intent.ts +0 -12
  403. package/src/protocol/rpc/define-rpc.test.ts +0 -141
  404. package/src/protocol/rpc/define-rpc.ts +0 -113
  405. package/src/protocol/rpc/index.ts +0 -3
  406. package/src/protocol/rpc/rpc-registry.test.ts +0 -168
  407. package/src/protocol/rpc/rpc-registry.ts +0 -176
  408. package/src/protocol/rpc/rpc.ts +0 -37
  409. package/src/protocol/snapshot/index.ts +0 -45
  410. package/src/protocol/snapshot/snapshot-codec.test.ts +0 -138
  411. package/src/protocol/snapshot/snapshot-codec.ts +0 -87
  412. package/src/protocol/snapshot/snapshot-registry.test.ts +0 -310
  413. package/src/protocol/snapshot/snapshot-registry.ts +0 -201
  414. package/src/protocol/snapshot/snapshot.test.ts +0 -76
  415. package/src/protocol/snapshot/snapshot.ts +0 -41
  416. /package/dist/{core → types/core}/binary-codec/index.d.ts +0 -0
  417. /package/dist/{core → types/core}/driver/driver.d.ts +0 -0
  418. /package/dist/{core → types/core}/driver/drivers/immediate.d.ts +0 -0
  419. /package/dist/{core → types/core}/driver/drivers/index.d.ts +0 -0
  420. /package/dist/{core → types/core}/driver/drivers/raf.d.ts +0 -0
  421. /package/dist/{core → types/core}/driver/drivers/timeout.d.ts +0 -0
  422. /package/dist/{core → types/core}/driver/index.d.ts +0 -0
  423. /package/dist/{core → types/core}/events/index.d.ts +0 -0
  424. /package/dist/{core → types/core}/fixed-ticker/fixed-ticker.d.ts +0 -0
  425. /package/dist/{core → types/core}/fixed-ticker/index.d.ts +0 -0
  426. /package/dist/{core → types/core}/generate-id/generate-id.d.ts +0 -0
  427. /package/dist/{core → types/core}/generate-id/index.d.ts +0 -0
  428. /package/dist/{core → types/core}/input/sources/browser.d.ts +0 -0
  429. /package/dist/{core → types/core}/input/sources/index.d.ts +0 -0
  430. /package/dist/{core → types/core}/input/types.d.ts +0 -0
  431. /package/dist/{core → types/core}/lerp/index.d.ts +0 -0
  432. /package/dist/{core → types/core}/lerp/lerp.d.ts +0 -0
  433. /package/dist/{core → types/core}/navmesh/index.d.ts +0 -0
  434. /package/dist/{core → types/core}/navmesh/navmesh-worker-pool.d.ts +0 -0
  435. /package/dist/{core → types/core}/navmesh/navmesh.worker.d.ts +0 -0
  436. /package/dist/{core → types/core}/pooled-codec/index.d.ts +0 -0
  437. /package/dist/{core → types/core}/pooled-codec/pooled-codec.d.ts +0 -0
  438. /package/dist/{core → types/core}/prediction/index.d.ts +0 -0
  439. /package/dist/{core → types/core}/prediction/prediction.d.ts +0 -0
  440. /package/dist/{ecs → types/ecs}/component-store.d.ts +0 -0
  441. /package/dist/{ecs → types/ecs}/component.d.ts +0 -0
  442. /package/dist/{ecs → types/ecs}/entity-handle.d.ts +0 -0
  443. /package/dist/{ecs → types/ecs}/example.d.ts +0 -0
  444. /package/dist/{ecs → types/ecs}/index.d.ts +0 -0
  445. /package/dist/{ecs → types/ecs}/system-builder.d.ts +0 -0
  446. /package/dist/{ecs → types/ecs}/world-systems.d.ts +0 -0
  447. /package/dist/{game → types/game}/index.d.ts +0 -0
  448. /package/dist/{game → types/game}/loop/index.d.ts +0 -0
  449. /package/dist/{net → types/net}/adapters/browser-websocket.d.ts +0 -0
  450. /package/dist/{net → types/net}/adapters/bun-websocket.d.ts +0 -0
  451. /package/dist/{net → types/net}/buffer-pool.d.ts +0 -0
  452. /package/dist/{net → types/net}/client.d.ts +0 -0
  453. /package/dist/{net → types/net}/server.d.ts +0 -0
  454. /package/dist/{net → types/net}/types.d.ts +0 -0
  455. /package/dist/{net → types/net}/validators.d.ts +0 -0
  456. /package/dist/{protocol → types/protocol}/index.d.ts +0 -0
  457. /package/dist/{protocol → types/protocol}/intent/define-intent.d.ts +0 -0
  458. /package/dist/{protocol → types/protocol}/intent/index.d.ts +0 -0
  459. /package/dist/{protocol → types/protocol}/intent/intent-registry.d.ts +0 -0
  460. /package/dist/{protocol → types/protocol}/intent/intent.d.ts +0 -0
  461. /package/dist/{protocol → types/protocol}/rpc/define-rpc.d.ts +0 -0
  462. /package/dist/{protocol → types/protocol}/rpc/index.d.ts +0 -0
  463. /package/dist/{protocol → types/protocol}/rpc/rpc-registry.d.ts +0 -0
  464. /package/dist/{protocol → types/protocol}/rpc/rpc.d.ts +0 -0
  465. /package/dist/{protocol → types/protocol}/snapshot/index.d.ts +0 -0
  466. /package/dist/{protocol → types/protocol}/snapshot/snapshot-codec.d.ts +0 -0
  467. /package/dist/{protocol → types/protocol}/snapshot/snapshot-registry.d.ts +0 -0
  468. /package/dist/{protocol → types/protocol}/snapshot/snapshot.d.ts +0 -0
  469. /package/dist/{core/input/types.js → webgpu/types/2d/animation.test.d.ts} +0 -0
  470. /package/dist/{protocol/intent/intent.js → webgpu/types/2d/sprite-accessor.test.d.ts} +0 -0
@@ -1,71 +0,0 @@
1
- /**
2
- * Minimal delay for setTimeout-based loop scheduling.
3
- * Using 1ms allows the event loop to process I/O while still maintaining high tick rates.
4
- */
5
- const TIMEOUT_DELAY = 1;
6
- /**
7
- * Server-side game loop driver using setTimeout.
8
- *
9
- * This driver provides a more controlled alternative to setImmediate, running the game loop
10
- * with a minimal delay (1ms) between iterations. This ensures the event loop can process
11
- * I/O operations while maintaining high tick rates.
12
- *
13
- * Unlike setImmediate which runs as fast as possible, setTimeout provides better I/O responsiveness
14
- * by yielding to the event loop between ticks with a minimal delay.
15
- *
16
- * Delta time is automatically calculated between iterations and passed to the update callback in seconds.
17
- *
18
- * **Note:** This driver is designed for Node.js/Bun server environments. For maximum performance
19
- * without I/O concerns, use ImmediateDriver instead.
20
- *
21
- * @example
22
- * ```typescript
23
- * const driver = new TimeoutDriver((dt) => {
24
- * world.tick(dt);
25
- * broadcastState();
26
- * });
27
- * driver.start();
28
- * ```
29
- */
30
- export class TimeoutDriver {
31
- /**
32
- * @param update - Callback invoked each tick with delta time in seconds
33
- */
34
- constructor(update) {
35
- this.update = update;
36
- this.last = performance.now();
37
- this.running = false;
38
- /**
39
- * Internal loop method that calculates delta time and schedules the next iteration.
40
- *
41
- * Delta time is provided in seconds. Uses 1ms delay to allow I/O processing.
42
- */
43
- this.loop = () => {
44
- if (!this.running)
45
- return;
46
- const now = performance.now();
47
- const dt = (now - this.last) / 1000;
48
- this.last = now;
49
- this.update(dt);
50
- setTimeout(this.loop, TIMEOUT_DELAY);
51
- };
52
- }
53
- /**
54
- * Starts the game loop using setTimeout with minimal delay.
55
- *
56
- * Resets timing to prevent large initial delta.
57
- */
58
- start() {
59
- this.running = true;
60
- this.last = performance.now();
61
- this.loop();
62
- }
63
- /**
64
- * Stops the game loop.
65
- *
66
- * Note: Does not cancel already queued setTimeout callbacks.
67
- */
68
- stop() {
69
- this.running = false;
70
- }
71
- }
@@ -1,2 +0,0 @@
1
- export * from './driver';
2
- export * from './drivers';
@@ -1,88 +0,0 @@
1
- /**
2
- * @description
3
- * A callback-based event handling system designed to simplify
4
- * event-driven programming.
5
- */
6
- export class EventSystem {
7
- constructor({ events }) {
8
- this.callbacks = new Map();
9
- this.events = events;
10
- for (const name of this.events) {
11
- this.callbacks.set(name, new Set());
12
- }
13
- }
14
- /**
15
- * @description
16
- * Registers a callback for an event.
17
- *
18
- * @param name Event name
19
- * @param callback Callback to run when the event is emitted
20
- */
21
- on(name, callback) {
22
- const event = this.callbacks.get(name);
23
- if (!event)
24
- return console.warn(`Event "${name}" does not exist.`);
25
- event.add(callback);
26
- }
27
- /**
28
- * @description
29
- * Registers a callback for an event that runs only once.
30
- *
31
- * @param name Event name
32
- * @param callback Callback to run when the event is emitted
33
- */
34
- once(name, callback) {
35
- const wrapper = (props) => {
36
- callback(props);
37
- this.off(name, wrapper);
38
- };
39
- this.on(name, wrapper);
40
- }
41
- /**
42
- * @description
43
- * Emits an event, running all registered callbacks.
44
- *
45
- * @param name Event name
46
- * @param data Event data
47
- */
48
- emit(name, data) {
49
- const event = this.callbacks.get(name);
50
- if (!event)
51
- return console.warn(`Event "${name}" does not exist.`);
52
- for (const callback of event) {
53
- callback(data);
54
- }
55
- }
56
- /**
57
- * @description
58
- * Removes a callback from an event.
59
- *
60
- * @param name Event name
61
- * @param callback Callback to remove
62
- */
63
- off(name, callback) {
64
- const event = this.callbacks.get(name);
65
- if (!event)
66
- return console.warn(`Event "${name}" does not exist.`);
67
- event.delete(callback);
68
- }
69
- /**
70
- * @description
71
- * Removes all callbacks.
72
- *
73
- * @param name Optional event name
74
- */
75
- clear(name) {
76
- if (!name) {
77
- this.callbacks.clear();
78
- for (const name of this.events) {
79
- this.callbacks.set(name, new Set());
80
- }
81
- return;
82
- }
83
- const event = this.callbacks.get(name);
84
- if (!event)
85
- return console.warn(`Event "${name}" does not exist.`);
86
- event.clear();
87
- }
88
- }
@@ -1 +0,0 @@
1
- export * from './event-system';
@@ -1,105 +0,0 @@
1
- /**
2
- * @description
3
- * A utility class for managing fixed-rate update ticks, useful for deterministic behaviour
4
- * in both client and server.
5
- *
6
- * The `FixedTicker` accumulates elapsed time and determines how many fixed-interval "ticks"
7
- * should be processed based on a specified tick rate. It also limits the maximum number of
8
- * ticks per frame to prevent runaway update loops when frame times are long.
9
- *
10
- *
11
- * @remarks
12
- * - The `tick` method should be called once per frame, passing the elapsed time in seconds.
13
- * - The class ensures that no more than a safe number of ticks are processed per frame.
14
- */
15
- export class FixedTicker {
16
- constructor({ rate, onTick }) {
17
- /**
18
- * @description Accumulator for the time passed since the last tick (in milliseconds)
19
- */
20
- this.accumulator = 0;
21
- /**
22
- * @description
23
- * Internal counter for the number of ticks processed.
24
- */
25
- this._tickCount = 0;
26
- this.rate = rate;
27
- this.intervalMs = 1000 / this.rate;
28
- this.onTick = onTick;
29
- // Allow up to rate/2 ticks per frame, but at least 1.
30
- // Prevents runaway loops if delta is too large.
31
- this.maxTicksPerFrame = Math.max(1, Math.floor(rate / 2));
32
- }
33
- /**
34
- * @description
35
- * Returns how many ticks to run.
36
- *
37
- * @param deltaTime Delta time in seconds
38
- * @returns {number} Amount of ticks to run
39
- */
40
- getTicks(deltaTime) {
41
- this.accumulator += deltaTime * 1000;
42
- let ticks = 0;
43
- // Use a small epsilon relative to interval to handle floating point precision errors
44
- // Without this, accumulator might be 0.9999999 when it should be 1.0
45
- const epsilon = this.intervalMs * 0.001;
46
- while (this.accumulator >= this.intervalMs - epsilon &&
47
- ticks < this.maxTicksPerFrame) {
48
- this.accumulator -= this.intervalMs;
49
- ticks++;
50
- }
51
- const skippedTicks = Math.floor(this.accumulator / this.intervalMs);
52
- if (skippedTicks > 0 && this.onTickSkipped) {
53
- this.onTickSkipped(skippedTicks);
54
- }
55
- return ticks;
56
- }
57
- /**
58
- * @description
59
- * Processes the ticks based on the elapsed time.
60
- *
61
- * @param deltaTime Delta time in seconds
62
- */
63
- tick(deltaTime) {
64
- const ticks = this.getTicks(deltaTime);
65
- for (let i = 0; i < ticks; i++) {
66
- this.onTick(1 / this.rate, this._tickCount++);
67
- }
68
- }
69
- /**
70
- * @description
71
- * Returns the number of ticks processed since the last reset.
72
- *
73
- * @returns {number} Number of ticks processed
74
- */
75
- get tickCount() {
76
- return this._tickCount;
77
- }
78
- /**
79
- * @description
80
- * Resets the tick count to zero.
81
- */
82
- resetTickCount() {
83
- this._tickCount = 0;
84
- this.accumulator = 0;
85
- }
86
- /**
87
- * @description
88
- * Returns the accumulated time in seconds, useful for interpolation.
89
- *
90
- * @returns {number} Accumulated time in seconds
91
- */
92
- get accumulatedTime() {
93
- return this.accumulator / 1000; // Convert to seconds
94
- }
95
- /**
96
- * @description
97
- * Returns the interpolation factor between 0 and 1 for smooth rendering between ticks.
98
- * Clamped to prevent extrapolation when ticks are skipped.
99
- *
100
- * @returns {number} Alpha value between 0 and 1
101
- */
102
- get alpha() {
103
- return Math.min(this.accumulatedTime / (1 / this.rate), 1.0);
104
- }
105
- }
@@ -1 +0,0 @@
1
- export * from './fixed-ticker';
@@ -1,25 +0,0 @@
1
- /**
2
- * @description
3
- * Generates a unique identifier as a hexadecimal string.
4
- * Can include a prefix and a custom total length.
5
- *
6
- * @param options Optional configuration: prefix and total size
7
- * @returns A unique identifier string
8
- *
9
- * @example
10
- * generateId(); // "f3a2b1c4d5e67890"
11
- * generateId({ prefix: 'user_' }); // "user_f3a2b1c4d5e67890"
12
- * generateId({ prefix: 'user_', size: 24 }); // "user_00f3a2b1c4d5e67890"
13
- */
14
- export function generateId(options = {}) {
15
- const { prefix = "", size = 16 } = options;
16
- // compute number of hex characters to generate (subtract prefix length)
17
- const hexLength = Math.max(size - prefix.length, 8); // min 8 hex chars
18
- // number of 32-bit integers needed to cover the hexLength
19
- const numInts = Math.ceil(hexLength / 8);
20
- const arr = crypto.getRandomValues(new Uint32Array(numInts));
21
- let id = arr.reduce((acc, val) => acc + val.toString(16).padStart(8, "0"), "");
22
- // truncate/pad to desired length
23
- id = id.slice(0, hexLength).padStart(hexLength, "0");
24
- return `${prefix}${id}`;
25
- }
@@ -1 +0,0 @@
1
- export * from './generate-id';
@@ -1,10 +0,0 @@
1
- export * from './binary-codec';
2
- export * from './events';
3
- export * from './fixed-ticker';
4
- export * from './generate-id';
5
- export * from './lerp';
6
- export * from './driver';
7
- export * from './navmesh';
8
- export * from './pooled-codec';
9
- export * from './prediction';
10
- export * from './input';
@@ -1,2 +0,0 @@
1
- export * from "./manager";
2
- export * from "./sources";
@@ -1,211 +0,0 @@
1
- /**
2
- * Manages keyboard and mouse input.
3
- *
4
- * Design goals:
5
- * - Zero allocations per frame/tick
6
- * - Render reads live state (peek)
7
- * - Simulation reads frozen state (snapshot)
8
- * - Deterministic hit/release semantics
9
- */
10
- export class InputManager {
11
- constructor() {
12
- this.keys = Object.create(null);
13
- this.prevKeys = Object.create(null);
14
- this.mouse = {
15
- x: 0,
16
- y: 0,
17
- dx: 0,
18
- dy: 0,
19
- left: false,
20
- right: false,
21
- middle: false,
22
- scrollX: 0,
23
- scrollY: 0,
24
- };
25
- this.prevMouse = {
26
- left: false,
27
- right: false,
28
- middle: false,
29
- };
30
- this.snapshotFlip = false;
31
- this.handlers = {
32
- keydown: (e) => this.onKeyDown(e),
33
- keyup: (e) => this.onKeyUp(e),
34
- mousemove: (e) => this.onMouseMove(e),
35
- mousedown: (e) => this.onMouseDown(e),
36
- mouseup: (e) => this.onMouseUp(e),
37
- wheel: (e) => this.onMouseWheel(e),
38
- swipe: (dir) => this.onSwipe(dir),
39
- pinch: (scale) => this.onPinch(scale),
40
- };
41
- this.snapshotA = createEmptySnapshot();
42
- this.snapshotB = createEmptySnapshot();
43
- }
44
- /**
45
- * Returns a live, non-allocating view of the current input state.
46
- *
47
- * - No hit/release detection
48
- * - No resets
49
- * - Safe for render passes
50
- */
51
- peek() {
52
- const snap = this.snapshotFlip ? this.snapshotA : this.snapshotB;
53
- fillLiveView(snap, this.keys, this.mouse);
54
- return snap;
55
- }
56
- /**
57
- * Produces a frozen snapshot of the input state.
58
- *
59
- * - Computes hit/release
60
- * - Resets deltas
61
- * - Safe to store for the duration of the tick
62
- */
63
- snapshot() {
64
- const snap = this.snapshotFlip ? this.snapshotA : this.snapshotB;
65
- this.snapshotFlip = !this.snapshotFlip;
66
- fillSnapshot(snap, this.keys, this.prevKeys, this.mouse, this.prevMouse);
67
- this.mouse.dx = 0;
68
- this.mouse.dy = 0;
69
- this.mouse.scrollX = 0;
70
- this.mouse.scrollY = 0;
71
- this.prevMouse.left = this.mouse.left;
72
- this.prevMouse.right = this.mouse.right;
73
- this.prevMouse.middle = this.mouse.middle;
74
- return snap;
75
- }
76
- /**
77
- * Starts listening to an input event source
78
- */
79
- listen(source) {
80
- if (this.inputSource)
81
- this.inputSource.detach();
82
- this.inputSource = source;
83
- source.attach(this.handlers);
84
- }
85
- /**
86
- * Stops listening to the current input source.
87
- */
88
- unlisten() {
89
- if (!this.inputSource)
90
- return;
91
- this.inputSource.detach();
92
- }
93
- onKeyDown(e) {
94
- var _a, _b;
95
- const key = ((_a = this.keys)[_b = e.code] ?? (_a[_b] = { down: false, hit: false, released: false }));
96
- key.down = true;
97
- }
98
- onKeyUp(e) {
99
- var _a, _b;
100
- const key = ((_a = this.keys)[_b = e.code] ?? (_a[_b] = { down: false, hit: false, released: false }));
101
- key.down = false;
102
- }
103
- onMouseMove(e) {
104
- const rect = e.target.getBoundingClientRect();
105
- const x = e.clientX - rect.left;
106
- const y = e.clientY - rect.top;
107
- this.mouse.dx += x - this.mouse.x;
108
- this.mouse.dy += y - this.mouse.y;
109
- this.mouse.x = x;
110
- this.mouse.y = y;
111
- }
112
- onMouseDown(e) {
113
- if (e.button === 0)
114
- this.mouse.left = true;
115
- if (e.button === 1)
116
- this.mouse.middle = true;
117
- if (e.button === 2)
118
- this.mouse.right = true;
119
- }
120
- onMouseUp(e) {
121
- if (e.button === 0)
122
- this.mouse.left = false;
123
- if (e.button === 1)
124
- this.mouse.middle = false;
125
- if (e.button === 2)
126
- this.mouse.right = false;
127
- }
128
- onMouseWheel(e) {
129
- this.mouse.scrollX += e.deltaX;
130
- this.mouse.scrollY += e.deltaY;
131
- }
132
- onSwipe(_dir) {
133
- // Gesture layer lives above core input
134
- }
135
- onPinch(_scale) {
136
- // Gesture layer lives above core input
137
- }
138
- }
139
- /**
140
- * Creates a reusable, fully-initialized snapshot object.
141
- */
142
- function createEmptySnapshot() {
143
- return {
144
- mouse: {
145
- position: { x: 0, y: 0 },
146
- delta: {
147
- position: { x: 0, y: 0 },
148
- scroll: { x: 0, y: 0 },
149
- },
150
- left: { down: false, hit: false, released: false },
151
- right: { down: false, hit: false, released: false },
152
- middle: { down: false, hit: false, released: false },
153
- },
154
- keys: Object.create(null),
155
- };
156
- }
157
- /**
158
- * Fills a snapshot with live input state.
159
- * No hit/release, no resets.
160
- */
161
- function fillLiveView(snap, keys, mouse) {
162
- var _a;
163
- for (const k in keys) {
164
- const dst = ((_a = snap.keys)[k] ?? (_a[k] = { down: false, hit: false, released: false }));
165
- dst.down = keys[k].down;
166
- dst.hit = false;
167
- dst.released = false;
168
- }
169
- snap.mouse.position.x = mouse.x;
170
- snap.mouse.position.y = mouse.y;
171
- snap.mouse.delta.position.x = mouse.dx;
172
- snap.mouse.delta.position.y = mouse.dy;
173
- snap.mouse.delta.scroll.x = mouse.scrollX;
174
- snap.mouse.delta.scroll.y = mouse.scrollY;
175
- snap.mouse.left.down = mouse.left;
176
- snap.mouse.right.down = mouse.right;
177
- snap.mouse.middle.down = mouse.middle;
178
- snap.mouse.left.hit = snap.mouse.left.released = false;
179
- snap.mouse.right.hit = snap.mouse.right.released = false;
180
- snap.mouse.middle.hit = snap.mouse.middle.released = false;
181
- }
182
- /**
183
- * Fills a snapshot with frozen input state.
184
- * Computes hit/release and updates previous state.
185
- */
186
- function fillSnapshot(snap, keys, prevKeys, mouse, prevMouse) {
187
- var _a;
188
- for (const k in keys) {
189
- const now = keys[k].down;
190
- const prev = prevKeys[k] ?? false;
191
- const dst = ((_a = snap.keys)[k] ?? (_a[k] = { down: false, hit: false, released: false }));
192
- dst.down = now;
193
- dst.hit = now && !prev;
194
- dst.released = !now && prev;
195
- prevKeys[k] = now;
196
- }
197
- snap.mouse.position.x = mouse.x;
198
- snap.mouse.position.y = mouse.y;
199
- snap.mouse.delta.position.x = mouse.dx;
200
- snap.mouse.delta.position.y = mouse.dy;
201
- snap.mouse.delta.scroll.x = mouse.scrollX;
202
- snap.mouse.delta.scroll.y = mouse.scrollY;
203
- applyButton(snap.mouse.left, mouse.left, prevMouse.left);
204
- applyButton(snap.mouse.right, mouse.right, prevMouse.right);
205
- applyButton(snap.mouse.middle, mouse.middle, prevMouse.middle);
206
- }
207
- function applyButton(dst, now, prev) {
208
- dst.down = now;
209
- dst.hit = now && !prev;
210
- dst.released = !now && prev;
211
- }
@@ -1,29 +0,0 @@
1
- export class BrowserInputSource {
2
- constructor(keyboardTarget, mouseTarget) {
3
- this.keyboardTarget = keyboardTarget;
4
- this.mouseTarget = mouseTarget;
5
- }
6
- attach(h) {
7
- if (this.handlers) {
8
- this.detach();
9
- }
10
- this.handlers = h;
11
- this.keyboardTarget.addEventListener('keydown', h.keydown);
12
- this.keyboardTarget.addEventListener('keyup', h.keyup);
13
- this.mouseTarget.addEventListener('mousemove', h.mousemove);
14
- this.mouseTarget.addEventListener('mousedown', h.mousedown);
15
- this.mouseTarget.addEventListener('mouseup', h.mouseup);
16
- this.mouseTarget.addEventListener('wheel', h.wheel);
17
- }
18
- detach() {
19
- const h = this.handlers;
20
- if (!h)
21
- return;
22
- this.keyboardTarget.removeEventListener('keydown', h.keydown);
23
- this.keyboardTarget.removeEventListener('keyup', h.keyup);
24
- this.mouseTarget.removeEventListener('mousemove', h.mousemove);
25
- this.mouseTarget.removeEventListener('mousedown', h.mousedown);
26
- this.mouseTarget.removeEventListener('mouseup', h.mouseup);
27
- this.mouseTarget.removeEventListener('wheel', h.wheel);
28
- }
29
- }
@@ -1 +0,0 @@
1
- export * from "./browser";
@@ -1 +0,0 @@
1
- export * from './lerp';
@@ -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, end, t) {
41
- return start + (end - start) * t;
42
- }
@@ -1 +0,0 @@
1
- export * from './navmesh';