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
@@ -10,62 +10,43 @@ interface EventSystemProps<EventNames extends string> {
10
10
  events: EventNames[];
11
11
  }
12
12
  /**
13
- * @description
14
- * A callback-based event handling system designed to simplify
15
- * event-driven programming.
13
+ * Zero-allocation event system. Uses flat arrays instead of Map/Set
14
+ * to avoid iterator allocations on every emit().
16
15
  */
17
16
  export declare class EventSystem<EventTuple extends [string, unknown][]> {
18
- /**
19
- * @private
20
- * @description
21
- * The map of registered events and their callbacks.
22
- */
23
- private callbacks;
24
- /**
25
- * @private
26
- * @description
27
- * The list of events that were registered.
28
- */
17
+ private eventIndex;
18
+ private callbackArrays;
19
+ private callbackCounts;
29
20
  private events;
21
+ private emitting;
30
22
  constructor({ events }: EventSystemProps<string>);
31
23
  /**
32
- * @description
33
24
  * Registers a callback for an event.
34
- *
35
- * @param name Event name
36
- * @param callback Callback to run when the event is emitted
37
25
  */
38
26
  on<EventName extends keyof EventMapFromTuple<EventTuple> & string>(name: EventName, callback: Callback<EventMapFromTuple<EventTuple>[EventName]>): void;
39
27
  /**
40
- * @description
41
28
  * Registers a callback for an event that runs only once.
42
- *
43
- * @param name Event name
44
- * @param callback Callback to run when the event is emitted
45
29
  */
46
30
  once<EventName extends keyof EventMapFromTuple<EventTuple> & string>(name: EventName, callback: Callback<EventMapFromTuple<EventTuple>[EventName]>): void;
47
31
  /**
48
- * @description
49
32
  * Emits an event, running all registered callbacks.
50
- *
51
- * @param name Event name
52
- * @param data Event data
33
+ * Zero allocations — iterates a flat array with an index loop.
34
+ * Safe to call off() during emit (nulled slots are skipped).
53
35
  */
54
36
  emit<EventName extends keyof EventMapFromTuple<EventTuple> & string>(name: EventName, data: EventMapFromTuple<EventTuple>[EventName]): void;
55
37
  /**
56
- * @description
57
38
  * Removes a callback from an event.
58
- *
59
- * @param name Event name
60
- * @param callback Callback to remove
39
+ * During emit: nulls the slot (compacted after emit finishes).
40
+ * Outside emit: swap-and-pop for O(1).
61
41
  */
62
42
  off<EventName extends keyof EventMapFromTuple<EventTuple> & string>(name: EventName, callback: Callback<EventMapFromTuple<EventTuple>[EventName]>): void;
63
43
  /**
64
- * @description
65
44
  * Removes all callbacks.
66
- *
67
- * @param name Optional event name
68
45
  */
69
46
  clear<EventName extends keyof EventMapFromTuple<EventTuple> & string>(name?: EventName): void;
47
+ /**
48
+ * Remove null gaps left by off() during emit.
49
+ */
50
+ private compact;
70
51
  }
71
52
  export {};
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Free list allocator. Zero-GC, O(1) alloc/free.
3
+ */
4
+ export declare class FreeList {
5
+ private freeList;
6
+ private freeCount;
7
+ private capacity;
8
+ constructor(capacity: number);
9
+ /**
10
+ * Allocate an index from the pool.
11
+ * @returns Available index, or -1 if exhausted
12
+ */
13
+ allocate(): number;
14
+ /**
15
+ * Return an index to the pool for reuse.
16
+ * @param index Index to free
17
+ */
18
+ free(index: number): void;
19
+ /**
20
+ * Check if an index can be allocated.
21
+ */
22
+ hasAvailable(): boolean;
23
+ /**
24
+ * Get number of available slots.
25
+ */
26
+ getAvailableCount(): number;
27
+ /**
28
+ * Get number of allocated slots.
29
+ */
30
+ getAllocatedCount(): number;
31
+ }
@@ -0,0 +1 @@
1
+ export * from "./free-list";
@@ -8,3 +8,8 @@ export * from './navmesh';
8
8
  export * from './pooled-codec';
