murow 0.0.60 → 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 (425) 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/loop → types/core/driver}/drivers/immediate.d.ts +1 -1
  156. package/dist/{core/loop → types/core/driver}/drivers/raf.d.ts +1 -1
  157. package/dist/{core/loop → types/core/driver}/drivers/timeout.d.ts +1 -1
  158. package/dist/{core/loop → types/core/driver}/index.d.ts +1 -1
  159. package/dist/{core → types/core}/events/event-system.d.ts +14 -33
  160. package/dist/{core → types/core}/fixed-ticker/fixed-ticker.d.ts +1 -1
  161. package/dist/types/core/free-list/free-list.d.ts +31 -0
  162. package/dist/types/core/free-list/index.d.ts +1 -0
  163. package/dist/{core → types/core}/index.d.ts +7 -1
  164. package/dist/types/core/input/index.d.ts +3 -0
  165. package/dist/types/core/input/manager.d.ts +56 -0
  166. package/dist/types/core/input/sources/browser.d.ts +9 -0
  167. package/dist/types/core/input/sources/index.d.ts +1 -0
  168. package/dist/types/core/input/types.d.ts +36 -0
  169. package/dist/{core → types/core}/navmesh/navmesh.d.ts +1 -21
  170. package/dist/types/core/ray/index.d.ts +2 -0
  171. package/dist/types/core/ray/ray-2d.d.ts +37 -0
  172. package/dist/types/core/ray/ray-3d.d.ts +42 -0
  173. package/dist/types/core/simple-rng/index.d.ts +1 -0
  174. package/dist/types/core/simple-rng/simple-rng.d.ts +36 -0
  175. package/dist/types/core/sparse-batcher/index.d.ts +1 -0
  176. package/dist/types/core/sparse-batcher/sparse-batcher.d.ts +55 -0
  177. package/dist/{ecs → types/ecs}/system-builder.d.ts +20 -9
  178. package/dist/{ecs → types/ecs}/world.d.ts +11 -0
  179. package/dist/types/game/index.d.ts +1 -0
  180. package/dist/types/game/loop/index.d.ts +1 -0
  181. package/dist/types/game/loop/loop.d.ts +175 -0
  182. package/dist/{index.d.ts → types/index.d.ts} +2 -0
  183. package/dist/{net → types/net}/index.d.ts +2 -2
  184. package/dist/{net → types/net}/server.d.ts +39 -19
  185. package/dist/{protocol → types/protocol}/intent/define-intent.d.ts +15 -0
  186. package/dist/{protocol → types/protocol}/intent/index.d.ts +1 -1
  187. package/dist/types/renderer/base-2d-renderer.d.ts +13 -0
  188. package/dist/types/renderer/base-3d-renderer.d.ts +10 -0
  189. package/dist/types/renderer/base-renderer.d.ts +21 -0
  190. package/dist/types/renderer/index.d.ts +4 -0
  191. package/dist/types/renderer/types.d.ts +79 -0
  192. package/dist/webgpu/cjs/index.js +6004 -0
  193. package/dist/webgpu/esm/index.js +5972 -0
  194. package/dist/webgpu/types/2d/animation.d.ts +97 -0
  195. package/dist/webgpu/types/2d/renderer.d.ts +55 -0
  196. package/dist/webgpu/types/2d/shader.d.ts +61 -0
  197. package/dist/webgpu/types/2d/sprite-accessor.d.ts +47 -0
  198. package/dist/webgpu/types/2d/sprite-accessor.test.d.ts +1 -0
  199. package/dist/webgpu/types/3d/gltf-skin-parser.d.ts +101 -0
  200. package/dist/webgpu/types/3d/morph-animation.d.ts +69 -0
  201. package/dist/webgpu/types/3d/morph-animation.test.d.ts +1 -0
  202. package/dist/webgpu/types/3d/renderer.d.ts +216 -0
  203. package/dist/webgpu/types/3d/shader.d.ts +136 -0
  204. package/dist/webgpu/types/3d/skeletal-animation-compute/index.d.ts +2 -0
  205. package/dist/webgpu/types/3d/skeletal-animation-compute/kernel.d.ts +8 -0
  206. package/dist/webgpu/types/3d/skeletal-animation-compute/packer.d.ts +32 -0
  207. package/dist/webgpu/types/3d/skeletal-animation.d.ts +90 -0
  208. package/dist/webgpu/types/camera/camera-2d.d.ts +53 -0
  209. package/dist/webgpu/types/camera/camera-2d.test.d.ts +1 -0
  210. package/dist/webgpu/types/camera/camera-3d.d.ts +81 -0
  211. package/dist/webgpu/types/camera/camera-3d.test.d.ts +1 -0
  212. package/dist/webgpu/types/camera/index.d.ts +2 -0
  213. package/dist/webgpu/types/compute/compute-builder.d.ts +123 -0
  214. package/dist/webgpu/types/compute/compute-builder.test.d.ts +1 -0
  215. package/dist/webgpu/types/core/constants.d.ts +59 -0
  216. package/dist/webgpu/types/core/constants.test.d.ts +1 -0
  217. package/dist/webgpu/types/core/index.d.ts +2 -0
  218. package/dist/webgpu/types/core/math.d.ts +37 -0
  219. package/dist/webgpu/types/core/types.d.ts +125 -0
  220. package/dist/webgpu/types/core/types.test.d.ts +1 -0
  221. package/dist/webgpu/types/geometry/built-in.d.ts +58 -0
  222. package/dist/webgpu/types/geometry/built-in.test.d.ts +1 -0
  223. package/dist/webgpu/types/geometry/geometry-builder.d.ts +281 -0
  224. package/dist/webgpu/types/geometry/geometry-builder.test.d.ts +1 -0
  225. package/dist/webgpu/types/geometry/index.d.ts +2 -0
  226. package/dist/webgpu/types/index.d.ts +32 -0
  227. package/dist/webgpu/types/particle/emitter.d.ts +36 -0
  228. package/dist/webgpu/types/shaders/index.d.ts +2 -0
  229. package/dist/webgpu/types/shaders/runtime-transpile.d.ts +18 -0
  230. package/dist/webgpu/types/shaders/sprite-2d.wgsl.d.ts +10 -0
  231. package/dist/webgpu/types/shaders/typegpu.d.ts +9 -0
  232. package/dist/webgpu/types/shaders/utils.d.ts +28 -0
  233. package/dist/webgpu/types/shaders/utils.test.d.ts +1 -0
  234. package/dist/webgpu/types/spritesheet/index.d.ts +1 -0
  235. package/dist/webgpu/types/spritesheet/spritesheet.d.ts +57 -0
  236. package/dist/webgpu/types/spritesheet/spritesheet.test.d.ts +1 -0
  237. package/package.json +96 -26
  238. package/dist/core/binary-codec/binary-codec.js +0 -354
  239. package/dist/core/binary-codec/index.js +0 -1
  240. package/dist/core/events/event-system.js +0 -88
  241. package/dist/core/events/index.js +0 -1
  242. package/dist/core/fixed-ticker/fixed-ticker.js +0 -101
  243. package/dist/core/fixed-ticker/index.js +0 -1
  244. package/dist/core/generate-id/generate-id.js +0 -25
  245. package/dist/core/generate-id/index.js +0 -1
  246. package/dist/core/index.js +0 -9
  247. package/dist/core/lerp/index.js +0 -1
  248. package/dist/core/lerp/lerp.js +0 -42
  249. package/dist/core/loop/drivers/immediate.js +0 -61
  250. package/dist/core/loop/drivers/index.js +0 -3
  251. package/dist/core/loop/drivers/raf.js +0 -62
  252. package/dist/core/loop/drivers/timeout.js +0 -71
  253. package/dist/core/loop/index.js +0 -2
  254. package/dist/core/loop/loop.js +0 -47
  255. package/dist/core/navmesh/index.js +0 -1
  256. package/dist/core/navmesh/navmesh-worker-pool.js +0 -180
  257. package/dist/core/navmesh/navmesh.js +0 -799
  258. package/dist/core/navmesh/navmesh.worker.js +0 -79
  259. package/dist/core/pooled-codec/index.js +0 -1
  260. package/dist/core/pooled-codec/pooled-codec.js +0 -410
  261. package/dist/core/prediction/index.js +0 -1
  262. package/dist/core/prediction/prediction.js +0 -99
  263. package/dist/core.esm.js +0 -1
  264. package/dist/core.js +0 -1
  265. package/dist/ecs/component-store.js +0 -175
  266. package/dist/ecs/component.js +0 -43
  267. package/dist/ecs/entity-handle.js +0 -515
  268. package/dist/ecs/example.js +0 -125
  269. package/dist/ecs/index.js +0 -4
  270. package/dist/ecs/system-builder.js +0 -180
  271. package/dist/ecs/system.d.ts +0 -63
  272. package/dist/ecs/system.js +0 -92
  273. package/dist/ecs/world-systems.js +0 -79
  274. package/dist/ecs/world.js +0 -684
  275. package/dist/index.js +0 -24
  276. package/dist/net/adapters/browser-websocket.js +0 -74
  277. package/dist/net/adapters/bun-websocket.js +0 -245
  278. package/dist/net/buffer-pool.js +0 -89
  279. package/dist/net/client.js +0 -586
  280. package/dist/net/index.js +0 -58
  281. package/dist/net/server.js +0 -938
  282. package/dist/net/types.js +0 -31
  283. package/dist/net/validators.js +0 -88
  284. package/dist/protocol/index.js +0 -92
  285. package/dist/protocol/intent/define-intent.js +0 -125
  286. package/dist/protocol/intent/index.js +0 -91
  287. package/dist/protocol/intent/intent-registry.js +0 -91
  288. package/dist/protocol/rpc/define-rpc.js +0 -84
  289. package/dist/protocol/rpc/index.js +0 -3
  290. package/dist/protocol/rpc/rpc-registry.js +0 -159
  291. package/dist/protocol/rpc/rpc.js +0 -12
  292. package/dist/protocol/snapshot/index.js +0 -43
  293. package/dist/protocol/snapshot/snapshot-codec.js +0 -67
  294. package/dist/protocol/snapshot/snapshot-registry.js +0 -168
  295. package/dist/protocol/snapshot/snapshot.js +0 -30
  296. package/src/core/binary-codec/README.md +0 -60
  297. package/src/core/binary-codec/binary-codec.test.ts +0 -300
  298. package/src/core/binary-codec/binary-codec.ts +0 -448
  299. package/src/core/binary-codec/index.ts +0 -1
  300. package/src/core/events/README.md +0 -47
  301. package/src/core/events/event-system.test.ts +0 -243
  302. package/src/core/events/event-system.ts +0 -140
  303. package/src/core/events/index.ts +0 -1
  304. package/src/core/fixed-ticker/README.md +0 -77
  305. package/src/core/fixed-ticker/fixed-ticker.test.ts +0 -151
  306. package/src/core/fixed-ticker/fixed-ticker.ts +0 -169
  307. package/src/core/fixed-ticker/index.ts +0 -1
  308. package/src/core/generate-id/README.md +0 -18
  309. package/src/core/generate-id/generate-id.test.ts +0 -79
  310. package/src/core/generate-id/generate-id.ts +0 -37
  311. package/src/core/generate-id/index.ts +0 -1
  312. package/src/core/index.ts +0 -9
  313. package/src/core/lerp/README.md +0 -79
  314. package/src/core/lerp/index.ts +0 -1
  315. package/src/core/lerp/lerp.test.ts +0 -90
  316. package/src/core/lerp/lerp.ts +0 -42
  317. package/src/core/loop/README.md +0 -97
  318. package/src/core/loop/drivers/immediate.ts +0 -66
  319. package/src/core/loop/drivers/index.ts +0 -3
  320. package/src/core/loop/drivers/raf.ts +0 -67
  321. package/src/core/loop/drivers/timeout.ts +0 -77
  322. package/src/core/loop/index.ts +0 -2
  323. package/src/core/loop/loop.test.ts +0 -414
  324. package/src/core/loop/loop.ts +0 -71
  325. package/src/core/navmesh/README.md +0 -164
  326. package/src/core/navmesh/index.ts +0 -1
  327. package/src/core/navmesh/navmesh-worker-pool.ts +0 -236
  328. package/src/core/navmesh/navmesh-workers.test.ts +0 -356
  329. package/src/core/navmesh/navmesh.test.ts +0 -344
  330. package/src/core/navmesh/navmesh.ts +0 -1047
  331. package/src/core/navmesh/navmesh.worker.ts +0 -147
  332. package/src/core/pooled-codec/README.md +0 -70
  333. package/src/core/pooled-codec/index.ts +0 -1
  334. package/src/core/pooled-codec/pooled-codec.test.ts +0 -862
  335. package/src/core/pooled-codec/pooled-codec.ts +0 -504
  336. package/src/core/prediction/README.md +0 -64
  337. package/src/core/prediction/index.ts +0 -1
  338. package/src/core/prediction/prediction.test.ts +0 -423
  339. package/src/core/prediction/prediction.ts +0 -112
  340. package/src/ecs/README.md +0 -427
  341. package/src/ecs/benchmark.test.ts +0 -1645
  342. package/src/ecs/component-store.ts +0 -198
  343. package/src/ecs/component.ts +0 -90
  344. package/src/ecs/entity-handle.test.ts +0 -393
  345. package/src/ecs/entity-handle.ts +0 -563
  346. package/src/ecs/example.ts +0 -152
  347. package/src/ecs/index.ts +0 -4
  348. package/src/ecs/system-builder.ts +0 -309
  349. package/src/ecs/system.ts +0 -111
  350. package/src/ecs/world-systems.ts +0 -83
  351. package/src/ecs/world.test.ts +0 -310
  352. package/src/ecs/world.ts +0 -828
  353. package/src/index.ts +0 -28
  354. package/src/net/README.md +0 -474
  355. package/src/net/adapters/browser-websocket.ts +0 -86
  356. package/src/net/adapters/bun-websocket.ts +0 -292
  357. package/src/net/buffer-pool.ts +0 -106
  358. package/src/net/client.test.ts +0 -807
  359. package/src/net/client.ts +0 -695
  360. package/src/net/index.ts +0 -60
  361. package/src/net/server.test.ts +0 -799
  362. package/src/net/server.ts +0 -1116
  363. package/src/net/types.ts +0 -228
  364. package/src/net/validators.ts +0 -104
  365. package/src/protocol/README.md +0 -469
  366. package/src/protocol/index.ts +0 -93
  367. package/src/protocol/intent/define-intent.test.ts +0 -397
  368. package/src/protocol/intent/define-intent.ts +0 -182
  369. package/src/protocol/intent/index.ts +0 -94
  370. package/src/protocol/intent/intent-registry.test.ts +0 -198
  371. package/src/protocol/intent/intent-registry.ts +0 -112
  372. package/src/protocol/intent/intent.ts +0 -12
  373. package/src/protocol/rpc/define-rpc.test.ts +0 -141
  374. package/src/protocol/rpc/define-rpc.ts +0 -113
  375. package/src/protocol/rpc/index.ts +0 -3
  376. package/src/protocol/rpc/rpc-registry.test.ts +0 -168
  377. package/src/protocol/rpc/rpc-registry.ts +0 -176
  378. package/src/protocol/rpc/rpc.ts +0 -37
  379. package/src/protocol/snapshot/index.ts +0 -45
  380. package/src/protocol/snapshot/snapshot-codec.test.ts +0 -138
  381. package/src/protocol/snapshot/snapshot-codec.ts +0 -87
  382. package/src/protocol/snapshot/snapshot-registry.test.ts +0 -310
  383. package/src/protocol/snapshot/snapshot-registry.ts +0 -201
  384. package/src/protocol/snapshot/snapshot.test.ts +0 -76
  385. package/src/protocol/snapshot/snapshot.ts +0 -41
  386. /package/dist/{core → types/core}/binary-codec/index.d.ts +0 -0
  387. /package/dist/{core/loop/loop.d.ts → types/core/driver/driver.d.ts} +0 -0
  388. /package/dist/{core/loop → types/core/driver}/drivers/index.d.ts +0 -0
  389. /package/dist/{core → types/core}/events/index.d.ts +0 -0
  390. /package/dist/{core → types/core}/fixed-ticker/index.d.ts +0 -0
  391. /package/dist/{core → types/core}/generate-id/generate-id.d.ts +0 -0
  392. /package/dist/{core → types/core}/generate-id/index.d.ts +0 -0
  393. /package/dist/{core → types/core}/lerp/index.d.ts +0 -0
  394. /package/dist/{core → types/core}/lerp/lerp.d.ts +0 -0
  395. /package/dist/{core → types/core}/navmesh/index.d.ts +0 -0
  396. /package/dist/{core → types/core}/navmesh/navmesh-worker-pool.d.ts +0 -0
  397. /package/dist/{core → types/core}/navmesh/navmesh.worker.d.ts +0 -0
  398. /package/dist/{core → types/core}/pooled-codec/index.d.ts +0 -0
  399. /package/dist/{core → types/core}/pooled-codec/pooled-codec.d.ts +0 -0
  400. /package/dist/{core → types/core}/prediction/index.d.ts +0 -0
  401. /package/dist/{core → types/core}/prediction/prediction.d.ts +0 -0
  402. /package/dist/{ecs → types/ecs}/component-store.d.ts +0 -0
  403. /package/dist/{ecs → types/ecs}/component.d.ts +0 -0
  404. /package/dist/{ecs → types/ecs}/entity-handle.d.ts +0 -0
  405. /package/dist/{ecs → types/ecs}/example.d.ts +0 -0
  406. /package/dist/{ecs → types/ecs}/index.d.ts +0 -0
  407. /package/dist/{ecs → types/ecs}/world-systems.d.ts +0 -0
  408. /package/dist/{net → types/net}/adapters/browser-websocket.d.ts +0 -0
  409. /package/dist/{net → types/net}/adapters/bun-websocket.d.ts +0 -0
  410. /package/dist/{net → types/net}/buffer-pool.d.ts +0 -0
  411. /package/dist/{net → types/net}/client.d.ts +0 -0
  412. /package/dist/{net → types/net}/types.d.ts +0 -0
  413. /package/dist/{net → types/net}/validators.d.ts +0 -0
  414. /package/dist/{protocol → types/protocol}/index.d.ts +0 -0
  415. /package/dist/{protocol → types/protocol}/intent/intent-registry.d.ts +0 -0
  416. /package/dist/{protocol → types/protocol}/intent/intent.d.ts +0 -0
  417. /package/dist/{protocol → types/protocol}/rpc/define-rpc.d.ts +0 -0
  418. /package/dist/{protocol → types/protocol}/rpc/index.d.ts +0 -0
  419. /package/dist/{protocol → types/protocol}/rpc/rpc-registry.d.ts +0 -0
  420. /package/dist/{protocol → types/protocol}/rpc/rpc.d.ts +0 -0
  421. /package/dist/{protocol → types/protocol}/snapshot/index.d.ts +0 -0
  422. /package/dist/{protocol → types/protocol}/snapshot/snapshot-codec.d.ts +0 -0
  423. /package/dist/{protocol → types/protocol}/snapshot/snapshot-registry.d.ts +0 -0
  424. /package/dist/{protocol → types/protocol}/snapshot/snapshot.d.ts +0 -0
  425. /package/dist/{protocol/intent/intent.js → webgpu/types/2d/animation.test.d.ts} +0 -0
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Spritesheet — manages sprite UV coordinates and GPU texture.
3
+ * Supports grid-based spritesheets and texture-packer JSON.
4
+ *
5
+ * Texture creation uses the raw GPUDevice (accessed via root.device)
6
+ * since TypeGPU's texture API is unstable and we need copyExternalImageToTexture.
7
+ */
8
+ import type { SpritesheetHandle, SpriteUV } from 'murow/renderer/types';
9
+ export interface GridSpritesheetConfig {
10
+ image: string;
11
+ frameWidth: number;
12
+ frameHeight: number;
13
+ }
14
+ export interface TexturePackerFrame {
15
+ frame: {
16
+ x: number;
17
+ y: number;
18
+ w: number;
19
+ h: number;
20
+ };
21
+ }
22
+ export interface TexturePackerData {
23
+ frames: Record<string, TexturePackerFrame>;
24
+ meta: {
25
+ size: {
26
+ w: number;
27
+ h: number;
28
+ };
29
+ };
30
+ }
31
+ export interface SpritesheetConfig {
32
+ image: string;
33
+ frameWidth?: number;
34
+ frameHeight?: number;
35
+ data?: string;
36
+ }
37
+ export declare class Spritesheet implements SpritesheetHandle {
38
+ readonly id: number;
39
+ readonly frameCount: number;
40
+ readonly texture: GPUTexture;
41
+ readonly textureView: GPUTextureView;
42
+ readonly sampler: GPUSampler;
43
+ private uvs;
44
+ private _width;
45
+ private _height;
46
+ constructor(id: number, texture: GPUTexture, textureView: GPUTextureView, sampler: GPUSampler, uvs: SpriteUV[], width: number, height: number);
47
+ getUV(spriteIndex: number): SpriteUV;
48
+ get width(): number;
49
+ get height(): number;
50
+ }
51
+ export declare function computeGridUVs(imageWidth: number, imageHeight: number, frameWidth: number, frameHeight: number): SpriteUV[];
52
+ export declare function computeTexturePackerUVs(data: TexturePackerData): SpriteUV[];
53
+ export declare function loadImage(url: string): Promise<ImageBitmap>;
54
+ export declare function createTextureFromBitmap(device: GPUDevice, bitmap: ImageBitmap): {
55
+ texture: GPUTexture;
56
+ view: GPUTextureView;
57
+ };
package/package.json CHANGED
@@ -1,30 +1,14 @@
1
1
  {
2
2
  "name": "murow",
3
- "version": "0.0.60",
3
+ "version": "0.0.71",
4
4
  "description": "A lightweight TypeScript game engine for server-authoritative multiplayer games",
5
- "main": "dist/core.js",
6
- "module": "dist/core.esm.js",
7
- "types": "dist/core.d.ts",
8
- "exports": {
9
- ".": {
10
- "import": "./dist/core.esm.js",
11
- "require": "./dist/core.js",
12
- "types": "./dist/core.d.ts"
13
- },
14
- "./core": {
15
- "import": "./dist/core.esm.js",
16
- "require": "./dist/core.js",
17
- "types": "./dist/core.d.ts"
18
- }
19
- },
20
- "files": [
21
- "dist",
22
- "src"
23
- ],
5
+ "types": "dist/types/index.d.ts",
6
+ "type": "module",
7
+ "sideEffects": false,
24
8
  "scripts": {
25
9
  "build": "npm run build:types && npm run build:js",
26
- "build:js": "esbuild src/core/index.ts --bundle --outfile=dist/core.js --format=cjs --platform=neutral --minify && esbuild src/core/index.ts --bundle --outfile=dist/core.esm.js --format=esm --platform=neutral --minify",
27
- "build:types": "tsc --project tsconfig.json",
10
+ "build:js": "bun run esbuild.config.ts",
11
+ "build:types": "tsc --emitDeclarationOnly --project tsconfig.json",
28
12
  "dev": "npm run build:js -- --watch",
29
13
  "prepublishOnly": "npm run build",
30
14
  "test": "bun test ./src"
@@ -41,14 +25,100 @@
41
25
  "license": "MIT",
42
26
  "repository": {
43
27
  "type": "git",
44
- "url": "https://github.com/mococa/murow.git"
28
+ "url": "https://github.com/moureau-dev/murow.git"
45
29
  },
46
30
  "bugs": {
47
- "url": "https://github.com/mococa/murow/issues"
31
+ "url": "https://github.com/moureau-dev/murow/issues"
48
32
  },
49
33
  "devDependencies": {
50
34
  "@types/bun": "^1.1.16",
51
35
  "esbuild": "^0.19.0",
52
36
  "typescript": "^5.0.0"
53
- }
54
- }
37
+ },
38
+ "exports": {
39
+ ".": {
40
+ "types": "./dist/types/index.d.ts",
41
+ "import": "./dist/esm/index.js",
42
+ "require": "./dist/cjs/index.js",
43
+ "default": "./dist/esm/index.js"
44
+ },
45
+ "./core": {
46
+ "types": "./dist/types/core/index.d.ts",
47
+ "import": "./dist/esm/core/index.js",
48
+ "require": "./dist/cjs/core/index.js",
49
+ "default": "./dist/esm/core/index.js"
50
+ },
51
+ "./core/*": {
52
+ "types": "./dist/types/core/*/index.d.ts",
53
+ "import": "./dist/esm/core/*/index.js",
54
+ "require": "./dist/cjs/core/*/index.js"
55
+ },
56
+ "./ecs": {
57
+ "types": "./dist/types/ecs/index.d.ts",
58
+ "import": "./dist/esm/ecs/index.js",
59
+ "require": "./dist/cjs/ecs/index.js",
60
+ "default": "./dist/esm/ecs/index.js"
61
+ },
62
+ "./ecs/*": {
63
+ "types": "./dist/types/ecs/*.d.ts",
64
+ "import": "./dist/esm/ecs/*.js",
65
+ "require": "./dist/cjs/ecs/*.js"
66
+ },
67
+ "./game": {
68
+ "types": "./dist/types/game/index.d.ts",
69
+ "import": "./dist/esm/game/index.js",
70
+ "require": "./dist/cjs/game/index.js",
71
+ "default": "./dist/esm/game/index.js"
72
+ },
73
+ "./game/*": {
74
+ "types": "./dist/types/game/*.d.ts",
75
+ "import": "./dist/esm/game/*.js",
76
+ "require": "./dist/cjs/game/*.js"
77
+ },
78
+ "./net": {
79
+ "types": "./dist/types/net/index.d.ts",
80
+ "import": "./dist/esm/net/index.js",
81
+ "require": "./dist/cjs/net/index.js",
82
+ "default": "./dist/esm/net/index.js"
83
+ },
84
+ "./net/*": {
85
+ "types": "./dist/types/net/*.d.ts",
86
+ "import": "./dist/esm/net/*.js",
87
+ "require": "./dist/cjs/net/*.js"
88
+ },
89
+ "./protocol": {
90
+ "types": "./dist/types/protocol/index.d.ts",
91
+ "import": "./dist/esm/protocol/index.js",
92
+ "require": "./dist/cjs/protocol/index.js",
93
+ "default": "./dist/esm/protocol/index.js"
94
+ },
95
+ "./protocol/*": {
96
+ "types": "./dist/types/protocol/*.d.ts",
97
+ "import": "./dist/esm/protocol/*.js",
98
+ "require": "./dist/cjs/protocol/*.js"
99
+ },
100
+ "./renderer": {
101
+ "types": "./dist/types/renderer/index.d.ts",
102
+ "import": "./dist/esm/renderer/index.js",
103
+ "require": "./dist/cjs/renderer/index.js",
104
+ "default": "./dist/esm/renderer/index.js"
105
+ },
106
+ "./renderer/*": {
107
+ "types": "./dist/types/renderer/*.d.ts",
108
+ "import": "./dist/esm/renderer/*.js",
109
+ "require": "./dist/cjs/renderer/*.js"
110
+ },
111
+ "./webgpu": {
112
+ "types": "./dist/webgpu/types/index.d.ts",
113
+ "import": "./dist/webgpu/esm/index.js",
114
+ "require": "./dist/webgpu/cjs/index.js"
115
+ }
116
+ },
117
+ "optionalDependencies": {
118
+ "acorn": "^8.16.0",
119
+ "tinyest": "^0.3.1",
120
+ "tinyest-for-wgsl": "^0.3.2",
121
+ "typegpu": "^0.10.2"
122
+ },
123
+ "files": ["dist"]
124
+ }
@@ -1,354 +0,0 @@
1
- /**
2
- * Internal symbol used to cache computed schema byte size.
3
- */
4
- const SCHEMA_SIZE = Symbol("schemaSize");
5
- /**
6
- * Computes and caches the total byte size of a schema.
7
- * @param schema Binary schema definition
8
- */
9
- function getSchemaSize(schema) {
10
- const cached = schema[SCHEMA_SIZE];
11
- if (cached !== undefined)
12
- return cached;
13
- let size = 0;
14
- for (const k of Object.keys(schema)) {
15
- size += schema[k].size;
16
- }
17
- schema[SCHEMA_SIZE] = size;
18
- return size;
19
- }
20
- /**
21
- * Base codec implementation.
22
- * Handles schema-driven encoding/decoding.
23
- */
24
- export class BaseBinaryCodec {
25
- /**
26
- * Encodes an object into a binary buffer using the given schema.
27
- *
28
- * Allocates a right-sized buffer per call.
29
- * Safe for concurrent and re-entrant usage.
30
- *
31
- * @param schema Binary schema definition
32
- * @param data Object to encode
33
- * @returns A Uint8Array containing the encoded bytes
34
- */
35
- static encodeInto(schema, data) {
36
- const size = getSchemaSize(schema);
37
- const buffer = new ArrayBuffer(size);
38
- const view = new DataView(buffer);
39
- let o = 0;
40
- for (const k of Object.keys(schema)) {
41
- const f = schema[k];
42
- f.write(view, o, data[k]);
43
- o += f.size;
44
- }
45
- return new Uint8Array(buffer);
46
- }
47
- /**
48
- * Decodes a binary buffer into a target object using the given schema.
49
- *
50
- * Validates buffer size before reading.
51
- * Does not mutate shared state.
52
- *
53
- * @param schema Binary schema definition
54
- * @param buf Buffer containing encoded data
55
- * @param target Target object to mutate
56
- * @returns The mutated target object
57
- */
58
- static decodeInto(schema, buf, target) {
59
- const expectedSize = getSchemaSize(schema);
60
- if (buf.byteLength < expectedSize) {
61
- throw new RangeError(`Buffer too small: expected ${expectedSize} bytes, got ${buf.byteLength}`);
62
- }
63
- const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
64
- let o = 0;
65
- for (const k of Object.keys(schema)) {
66
- const f = schema[k];
67
- target[k] = f.read(view, o);
68
- o += f.size;
69
- }
70
- return target;
71
- }
72
- }
73
- /**
74
- * Built-in binary primitive field definitions for multiplayer games.
75
- */
76
- export class BinaryPrimitives {
77
- /**
78
- * String field with UTF-8 encoding and 2-byte length prefix.
79
- * @param maxLength Maximum number of bytes allowed
80
- */
81
- static string(maxLength) {
82
- return {
83
- size: maxLength + 2,
84
- write(dv, o, v) {
85
- const encoder = new TextEncoder();
86
- const bytes = encoder.encode(v);
87
- if (bytes.length > maxLength)
88
- throw new RangeError(`String too long, max ${maxLength} bytes`);
89
- dv.setUint16(o, bytes.length, false);
90
- for (let i = 0; i < bytes.length; i++)
91
- dv.setUint8(o + 2 + i, bytes[i]);
92
- for (let i = bytes.length; i < maxLength; i++)
93
- dv.setUint8(o + 2 + i, 0);
94
- },
95
- read(dv, o) {
96
- const length = dv.getUint16(o, false);
97
- const bytes = new Uint8Array(length);
98
- for (let i = 0; i < length; i++)
99
- bytes[i] = dv.getUint8(o + 2 + i);
100
- return new TextDecoder().decode(bytes);
101
- },
102
- toNil: () => "",
103
- };
104
- }
105
- }
106
- /** Unsigned 8-bit integer */
107
- BinaryPrimitives.u8 = {
108
- size: 1,
109
- write: (dv, o, v) => dv.setUint8(o, v),
110
- read: (dv, o) => dv.getUint8(o),
111
- toNil: () => 0,
112
- };
113
- /** Unsigned 16-bit integer (big-endian) */
114
- BinaryPrimitives.u16 = {
115
- size: 2,
116
- write: (dv, o, v) => dv.setUint16(o, v, false),
117
- read: (dv, o) => dv.getUint16(o, false),
118
- toNil: () => 0,
119
- };
120
- /** Unsigned 32-bit integer (big-endian) */
121
- BinaryPrimitives.u32 = {
122
- size: 4,
123
- write: (dv, o, v) => dv.setUint32(o, v, false),
124
- read: (dv, o) => dv.getUint32(o, false),
125
- toNil: () => 0,
126
- };
127
- /** Signed 8-bit integer */
128
- BinaryPrimitives.i8 = {
129
- size: 1,
130
- write: (dv, o, v) => dv.setInt8(o, v),
131
- read: (dv, o) => dv.getInt8(o),
132
- toNil: () => 0,
133
- };
134
- /** Signed 16-bit integer (big-endian) */
135
- BinaryPrimitives.i16 = {
136
- size: 2,
137
- write: (dv, o, v) => dv.setInt16(o, v, false),
138
- read: (dv, o) => dv.getInt16(o, false),
139
- toNil: () => 0,
140
- };
141
- /** Signed 32-bit integer (big-endian) */
142
- BinaryPrimitives.i32 = {
143
- size: 4,
144
- write: (dv, o, v) => dv.setInt32(o, v, false),
145
- read: (dv, o) => dv.getInt32(o, false),
146
- toNil: () => 0,
147
- };
148
- /** 32-bit floating point number (IEEE 754, big-endian) */
149
- BinaryPrimitives.f32 = {
150
- size: 4,
151
- write: (dv, o, v) => dv.setFloat32(o, v, false),
152
- read: (dv, o) => dv.getFloat32(o, false),
153
- toNil: () => 0,
154
- };
155
- /** 64-bit floating point number (double, big-endian) */
156
- BinaryPrimitives.f64 = {
157
- size: 8,
158
- write: (dv, o, v) => dv.setFloat64(o, v, false),
159
- read: (dv, o) => dv.getFloat64(o, false),
160
- toNil: () => 0,
161
- };
162
- /** Boolean stored as 1 byte (0 = false, 1 = true) */
163
- BinaryPrimitives.bool = {
164
- size: 1,
165
- write: (dv, o, v) => dv.setUint8(o, v ? 1 : 0),
166
- read: (dv, o) => dv.getUint8(o) !== 0,
167
- toNil: () => false,
168
- };
169
- /** 2D vector of f32 (x, y) */
170
- BinaryPrimitives.vec2 = {
171
- size: 8,
172
- write(dv, o, v) {
173
- dv.setFloat32(o, v.x, false);
174
- dv.setFloat32(o + 4, v.y, false);
175
- },
176
- read(dv, o) {
177
- return { x: dv.getFloat32(o, false), y: dv.getFloat32(o + 4, false) };
178
- },
179
- toNil: () => ({ x: 0, y: 0 }),
180
- };
181
- /** 3D vector of f32 (x, y, z) */
182
- BinaryPrimitives.vec3 = {
183
- size: 12,
184
- write(dv, o, v) {
185
- dv.setFloat32(o, v.x, false);
186
- dv.setFloat32(o + 4, v.y, false);
187
- dv.setFloat32(o + 8, v.z, false);
188
- },
189
- read(dv, o) {
190
- return {
191
- x: dv.getFloat32(o, false),
192
- y: dv.getFloat32(o + 4, false),
193
- z: dv.getFloat32(o + 8, false),
194
- };
195
- },
196
- toNil: () => ({ x: 0, y: 0, z: 0 }),
197
- };
198
- /** RGBA color packed as 4 u8 bytes */
199
- BinaryPrimitives.color = {
200
- size: 4,
201
- write(dv, o, v) {
202
- dv.setUint8(o, v.r);
203
- dv.setUint8(o + 1, v.g);
204
- dv.setUint8(o + 2, v.b);
205
- dv.setUint8(o + 3, v.a);
206
- },
207
- read(dv, o) {
208
- return {
209
- r: dv.getUint8(o),
210
- g: dv.getUint8(o + 1),
211
- b: dv.getUint8(o + 2),
212
- a: dv.getUint8(o + 3),
213
- };
214
- },
215
- toNil: () => ({ r: 0, g: 0, b: 0, a: 0 }),
216
- };
217
- /** 32-bit floating point number (IEEE 754, little-endian) */
218
- BinaryPrimitives.f32_le = {
219
- size: 4,
220
- write: (dv, o, v) => dv.setFloat32(o, v, true),
221
- read: (dv, o) => dv.getFloat32(o, true),
222
- toNil: () => 0,
223
- };
224
- /** 64-bit floating point number (double, little-endian) */
225
- BinaryPrimitives.f64_le = {
226
- size: 8,
227
- write: (dv, o, v) => dv.setFloat64(o, v, true),
228
- read: (dv, o) => dv.getFloat64(o, true),
229
- toNil: () => 0,
230
- };
231
- /** Unsigned 16-bit integer (little-endian) */
232
- BinaryPrimitives.u16_le = {
233
- size: 2,
234
- write: (dv, o, v) => dv.setUint16(o, v, true),
235
- read: (dv, o) => dv.getUint16(o, true),
236
- toNil: () => 0,
237
- };
238
- /** Unsigned 32-bit integer (little-endian) */
239
- BinaryPrimitives.u32_le = {
240
- size: 4,
241
- write: (dv, o, v) => dv.setUint32(o, v, true),
242
- read: (dv, o) => dv.getUint32(o, true),
243
- toNil: () => 0,
244
- };
245
- /** Signed 16-bit integer (little-endian) */
246
- BinaryPrimitives.i16_le = {
247
- size: 2,
248
- write: (dv, o, v) => dv.setInt16(o, v, true),
249
- read: (dv, o) => dv.getInt16(o, true),
250
- toNil: () => 0,
251
- };
252
- /** Signed 32-bit integer (little-endian) */
253
- BinaryPrimitives.i32_le = {
254
- size: 4,
255
- write: (dv, o, v) => dv.setInt32(o, v, true),
256
- read: (dv, o) => dv.getInt32(o, true),
257
- toNil: () => 0,
258
- };
259
- /**
260
- * 2D vector of f32 stored as a tuple [x, y] (little-endian).
261
- * Useful for compact math data or shader-friendly layouts.
262
- */
263
- BinaryPrimitives.vec2_le = {
264
- size: 8,
265
- write: (dv, o, v) => {
266
- dv.setFloat32(o, v[0], true);
267
- dv.setFloat32(o + 4, v[1], true);
268
- },
269
- read: (dv, o) => [
270
- dv.getFloat32(o, true),
271
- dv.getFloat32(o + 4, true),
272
- ],
273
- toNil: () => [0, 0],
274
- };
275
- /**
276
- * 3D vector of f32 stored as a tuple [x, y, z] (little-endian).
277
- * Commonly used for positions, velocities, or directions.
278
- */
279
- BinaryPrimitives.vec3_le = {
280
- size: 12,
281
- write: (dv, o, v) => {
282
- dv.setFloat32(o, v[0], true);
283
- dv.setFloat32(o + 4, v[1], true);
284
- dv.setFloat32(o + 8, v[2], true);
285
- },
286
- read: (dv, o) => [
287
- dv.getFloat32(o, true),
288
- dv.getFloat32(o + 4, true),
289
- dv.getFloat32(o + 8, true),
290
- ],
291
- toNil: () => [0, 0, 0],
292
- };
293
- /**
294
- * 4D vector of f32 stored as a tuple [x, y, z, w] (little-endian).
295
- * Useful for quaternions, colors in shaders, or homogeneous coordinates.
296
- */
297
- BinaryPrimitives.vec4_le = {
298
- size: 16,
299
- write: (dv, o, v) => {
300
- dv.setFloat32(o, v[0], true);
301
- dv.setFloat32(o + 4, v[1], true);
302
- dv.setFloat32(o + 8, v[2], true);
303
- dv.setFloat32(o + 12, v[3], true);
304
- },
305
- read: (dv, o) => [
306
- dv.getFloat32(o, true),
307
- dv.getFloat32(o + 4, true),
308
- dv.getFloat32(o + 8, true),
309
- dv.getFloat32(o + 12, true),
310
- ],
311
- toNil: () => [0, 0, 0, 0],
312
- };
313
- /**
314
- * Public codec API.
315
- * Re-exports primitives and exposes encode/decode helpers.
316
- */
317
- export class BinaryCodec extends BaseBinaryCodec {
318
- /**
319
- * Encodes an object into a binary buffer.
320
- */
321
- static encode(schema, data) {
322
- return this.encodeInto(schema, data);
323
- }
324
- /**
325
- * Decodes a binary buffer into an existing object.
326
- */
327
- static decode(schema, buf, target) {
328
- return this.decodeInto(schema, buf, target);
329
- }
330
- }
331
- /** Unsigned 8-bit integer field */
332
- BinaryCodec.u8 = BinaryPrimitives.u8;
333
- /** Unsigned 16-bit integer field */
334
- BinaryCodec.u16 = BinaryPrimitives.u16;
335
- /** Unsigned 32-bit integer field */
336
- BinaryCodec.u32 = BinaryPrimitives.u32;
337
- /** Signed 8-bit integer field */
338
- BinaryCodec.i8 = BinaryPrimitives.i8;
339
- /** Signed 16-bit integer field */
340
- BinaryCodec.i16 = BinaryPrimitives.i16;
341
- /** Signed 32-bit integer field */
342
- BinaryCodec.i32 = BinaryPrimitives.i32;
343
- /** 32-bit floating point field */
344
- BinaryCodec.f32 = BinaryPrimitives.f32;
345
- /** Boolean field */
346
- BinaryCodec.bool = BinaryPrimitives.bool;
347
- /** String field with length prefix */
348
- BinaryCodec.string = BinaryPrimitives.string;
349
- /** 2D vector field */
350
- BinaryCodec.vec2 = BinaryPrimitives.vec2;
351
- /** 3D vector field */
352
- BinaryCodec.vec3 = BinaryPrimitives.vec3;
353
- /** RGBA color field */
354
- BinaryCodec.color = BinaryPrimitives.color;
@@ -1 +0,0 @@
1
- export * from './binary-codec';
@@ -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';