9
9
  export * from './prediction';
10
10
  export * from './input';
11
+ export * from './free-list';
12
+ export * from './sparse-batcher';
13
+ export * from './simple-rng';
14
+ export * from './ray';
15
+ export * from '../renderer';
@@ -1,2 +1,3 @@
1
1
  export * from "./manager";
2
2
  export * from "./sources";
3
+ export type { InputSnapshot } from "./types";
@@ -12,6 +12,8 @@ export declare class InputManager {
12
12
  private keys;
13
13
  private prevKeys;
14
14
  private mouse;
15
+ private lastClientX;
16
+ private lastClientY;
15
17
  private prevMouse;
16
18
  private snapshotA;
17
19
  private snapshotB;
@@ -69,26 +69,6 @@ export interface PolygonObstacle extends BaseObstacle {
69
69
  pos: Vec2;
70
70
  rotation?: number;
71
71
  }
72
- /**
73
- * Manages obstacles with spatial hashing for fast queries.
74
- * Version tracking prevents unnecessary rebuilds.
75
- */
76
- declare class Obstacles {
77
- private items;
78
- private spatial;
79
- private _cachedItems;
80
- dirty: boolean;
81
- version: number;
82
- add(obstacle: ObstacleInput): ObstacleId;
83
- move(id: ObstacleId, pos: Vec2): void;
84
- remove(id: ObstacleId): void;
85
- /**
86
- * Fast spatial query using hash grid.
87
- * O(1) average case instead of O(n) linear scan.
88
- */
89
- at(pos: Vec2): Obstacle | undefined;
90
- get values(): Obstacle[];
91
- }
92
72
  type NavType = 'grid' | 'graph';
93
73
  /**
94
74
  * Navigation mesh with spatial hashing and smart rebuild.
@@ -132,7 +112,7 @@ export declare class NavMesh<TWorkers extends boolean | 'auto' = false> {
132
112
  private grid?;
133
113
  private graph?;
134
114
  private lastVersion;
135
- obstacles: Obstacles;
115
+ private obstacles;
136
116
  private options;
137
117
  private workerPool?;
138
118
  private pendingPaths;
@@ -0,0 +1,2 @@
1
+ export * from './ray-2d';
2
+ export * from './ray-3d';
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Ray2D — a 2D ray defined by an origin and a normalized direction.
3
+ * Zero allocations per intersection test.
4
+ *
5
+ * All intersection methods return the parametric distance `t` along the ray
6
+ * to the first hit point, or `null` if there is no intersection.
7
+ * A hit point can be retrieved via `ray.at(t)`.
8
+ */
9
+ export declare class Ray2D {
10
+ origin: [number, number];
11
+ direction: [number, number];
12
+ private _point;
13
+ /**
14
+ * Set origin and direction. Direction is normalized automatically.
15
+ */
16
+ set(ox: number, oy: number, dx: number, dy: number): void;
17
+ /**
18
+ * Returns the point at distance `t` along the ray.
19
+ * Reuses an internal buffer — copy if you need to store the result.
20
+ */
21
+ at(t: number): [number, number];
22
+ /**
23
+ * Intersection with a line segment from (ax, ay) to (bx, by).
24
+ * Returns `t` if the ray hits the segment, `null` otherwise.
25
+ */
26
+ intersectsSegment(ax: number, ay: number, bx: number, by: number): number | null;
27
+ /**
28
+ * Intersection with a circle at (cx, cy) with radius r.
29
+ * Returns `t` at the entry point (or exit if origin is inside), `null` if no hit.
30
+ */
31
+ intersectsCircle(cx: number, cy: number, r: number): number | null;
32
+ /**
33
+ * Intersection with an axis-aligned bounding box.
34
+ * Returns `t` at the entry point, `null` if no hit.
35
+ */
36
+ intersectsAABB(minX: number, minY: number, maxX: number, maxY: number): number | null;
37
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Ray3D — a 3D ray defined by an origin and a normalized direction.
3
+ * Zero allocations per intersection test.
4
+ *
5
+ * All intersection methods return the parametric distance `t` along the ray
6
+ * to the first hit point, or `null` if there is no intersection.
7
+ * A hit point can be retrieved via `ray.at(t)`.
8
+ */
9
+ export declare class Ray3D {
10
+ origin: [number, number, number];
11
+ direction: [number, number, number];
12
+ private _point;
13
+ /**
14
+ * Set origin and direction. Direction is normalized automatically.
15
+ */
16
+ set(ox: number, oy: number, oz: number, dx: number, dy: number, dz: number): void;
17
+ /**
18
+ * Returns the point at distance `t` along the ray.
19
+ * Reuses an internal buffer — copy if you need to store the result.
20
+ */
21
+ at(t: number): [number, number, number];
22
+ /**
23
+ * Intersection with a plane defined by normal (nx, ny, nz) and offset d (n·x = d).
24
+ * Returns `t` at the hit point, `null` if the ray is parallel or hits behind the origin.
25
+ */
26
+ intersectsPlane(nx: number, ny: number, nz: number, d: number): number | null;
27
+ /**
28
+ * Intersection with a sphere at (cx, cy, cz) with radius r.
29
+ * Returns `t` at the entry point (or exit if origin is inside), `null` if no hit.
30
+ */
31
+ intersectsSphere(cx: number, cy: number, cz: number, r: number): number | null;
32
+ /**
33
+ * Intersection with an axis-aligned bounding box.
34
+ * Returns `t` at the entry point, `null` if no hit.
35
+ */
36
+ intersectsAABB(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): number | null;
37
+ /**
38
+ * Intersection with a triangle using the Möller–Trumbore algorithm.
39
+ * Returns `t` at the hit point, `null` if no hit.
40
+ */
41
+ intersectsTriangle(ax: number, ay: number, az: number, bx: number, by: number, bz: number, cx: number, cy: number, cz: number): number | null;
42
+ }
@@ -0,0 +1 @@
1
+ export * from "./simple-rng";
@@ -0,0 +1,36 @@
1
+ /**
2
+ * SimpleRNG — deterministic, seedable, zero-allocation pseudo-random number generator.
3
+ * Uses a 32-bit LCG (Linear Congruential Generator).
4
+ *
5
+ * Ideal for gameplay logic that must be reproducible (multiplayer, replays),
6
+ * particle systems, procedural generation, and any hot path where
7
+ * Math.random() is too slow or non-deterministic.
8
+ */
9
+ export declare class SimpleRNG {
10
+ private state;
11
+ constructor(seed?: number);
12
+ /**
13
+ * Returns a float in [0, 1).
14
+ */
15
+ rand(): number;
16
+ /**
17
+ * Returns a float in [min, max).
18
+ */
19
+ range(min: number, max: number): number;
20
+ /**
21
+ * Returns an integer in [min, max] (inclusive).
22
+ */
23
+ int(min: number, max: number): number;
24
+ /**
25
+ * Returns true with the given probability (0-1).
26
+ */
27
+ chance(probability: number): boolean;
28
+ /**
29
+ * Pick a random element from an array.
30
+ */
31
+ pick<T>(array: T[]): T;
32
+ /**
33
+ * Reset to a new seed.
34
+ */
35
+ seed(value: number): void;
36
+ }
@@ -0,0 +1 @@
1
+ export * from "./sparse-batcher";
@@ -0,0 +1,55 @@
1
+ /**
2
+ * SparseBatcher — organizes sprite slots into [layer][sheet] buckets for draw calls.
3
+ * Only allocates buckets that are actually used. Most games use <10 buckets total.
4
+ *
5
+ * Memory (10k sprites, 3 layers × 4 sheets = 12 buckets):
6
+ * buckets: 12 × 10,000 × 4 bytes = ~480 KB (lazy, only used buckets)
7
+ * bucketSizes: 16384 × 4 bytes = 64 KB
8
+ * activeBuckets: 16384 × 2 bytes = 32 KB
9
+ * Total: ~576 KB base + buckets as needed
10
+ *
11
+ * MAX_SHEETS = 64 supports up to 64 unique model/spritesheet IDs per layer.
12
+ */
13
+ export declare class SparseBatcher {
14
+ private static readonly MAX_LAYERS;
15
+ private static readonly MAX_SHEETS;
16
+ private static readonly MAX_BUCKETS;
17
+ private readonly BUCKET_INITIAL_SIZE;
18
+ private buckets;
19
+ private bucketSizes;
20
+ private activeBuckets;
21
+ private sortBuffer;
22
+ private activeCount;
23
+ private readonly capacity;
24
+ constructor(capacity: number);
25
+ /**
26
+ * Compute a flat key from layer + sheet.
27
+ */
28
+ private key;
29
+ /**
30
+ * Register a sprite slot into its (layer, sheet) bucket.
31
+ */
32
+ add(layer: number, sheetId: number, slot: number): void;
33
+ /**
34
+ * Remove a sprite slot from its (layer, sheet) bucket.
35
+ * Uses swap-and-pop for O(1) removal within the bucket.
36
+ */
37
+ remove(layer: number, sheetId: number, slot: number): void;
38
+ /**
39
+ * Iterate active buckets in layer order (back-to-front), zero allocations.
40
+ * Callback receives sheetId and a subarray view of instance indices.
41
+ */
42
+ each(cb: (sheetId: number, instances: Uint32Array, count: number) => void): void;
43
+ /**
44
+ * Get the number of active buckets.
45
+ */
46
+ getActiveCount(): number;
47
+ /**
48
+ * Get total sprite count across all buckets.
49
+ */
50
+ getTotalCount(): number;
51
+ /**
52
+ * Clear all buckets.
53
+ */
54
+ clear(): void;
55
+ }
@@ -68,6 +68,8 @@ export declare class World extends WorldSystems {
68
68
  private archetypeVersion;
69
69
  private queryCacheVersions;
70
70
  private queryMaskCache;
71
+ private despawnedBuffer;
72
+ private despawnedCount;
71
73
  private worldId;
72
74
  constructor(config: WorldConfig);
73
75
  /**
@@ -135,6 +137,15 @@ export declare class World extends WorldSystems {
135
137
  * Check if an entity is alive
136
138
  */
137
139
  isAlive(entity: Entity): boolean;
140
+ /**
141
+ * Get entities despawned since the last flushDespawned() call.
142
+ * Returns a subarray view — zero allocations.
143
+ */
144
+ getDespawned(): Uint32Array;
145
+ /**
146
+ * Clear the despawn tracker. Call once per tick after processing despawns.
147
+ */
148
+ flushDespawned(): void;
138
149
  /**
139
150
  * Invalidate all query caches (called on archetype changes).
140
151
  */
@@ -4,12 +4,12 @@ import { InputManager } from "../../core/input";
4
4
  * GameLoop class that manages the main game loop with tick events and optional rendering.
5
5
  * It supports both client and server types, emitting appropriate events for both.
6
6
  */
7
- export declare class GameLoop<T extends DriverType = DriverType> {
8
- options: GameLoopOptions & {
9
- type: T;
10
- };
11
- private _driver;
7
+ export declare class GameLoop<T extends GameLoopType = DriverType> {
8
+ options: GameLoopOptions<T>;
9
+ private _driver?;
12
10
  private _input;
11
+ private readonly _isClient;
12
+ private readonly _isManual;
13
13
  /**
14
14
  * FixedTicker instance that handles tick timing and updates.
15
15
  */
@@ -17,7 +17,7 @@ export declare class GameLoop<T extends DriverType = DriverType> {
17
17
  /**
18
18
  * Event emitter system for the game loop, emitting various lifecycle events.
19
19
  */
20
- events: Events;
20
+ events: EventSystem<BaseEvents> & T extends ClientLike ? EventSystem<ClientEvents> : EventSystem<ServerEvents>;
21
21
  /**
22
22
  * Current frames per second (FPS) measurement.
23
23
  */
@@ -25,10 +25,12 @@ export declare class GameLoop<T extends DriverType = DriverType> {
25
25
  /**
26
26
  * Current status of the game loop: 'running', 'paused', or 'stopped'.
27
27
  */
28
- status: 'running' | 'paused' | 'stopped';
29
- constructor(options: GameLoopOptions & {
30
- type: T;
31
- });
28
+ status: "running" | "paused" | "stopped";
29
+ private _tickData;
30
+ private _skipData;
31
+ private _renderData;
32
+ constructor(options: GameLoopOptions<T>);
33
+ step(deltaTime: number): void;
32
34
  /**
33
35
  * Pauses the game ticker and emits a 'toggle-pause' event.
34
36
  */
@@ -46,15 +48,15 @@ export declare class GameLoop<T extends DriverType = DriverType> {
46
48
  */
47
49
  stop(): void;
48
50
  }
49
- interface GameLoopOptions {
51
+ interface GameLoopOptions<T extends GameLoopType> {
50
52
  tickRate: number;
51
- type: DriverType;
52
- onTick?: (dt: number, tick: number, input: ReturnType<InputManager['snapshot']>) => void;
53
- onRender?: (dt: number, alpha: number, input: ReturnType<InputManager['snapshot']>) => void;
53
+ type: T;
54
+ onTick?: (dt: number, tick: number, input: ReturnType<InputManager["snapshot"]>) => void;
55
+ onRender?: (dt: number, alpha: number, input: ReturnType<InputManager["peek"]>) => void;
54
56
  }
55
57
  type BaseEvents = [
56
58
  [
57
- 'start',
59
+ "start",
58
60
  {
59
61
  /**
60
62
  * Timestamp when the loop was started.
@@ -63,7 +65,7 @@ type BaseEvents = [
63
65
  }
64
66
  ],
65
67
  [
66
- 'pre-tick',
68
+ "pre-tick",
67
69
  {
68
70
  /**
69
71
  * Current tick number.
@@ -78,11 +80,11 @@ type BaseEvents = [
78
80
  *
79
81
  * **Only available in client loops.**
80
82
  */
81
- input: ReturnType<InputManager['snapshot']>;
83
+ input: ReturnType<InputManager["snapshot"]>;
82
84
  }
83
85
  ],
84
86
  [
85
- 'tick',
87
+ "tick",
86
88
  {
87
89
  /**
88
90
  * Current tick number.
@@ -97,15 +99,15 @@ type BaseEvents = [
97
99
  *
98
100
  * **Only available in client loops.**
99
101
  */
100
- input: ReturnType<InputManager['snapshot']>;
102
+ input: ReturnType<InputManager["snapshot"]>;
101
103
  }
102
104
  ],
103
105
  [
104
- 'post-tick',
106
+ "post-tick",
105
107
  {
106
108
  /**
107
- * Current tick number.
108
- */
109
+ * Current tick number.
110
+ */
109
111
  tick: number;
110
112
  /**
111
113
  * Delta time since the last tick.
@@ -116,11 +118,11 @@ type BaseEvents = [
116
118
  *
117
119
  * **Only available in client loops.**
118
120
  */
119
- input: ReturnType<InputManager['snapshot']>;
121
+ input: ReturnType<InputManager["snapshot"]>;
120
122
  }
121
123
  ],
122
124
  [
123
- 'skip',
125
+ "skip",
124
126
  {
125
127
  /**
126
128
  * Number of ticks that were skipped.
@@ -129,7 +131,7 @@ type BaseEvents = [
129
131
  }
130
132
  ],
131
133
  [
132
- 'stop',
134
+ "stop",
133
135
  {
134
136
  /**
135
137
  * Timestamp when the loop was stopped.
@@ -138,7 +140,7 @@ type BaseEvents = [
138
140
  }
139
141
  ],
140
142
  [
141
- 'toggle-pause',
143
+ "toggle-pause",
142
144
  {
143
145
  /**
144
146
  * Current paused state of the loop.
@@ -158,14 +160,16 @@ type BaseEvents = [
158
160
  type ClientEvents = [
159
161
  ...BaseEvents,
160
162
  [
161
- 'render',
163
+ "render",
162
164
  {
163
165
  deltaTime: number;
164
166
  alpha: number;
165
- input: ReturnType<InputManager['snapshot']>;
167
+ input: ReturnType<InputManager["peek"]>;
166
168
  }
167
169
  ]
168
170
  ];
169
171
  type ServerEvents = BaseEvents;
170
- type Events = EventSystem<ClientEvents | ServerEvents>;
172
+ type Manual = "manual-client" | "manual-server";
173
+ type ClientLike = "client" | "manual-client";
174
+ export type GameLoopType = DriverType | Manual;
171
175
  export {};
@@ -19,3 +19,4 @@ export * from "./protocol";
19
19
  export * from "./net";
20
20
  export * from "./ecs";
21
21
  export * from "./game";
22
+ export * from "./renderer";
@@ -14,8 +14,8 @@
14
14
  *
15
15
  * @example
16
16
  * ```typescript
17
- * import { ServerNetwork, ClientNetwork } from '@mococa/net';
18
- * import { BunWebSocketServerTransport } from '@mococa/net/transports/bun-websocket';
17
+ * import { ServerNetwork, ClientNetwork } from 'murow/net';
18
+ * import { BunWebSocketServerTransport } from 'murow/net/transports/bun-websocket';
19
19
  * import { IntentRegistry, SnapshotRegistry } from '@mococa/protocol';
20
20
  *
21
21
  * // Server setup
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Abstract base for 2D renderers. Defines the sprite-based rendering API.
3
+ */
4
+ import { BaseRenderer } from "./base-renderer";
5
+ import type { Camera2DState, Renderer2DOptions, SpriteHandle, SpriteOptions, SpritesheetHandle, SpritesheetSource } from "./types";
6
+ export declare abstract class Base2DRenderer extends BaseRenderer<Renderer2DOptions> {
7
+ readonly maxSprites: number;
8
+ abstract readonly camera: Camera2DState;
9
+ constructor(canvas: HTMLCanvasElement, options: Renderer2DOptions);
10
+ abstract loadSpritesheet(source: SpritesheetSource): Promise<SpritesheetHandle>;
11
+ abstract addSprite(options: SpriteOptions): SpriteHandle;
12
+ abstract removeSprite(sprite: SpriteHandle): void;
13
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Abstract base for 3D renderers. Defines the model/instance-based rendering API.
3
+ */
4
+ import { BaseRenderer } from "./base-renderer";
5
+ import type { Camera3DState, Renderer3DOptions } from "./types";
6
+ export declare abstract class Base3DRenderer extends BaseRenderer<Renderer3DOptions> {
7
+ readonly maxModels: number;
8
+ abstract readonly camera: Camera3DState;
9
+ constructor(canvas: HTMLCanvasElement, options: Renderer3DOptions);
10
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Abstract base for all renderers. Provides lifecycle and canvas management.
3
+ */
4
+ import type { ClearColor, RendererOptions } from "./types";
5
+ export declare abstract class BaseRenderer<TOptions extends RendererOptions = RendererOptions> {
6
+ readonly canvas: HTMLCanvasElement;
7
+ protected readonly options: TOptions;
8
+ protected _clearColor: ClearColor;
9
+ protected _width: number;
10
+ protected _height: number;
11
+ protected _initialized: boolean;
12
+ constructor(canvas: HTMLCanvasElement, options: TOptions);
13
+ get clearColor(): ClearColor;
14
+ set clearColor(value: ClearColor);
15
+ get width(): number;
16
+ get height(): number;
17
+ get initialized(): boolean;
18
+ abstract init(): Promise<void>;
19
+ abstract render(alpha: number): void;
20
+ abstract destroy(): void;
21
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./types";
2
+ export * from "./base-renderer";
3
+ export * from "./base-2d-renderer";
4
+ export * from "./base-3d-renderer";