@oidoid/void 0.1.0-8 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/dist/public/index.js +19 -15
  2. package/dist/public/index.js.map +4 -4
  3. package/dist/public/preload-atlas.webp +0 -0
  4. package/dist/public/void-v0.1.0+20251227.1060661.html +115 -0
  5. package/dist/schema/config-file.v0.json +86 -15
  6. package/dist/schema/level-file.v0.json +423 -0
  7. package/dist/src/audio.d.ts +1 -0
  8. package/dist/src/audio.d.ts.map +1 -0
  9. package/dist/src/demo/assets/manifest.json +2 -2
  10. package/dist/src/demo/assets/void.game.json +202 -0
  11. package/dist/src/demo/ents/cam.d.ts +6 -0
  12. package/dist/src/demo/ents/cam.d.ts.map +1 -0
  13. package/dist/src/demo/ents/cam.js +21 -0
  14. package/dist/src/demo/ents/cam.js.map +1 -0
  15. package/dist/src/demo/ents/clock.d.ts +10 -0
  16. package/dist/src/demo/ents/clock.d.ts.map +1 -0
  17. package/dist/src/demo/ents/clock.js +16 -0
  18. package/dist/src/demo/ents/clock.js.map +1 -0
  19. package/dist/src/demo/ents/draw.d.ts +6 -0
  20. package/dist/src/demo/ents/draw.d.ts.map +1 -0
  21. package/dist/src/demo/ents/draw.js +14 -0
  22. package/dist/src/demo/ents/draw.js.map +1 -0
  23. package/dist/src/demo/ents/ent.d.ts +6 -0
  24. package/dist/src/demo/ents/ent.d.ts.map +1 -0
  25. package/dist/src/demo/ents/ent.js +2 -0
  26. package/dist/src/demo/ents/ent.js.map +1 -0
  27. package/dist/src/demo/ents/loader.d.ts +6 -0
  28. package/dist/src/demo/ents/loader.d.ts.map +1 -0
  29. package/dist/src/demo/ents/loader.js +45 -0
  30. package/dist/src/demo/ents/loader.js.map +1 -0
  31. package/dist/src/demo/ents/render-toggle.d.ts +7 -0
  32. package/dist/src/demo/ents/render-toggle.d.ts.map +1 -0
  33. package/dist/src/demo/ents/render-toggle.js +8 -0
  34. package/dist/src/demo/ents/render-toggle.js.map +1 -0
  35. package/dist/src/demo/ents/tally.d.ts +8 -0
  36. package/dist/src/demo/ents/tally.d.ts.map +1 -0
  37. package/dist/src/demo/ents/tally.js +14 -0
  38. package/dist/src/demo/ents/tally.js.map +1 -0
  39. package/dist/src/demo/index.d.ts +1 -0
  40. package/dist/src/demo/index.d.ts.map +1 -0
  41. package/dist/src/demo/index.js +12 -3
  42. package/dist/src/demo/index.js.map +1 -1
  43. package/dist/src/demo/level/level-file.json +50 -0
  44. package/dist/src/demo/level/level-parser.d.ts +5 -0
  45. package/dist/src/demo/level/level-parser.d.ts.map +1 -0
  46. package/dist/src/demo/level/level-parser.js +21 -0
  47. package/dist/src/demo/level/level-parser.js.map +1 -0
  48. package/dist/src/demo/level/level-schema.d.ts +4 -0
  49. package/dist/src/demo/level/level-schema.d.ts.map +1 -0
  50. package/dist/src/demo/level/level-schema.js +2 -0
  51. package/dist/src/demo/level/level-schema.js.map +1 -0
  52. package/dist/src/demo/types/decl.d.ts +30 -0
  53. package/dist/src/demo/types/decl.d.ts.map +1 -0
  54. package/dist/src/demo/types/decl.js +2 -0
  55. package/dist/src/demo/types/decl.js.map +1 -0
  56. package/dist/src/demo/void.json +8 -4
  57. package/dist/src/ents/button.d.ts +14 -0
  58. package/dist/src/ents/button.d.ts.map +1 -0
  59. package/dist/src/ents/button.js +59 -0
  60. package/dist/src/ents/button.js.map +1 -0
  61. package/dist/src/ents/cam.d.ts +3 -0
  62. package/dist/src/ents/cam.d.ts.map +1 -0
  63. package/dist/src/ents/cam.js +2 -0
  64. package/dist/src/ents/cam.js.map +1 -0
  65. package/dist/src/ents/cursor.d.ts +20 -0
  66. package/dist/src/ents/cursor.d.ts.map +1 -0
  67. package/dist/src/ents/cursor.js +49 -0
  68. package/dist/src/ents/cursor.js.map +1 -0
  69. package/dist/src/ents/debug-input.d.ts +8 -0
  70. package/dist/src/ents/debug-input.d.ts.map +1 -0
  71. package/dist/src/ents/debug-input.js +25 -0
  72. package/dist/src/ents/debug-input.js.map +1 -0
  73. package/dist/src/ents/draw.d.ts +3 -0
  74. package/dist/src/ents/draw.d.ts.map +1 -0
  75. package/dist/src/ents/draw.js +2 -0
  76. package/dist/src/ents/draw.js.map +1 -0
  77. package/dist/src/ents/ent-query.d.ts +26 -0
  78. package/dist/src/ents/ent-query.d.ts.map +1 -0
  79. package/dist/src/ents/ent-query.js +10 -0
  80. package/dist/src/ents/ent-query.js.map +1 -0
  81. package/dist/src/ents/ent.d.ts +92 -6
  82. package/dist/src/ents/ent.d.ts.map +1 -0
  83. package/dist/src/ents/fps.d.ts +7 -0
  84. package/dist/src/ents/fps.d.ts.map +1 -0
  85. package/dist/src/ents/fps.js +14 -0
  86. package/dist/src/ents/fps.js.map +1 -0
  87. package/dist/src/ents/hud.d.ts +14 -0
  88. package/dist/src/ents/hud.d.ts.map +1 -0
  89. package/dist/src/ents/hud.js +38 -0
  90. package/dist/src/ents/hud.js.map +1 -0
  91. package/dist/src/ents/loader.d.ts +3 -0
  92. package/dist/src/ents/loader.d.ts.map +1 -0
  93. package/dist/src/ents/loader.js +2 -0
  94. package/dist/src/ents/loader.js.map +1 -0
  95. package/dist/src/ents/nine-patch.d.ts +17 -0
  96. package/dist/src/ents/nine-patch.d.ts.map +1 -0
  97. package/dist/src/ents/nine-patch.js +99 -0
  98. package/dist/src/ents/nine-patch.js.map +1 -0
  99. package/dist/src/ents/override.d.ts +8 -0
  100. package/dist/src/ents/override.d.ts.map +1 -0
  101. package/dist/src/ents/override.js +8 -0
  102. package/dist/src/ents/override.js.map +1 -0
  103. package/dist/src/ents/sprite.d.ts +8 -0
  104. package/dist/src/ents/sprite.d.ts.map +1 -0
  105. package/dist/src/ents/sprite.js +10 -0
  106. package/dist/src/ents/sprite.js.map +1 -0
  107. package/dist/src/ents/sys.d.ts +14 -0
  108. package/dist/src/ents/sys.d.ts.map +1 -0
  109. package/dist/src/ents/sys.js +2 -0
  110. package/dist/src/ents/sys.js.map +1 -0
  111. package/dist/src/ents/text.d.ts +21 -0
  112. package/dist/src/ents/text.d.ts.map +1 -0
  113. package/dist/src/ents/text.js +118 -0
  114. package/dist/src/ents/text.js.map +1 -0
  115. package/dist/src/ents/zoo.d.ts +18 -11
  116. package/dist/src/ents/zoo.d.ts.map +1 -0
  117. package/dist/src/ents/zoo.js +75 -15
  118. package/dist/src/ents/zoo.js.map +1 -1
  119. package/dist/src/graphics/atlas-parser.d.ts +3 -1
  120. package/dist/src/graphics/atlas-parser.d.ts.map +1 -0
  121. package/dist/src/graphics/atlas-parser.js.map +1 -1
  122. package/dist/src/graphics/atlas.d.ts +9 -15
  123. package/dist/src/graphics/atlas.d.ts.map +1 -0
  124. package/dist/src/graphics/cam.d.ts +13 -10
  125. package/dist/src/graphics/cam.d.ts.map +1 -0
  126. package/dist/src/graphics/cam.js +23 -17
  127. package/dist/src/graphics/cam.js.map +1 -1
  128. package/dist/src/graphics/gl.d.ts +1 -8
  129. package/dist/src/graphics/gl.d.ts.map +1 -0
  130. package/dist/src/graphics/gl.js +0 -1
  131. package/dist/src/graphics/gl.js.map +1 -1
  132. package/dist/src/graphics/layer.d.ts +21 -17
  133. package/dist/src/graphics/layer.d.ts.map +1 -0
  134. package/dist/src/graphics/layer.js +23 -18
  135. package/dist/src/graphics/layer.js.map +1 -1
  136. package/dist/src/graphics/pixel-ratio-observer.d.ts +8 -0
  137. package/dist/src/graphics/pixel-ratio-observer.d.ts.map +1 -0
  138. package/dist/src/graphics/pixel-ratio-observer.js +23 -0
  139. package/dist/src/graphics/pixel-ratio-observer.js.map +1 -0
  140. package/dist/src/graphics/render-mode.d.ts +2 -0
  141. package/dist/src/graphics/render-mode.d.ts.map +1 -0
  142. package/dist/src/graphics/render-mode.js +2 -0
  143. package/dist/src/graphics/render-mode.js.map +1 -0
  144. package/dist/src/graphics/renderer.d.ts +9 -4
  145. package/dist/src/graphics/renderer.d.ts.map +1 -0
  146. package/dist/src/graphics/renderer.js +30 -13
  147. package/dist/src/graphics/renderer.js.map +1 -1
  148. package/dist/src/graphics/sprite-frag.glsl.d.ts +1 -0
  149. package/dist/src/graphics/sprite-frag.glsl.d.ts.map +1 -0
  150. package/dist/src/graphics/sprite-frag.glsl.js +3 -4
  151. package/dist/src/graphics/sprite-frag.glsl.js.map +1 -1
  152. package/dist/src/graphics/sprite-vert.glsl.d.ts +1 -0
  153. package/dist/src/graphics/sprite-vert.glsl.d.ts.map +1 -0
  154. package/dist/src/graphics/sprite-vert.glsl.js +9 -7
  155. package/dist/src/graphics/sprite-vert.glsl.js.map +1 -1
  156. package/dist/src/graphics/sprite.d.ts +54 -16
  157. package/dist/src/graphics/sprite.d.ts.map +1 -0
  158. package/dist/src/graphics/sprite.js +109 -32
  159. package/dist/src/graphics/sprite.js.map +1 -1
  160. package/dist/src/index.d.ts +31 -6
  161. package/dist/src/index.d.ts.map +1 -0
  162. package/dist/src/index.js +33 -9
  163. package/dist/src/index.js.map +1 -1
  164. package/dist/src/input/context-menu.d.ts +1 -1
  165. package/dist/src/input/context-menu.d.ts.map +1 -0
  166. package/dist/src/input/context-menu.js +0 -1
  167. package/dist/src/input/context-menu.js.map +1 -1
  168. package/dist/src/input/gamepad.d.ts +1 -1
  169. package/dist/src/input/gamepad.d.ts.map +1 -0
  170. package/dist/src/input/gamepad.js +0 -1
  171. package/dist/src/input/gamepad.js.map +1 -1
  172. package/dist/src/input/input.d.ts +30 -23
  173. package/dist/src/input/input.d.ts.map +1 -0
  174. package/dist/src/input/input.js +53 -31
  175. package/dist/src/input/input.js.map +1 -1
  176. package/dist/src/input/keyboard.d.ts +1 -0
  177. package/dist/src/input/keyboard.d.ts.map +1 -0
  178. package/dist/src/input/pointer.d.ts +1 -0
  179. package/dist/src/input/pointer.d.ts.map +1 -0
  180. package/dist/src/input/pointer.js +11 -8
  181. package/dist/src/input/pointer.js.map +1 -1
  182. package/dist/src/input/wheel.d.ts +6 -1
  183. package/dist/src/input/wheel.d.ts.map +1 -0
  184. package/dist/src/input/wheel.js +5 -1
  185. package/dist/src/input/wheel.js.map +1 -1
  186. package/dist/src/level/level-parser.d.ts +26 -0
  187. package/dist/src/level/level-parser.d.ts.map +1 -0
  188. package/dist/src/level/level-parser.js +258 -0
  189. package/dist/src/level/level-parser.js.map +1 -0
  190. package/dist/src/level/level-schema-json.d.ts +5 -0
  191. package/dist/src/level/level-schema-json.d.ts.map +1 -0
  192. package/dist/src/level/level-schema-json.js +2 -0
  193. package/dist/src/level/level-schema-json.js.map +1 -0
  194. package/dist/src/level/level-schema.d.ts +87 -0
  195. package/dist/src/level/level-schema.d.ts.map +1 -0
  196. package/dist/src/level/level-schema.js +2 -0
  197. package/dist/src/level/level-schema.js.map +1 -0
  198. package/dist/src/level/level.d.ts +8 -0
  199. package/dist/src/level/level.d.ts.map +1 -0
  200. package/dist/src/level/level.js +2 -0
  201. package/dist/src/level/level.js.map +1 -0
  202. package/dist/src/looper.d.ts +1 -0
  203. package/dist/src/looper.d.ts.map +1 -0
  204. package/dist/src/looper.js +5 -2
  205. package/dist/src/looper.js.map +1 -1
  206. package/dist/src/mem/pool-map.d.ts +6 -0
  207. package/dist/src/mem/pool-map.d.ts.map +1 -0
  208. package/dist/src/mem/pool-map.js +2 -0
  209. package/dist/src/mem/pool-map.js.map +1 -0
  210. package/dist/src/mem/pool.d.ts +5 -1
  211. package/dist/src/mem/pool.d.ts.map +1 -0
  212. package/dist/src/mem/pool.js +22 -21
  213. package/dist/src/mem/pool.js.map +1 -1
  214. package/dist/src/mem/sprite-pool.d.ts +12 -0
  215. package/dist/src/mem/sprite-pool.d.ts.map +1 -0
  216. package/dist/src/mem/sprite-pool.js +11 -0
  217. package/dist/src/mem/sprite-pool.js.map +1 -0
  218. package/dist/src/random/random.d.ts +1 -0
  219. package/dist/src/random/random.d.ts.map +1 -0
  220. package/dist/src/storage/local-storage.d.ts +2 -1
  221. package/dist/src/storage/local-storage.d.ts.map +1 -0
  222. package/dist/src/storage/local-storage.js.map +1 -1
  223. package/dist/src/text/font.d.ts +5 -3
  224. package/dist/src/text/font.d.ts.map +1 -0
  225. package/dist/src/text/font.js +8 -5
  226. package/dist/src/text/font.js.map +1 -1
  227. package/dist/src/text/mem-prop-5x6.json +20 -5
  228. package/dist/src/text/text-layout.d.ts +16 -5
  229. package/dist/src/text/text-layout.d.ts.map +1 -0
  230. package/dist/src/text/text-layout.js +46 -28
  231. package/dist/src/text/text-layout.js.map +1 -1
  232. package/dist/src/types/bundle.d.ts +10 -0
  233. package/dist/src/types/bundle.d.ts.map +1 -0
  234. package/dist/src/types/bundle.js +2 -0
  235. package/dist/src/types/bundle.js.map +1 -0
  236. package/dist/src/types/game-config.d.ts +27 -0
  237. package/dist/src/types/game-config.d.ts.map +1 -0
  238. package/dist/src/types/game-config.js +2 -0
  239. package/dist/src/types/game-config.js.map +1 -0
  240. package/dist/src/types/geo.d.ts +9 -2
  241. package/dist/src/types/geo.d.ts.map +1 -0
  242. package/dist/src/types/geo.js +16 -0
  243. package/dist/src/types/geo.js.map +1 -1
  244. package/dist/src/types/json.d.ts +1 -0
  245. package/dist/src/types/json.d.ts.map +1 -0
  246. package/dist/src/types/time.d.ts +13 -2
  247. package/dist/src/types/time.d.ts.map +1 -0
  248. package/dist/src/types/time.js +10 -0
  249. package/dist/src/types/time.js.map +1 -1
  250. package/dist/src/utils/async-util.d.ts +1 -0
  251. package/dist/src/utils/async-util.d.ts.map +1 -0
  252. package/dist/src/utils/async-util.js +2 -0
  253. package/dist/src/utils/async-util.js.map +1 -1
  254. package/dist/src/utils/canvas-util.d.ts +3 -1
  255. package/dist/src/utils/canvas-util.d.ts.map +1 -0
  256. package/dist/src/utils/canvas-util.js +7 -3
  257. package/dist/src/utils/canvas-util.js.map +1 -1
  258. package/dist/src/utils/color-util.d.ts +6 -0
  259. package/dist/src/utils/color-util.d.ts.map +1 -0
  260. package/dist/src/utils/color-util.js +12 -0
  261. package/dist/src/utils/color-util.js.map +1 -1
  262. package/dist/src/utils/debug.d.ts +1 -0
  263. package/dist/src/utils/debug.d.ts.map +1 -0
  264. package/dist/src/utils/debug.js +4 -4
  265. package/dist/src/utils/debug.js.map +1 -1
  266. package/dist/src/utils/delay-interval.d.ts +1 -0
  267. package/dist/src/utils/delay-interval.d.ts.map +1 -0
  268. package/dist/src/utils/dom-util.d.ts +3 -2
  269. package/dist/src/utils/dom-util.d.ts.map +1 -0
  270. package/dist/src/utils/dom-util.js +16 -12
  271. package/dist/src/utils/dom-util.js.map +1 -1
  272. package/dist/src/utils/fetch-util.d.ts +2 -1
  273. package/dist/src/utils/fetch-util.d.ts.map +1 -0
  274. package/dist/src/utils/fetch-util.js +2 -2
  275. package/dist/src/utils/math.d.ts +1 -0
  276. package/dist/src/utils/math.d.ts.map +1 -0
  277. package/dist/src/utils/math.js +1 -1
  278. package/dist/src/utils/math.js.map +1 -1
  279. package/dist/src/utils/obj-util.d.ts +7 -0
  280. package/dist/src/utils/obj-util.d.ts.map +1 -0
  281. package/dist/src/utils/obj-util.js +8 -0
  282. package/dist/src/utils/obj-util.js.map +1 -0
  283. package/dist/src/utils/str-util.d.ts +2 -0
  284. package/dist/src/utils/str-util.d.ts.map +1 -0
  285. package/dist/src/utils/str-util.js +6 -0
  286. package/dist/src/utils/str-util.js.map +1 -0
  287. package/dist/src/utils/vibrate.d.ts +1 -0
  288. package/dist/src/utils/vibrate.d.ts.map +1 -0
  289. package/dist/src/void.d.ts +42 -30
  290. package/dist/src/void.d.ts.map +1 -0
  291. package/dist/src/void.js +78 -34
  292. package/dist/src/void.js.map +1 -1
  293. package/dist/tools/atlas-pack/aseprite-json.d.ts +5 -0
  294. package/dist/tools/atlas-pack/aseprite-json.d.ts.map +1 -0
  295. package/dist/tools/atlas-pack/aseprite-json.js +2 -0
  296. package/dist/tools/atlas-pack/aseprite-json.js.map +1 -0
  297. package/dist/tools/atlas-pack/aseprite.d.ts +58 -31
  298. package/dist/tools/atlas-pack/aseprite.d.ts.map +1 -0
  299. package/dist/tools/atlas-pack/aseprite.js +1 -1
  300. package/dist/tools/atlas-pack/aseprite.js.map +1 -1
  301. package/dist/tools/atlas-pack/atlas-json-parser.d.ts +11 -10
  302. package/dist/tools/atlas-pack/atlas-json-parser.d.ts.map +1 -0
  303. package/dist/tools/atlas-pack/atlas-json-parser.js +14 -14
  304. package/dist/tools/atlas-pack/atlas-json-parser.js.map +1 -1
  305. package/dist/tools/atlas-pack/atlas-pack.d.ts +4 -2
  306. package/dist/tools/atlas-pack/atlas-pack.d.ts.map +1 -0
  307. package/dist/tools/atlas-pack/atlas-pack.js +1 -6
  308. package/dist/tools/atlas-pack/atlas-pack.js.map +1 -1
  309. package/dist/tools/bundle/bundle.d.ts +3 -3
  310. package/dist/tools/bundle/bundle.d.ts.map +1 -0
  311. package/dist/tools/bundle/bundle.js +32 -7
  312. package/dist/tools/bundle/bundle.js.map +1 -1
  313. package/dist/tools/bundle/html-plugin.d.ts +1 -0
  314. package/dist/tools/bundle/html-plugin.d.ts.map +1 -0
  315. package/dist/tools/bundle/html-plugin.js +5 -20
  316. package/dist/tools/bundle/html-plugin.js.map +1 -1
  317. package/dist/tools/tsconfig-base.json +1 -1
  318. package/dist/tools/tsconfig.json +1 -2
  319. package/dist/{schema → tools/types}/config-file.d.ts +21 -9
  320. package/dist/tools/types/config-file.d.ts.map +1 -0
  321. package/dist/{schema → tools/types}/config-file.js +18 -5
  322. package/dist/tools/types/config-file.js.map +1 -0
  323. package/dist/tools/types/config.d.ts +10 -9
  324. package/dist/tools/types/config.d.ts.map +1 -0
  325. package/dist/tools/types/config.js +23 -5
  326. package/dist/tools/types/config.js.map +1 -1
  327. package/dist/tools/types/package-json.d.ts +3 -2
  328. package/dist/tools/types/package-json.d.ts.map +1 -0
  329. package/dist/tools/utils/argv.d.ts +3 -0
  330. package/dist/tools/utils/argv.d.ts.map +1 -0
  331. package/dist/tools/utils/argv.js +1 -1
  332. package/dist/tools/utils/argv.js.map +1 -1
  333. package/dist/tools/utils/exec.d.ts +2 -1
  334. package/dist/tools/utils/exec.d.ts.map +1 -0
  335. package/dist/tools/utils/exec.js.map +1 -1
  336. package/dist/tools/utils/file-util.d.ts +1 -0
  337. package/dist/tools/utils/file-util.d.ts.map +1 -0
  338. package/dist/tools/utils/html-parser.d.ts +1 -0
  339. package/dist/tools/utils/html-parser.d.ts.map +1 -0
  340. package/dist/tools/void.d.ts +1 -0
  341. package/dist/tools/void.d.ts.map +1 -0
  342. package/dist/tools/void.js +3 -16
  343. package/dist/tools/void.js.map +1 -1
  344. package/package.json +13 -14
  345. package/readme.md +63 -1
  346. package/dist/package.json +0 -65
  347. package/dist/public/void-v0.1.0-8+20251022.b364155.html +0 -111
  348. package/dist/schema/config-file.js.map +0 -1
  349. package/dist/src/demo/assets/preload-atlas.json +0 -193
  350. package/dist/src/demo/ents/clock-ent.d.ts +0 -11
  351. package/dist/src/demo/ents/clock-ent.js +0 -26
  352. package/dist/src/demo/ents/clock-ent.js.map +0 -1
  353. package/dist/src/demo/ents/render-toggle-ent.d.ts +0 -12
  354. package/dist/src/demo/ents/render-toggle-ent.js +0 -41
  355. package/dist/src/demo/ents/render-toggle-ent.js.map +0 -1
  356. package/dist/src/demo/ents/work-counter-ent.d.ts +0 -10
  357. package/dist/src/demo/ents/work-counter-ent.js +0 -20
  358. package/dist/src/demo/ents/work-counter-ent.js.map +0 -1
  359. package/dist/src/demo/game.d.ts +0 -12
  360. package/dist/src/demo/game.js +0 -135
  361. package/dist/src/demo/game.js.map +0 -1
  362. package/dist/src/demo/types/tag.d.ts +0 -2
  363. package/dist/src/demo/types/tag.js +0 -2
  364. package/dist/src/demo/types/tag.js.map +0 -1
  365. package/dist/src/ents/button-ent.d.ts +0 -39
  366. package/dist/src/ents/button-ent.js +0 -128
  367. package/dist/src/ents/button-ent.js.map +0 -1
  368. package/dist/src/ents/cursor-ent.d.ts +0 -18
  369. package/dist/src/ents/cursor-ent.js +0 -63
  370. package/dist/src/ents/cursor-ent.js.map +0 -1
  371. package/dist/src/ents/follow-cam-ent.d.ts +0 -25
  372. package/dist/src/ents/follow-cam-ent.js +0 -87
  373. package/dist/src/ents/follow-cam-ent.js.map +0 -1
  374. package/dist/src/ents/nine-patch-ent.d.ts +0 -43
  375. package/dist/src/ents/nine-patch-ent.js +0 -143
  376. package/dist/src/ents/nine-patch-ent.js.map +0 -1
  377. package/dist/src/ents/text-ent.d.ts +0 -23
  378. package/dist/src/ents/text-ent.js +0 -109
  379. package/dist/src/ents/text-ent.js.map +0 -1
  380. package/dist/src/types/void-version.d.ts +0 -7
  381. package/dist/src/types/void-version.js +0 -2
  382. package/dist/src/types/void-version.js.map +0 -1
@@ -1,21 +1,25 @@
1
+ /** [0 (bottom), 15 (top)]; greater is above. */
1
2
  export declare const Layer: {
2
- readonly Top: 0;
3
- readonly UIA: 1;
4
- readonly UIB: 2;
5
- readonly UIC: 3;
6
- readonly UID: 4;
7
- readonly UIE: 5;
8
- readonly UIF: 6;
9
- readonly UIG: 7;
10
- readonly A: 8;
11
- readonly B: 9;
12
- readonly C: 10;
13
- readonly D: 11;
14
- readonly E: 12;
15
- readonly F: 13;
16
- readonly Bottom: 14;
17
- readonly Hidden: 15;
3
+ readonly Bottom: 0;
4
+ readonly A: 1;
5
+ readonly B: 2;
6
+ readonly C: 3;
7
+ readonly D: 4;
8
+ readonly E: 5;
9
+ readonly F: 6;
10
+ readonly G: 7;
11
+ readonly UIA: 8;
12
+ readonly UIB: 9;
13
+ readonly UIC: 10;
14
+ readonly UID: 11;
15
+ readonly UIE: 12;
16
+ readonly UIF: 13;
17
+ readonly UIG: 14;
18
+ readonly Top: 15;
18
19
  };
19
20
  export type Layer = (typeof Layer)[keyof typeof Layer];
20
- /** negative is above. returns [top, bottom]; hidden is out of domain. */
21
+ /** positive is above. returns [bottom, top]. */
21
22
  export declare function layerOffset(layer: Layer, offset: number): Layer;
23
+ /** true if UI or top layer. */
24
+ export declare function isUILayer(layer: Layer): boolean;
25
+ //# sourceMappingURL=layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../../../src/graphics/layer.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;CAiBR,CAAA;AACV,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,OAAO,KAAK,CAAC,CAAA;AAEtD,gDAAgD;AAChD,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAE/D;AAED,+BAA+B;AAC/B,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAE/C"}
@@ -1,23 +1,28 @@
1
+ /** [0 (bottom), 15 (top)]; greater is above. */
1
2
  export const Layer = {
2
- Top: 0,
3
- UIA: 1,
4
- UIB: 2,
5
- UIC: 3,
6
- UID: 4,
7
- UIE: 5,
8
- UIF: 6,
9
- UIG: 7,
10
- A: 8,
11
- B: 9,
12
- C: 10,
13
- D: 11,
14
- E: 12,
15
- F: 13,
16
- Bottom: 14,
17
- Hidden: 15
3
+ Bottom: 0,
4
+ A: 1,
5
+ B: 2,
6
+ C: 3,
7
+ D: 4,
8
+ E: 5,
9
+ F: 6,
10
+ G: 7,
11
+ UIA: 8,
12
+ UIB: 9,
13
+ UIC: 10,
14
+ UID: 11,
15
+ UIE: 12,
16
+ UIF: 13,
17
+ UIG: 14,
18
+ Top: 15
18
19
  };
19
- /** negative is above. returns [top, bottom]; hidden is out of domain. */
20
+ /** positive is above. returns [bottom, top]. */
20
21
  export function layerOffset(layer, offset) {
21
- return Math.max(Layer.Top, Math.min(Layer.Bottom, layer + offset));
22
+ return Math.max(Layer.Bottom, Math.min(Layer.Top, layer + offset));
23
+ }
24
+ /** true if UI or top layer. */
25
+ export function isUILayer(layer) {
26
+ return layer >= Layer.UIA;
22
27
  }
23
28
  //# sourceMappingURL=layer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layer.js","sourceRoot":"","sources":["../../../src/graphics/layer.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;CACF,CAAA;AAGV,yEAAyE;AACzE,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,MAAc;IACtD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAAU,CAAA;AAC7E,CAAC"}
1
+ {"version":3,"file":"layer.js","sourceRoot":"","sources":["../../../src/graphics/layer.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM,EAAE,CAAC;IACT,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;CACC,CAAA;AAGV,gDAAgD;AAChD,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,MAAc;IACtD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,CAAU,CAAA;AAC7E,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,SAAS,CAAC,KAAY;IACpC,OAAO,KAAK,IAAI,KAAK,CAAC,GAAG,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** resolution changes may not trigger a resize. observe density changes. */
2
+ export declare class PixelRatioObserver {
3
+ #private;
4
+ onChange: () => void;
5
+ register(op: 'add' | 'remove'): this;
6
+ [Symbol.dispose](): void;
7
+ }
8
+ //# sourceMappingURL=pixel-ratio-observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixel-ratio-observer.d.ts","sourceRoot":"","sources":["../../../src/graphics/pixel-ratio-observer.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,qBAAa,kBAAkB;;IAC7B,QAAQ,EAAE,MAAM,IAAI,CAAW;IAG/B,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI;IAWpC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAQzB"}
@@ -0,0 +1,23 @@
1
+ /** resolution changes may not trigger a resize. observe density changes. */
2
+ export class PixelRatioObserver {
3
+ onChange = () => { };
4
+ #mediaQuery;
5
+ register(op) {
6
+ this.#mediaQuery?.removeEventListener('change', this.#onChange);
7
+ if (op === 'add') {
8
+ this.#mediaQuery = matchMedia(`not (resolution: ${devicePixelRatio}dppx)`);
9
+ this.#mediaQuery.addEventListener('change', this.#onChange);
10
+ }
11
+ else
12
+ this.#mediaQuery = undefined;
13
+ return this;
14
+ }
15
+ [Symbol.dispose]() {
16
+ this.register('remove');
17
+ }
18
+ #onChange = () => {
19
+ this.register('add');
20
+ this.onChange();
21
+ };
22
+ }
23
+ //# sourceMappingURL=pixel-ratio-observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pixel-ratio-observer.js","sourceRoot":"","sources":["../../../src/graphics/pixel-ratio-observer.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,OAAO,kBAAkB;IAC7B,QAAQ,GAAe,GAAG,EAAE,GAAE,CAAC,CAAA;IAC/B,WAAW,CAA4B;IAEvC,QAAQ,CAAC,EAAoB;QAC3B,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAE/D,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,oBAAoB,gBAAgB,OAAO,CAAC,CAAA;YAC1E,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAC7D,CAAC;;YAAM,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;QAEnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACzB,CAAC;IAED,SAAS,GAAG,GAAS,EAAE;QACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACpB,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC,CAAA;CACF"}
@@ -0,0 +1,2 @@
1
+ export type RenderMode = 'Int' | 'Float';
2
+ //# sourceMappingURL=render-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-mode.d.ts","sourceRoot":"","sources":["../../../src/graphics/render-mode.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=render-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-mode.js","sourceRoot":"","sources":["../../../src/graphics/render-mode.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import type { Pool } from '../mem/pool.ts';
2
2
  import { type WH } from '../types/geo.ts';
3
3
  import type { Millis } from '../types/time.ts';
4
- import type { Atlas, TagFormat } from './atlas.ts';
4
+ import type { Atlas } from './atlas.ts';
5
5
  import type { Cam } from './cam.ts';
6
6
  import { type GL2, Shader } from './gl.ts';
7
7
  import { type Sprite } from './sprite.ts';
@@ -15,15 +15,19 @@ export declare class Renderer {
15
15
  #private;
16
16
  /** when off, ents should avoid requesting renders. */
17
17
  always: boolean;
18
+ /** number of clears performed. often used to count render passes. */
18
19
  clears: number;
19
- invalid: boolean;
20
20
  loseContext: WEBGL_lose_context | undefined;
21
21
  constructor(preloadAtlas: Readonly<Atlas>, canvas: HTMLCanvasElement, looper: {
22
22
  readonly age: Millis;
23
23
  });
24
24
  clear(rgba: number): void;
25
- draw(pool: Readonly<Pool<Sprite<TagFormat>>>): void;
25
+ draw(pool: Readonly<Pool<Sprite>>): void;
26
26
  get hasContext(): boolean;
27
+ /**
28
+ * true when context has changed since last draw and screen should be redrawn.
29
+ */
30
+ get invalid(): boolean;
27
31
  load(preloadAtlas: Readonly<HTMLImageElement> | undefined): void;
28
32
  predraw(cam: Readonly<Cam>): void;
29
33
  register(op: 'add' | 'remove'): this;
@@ -32,5 +36,6 @@ export declare class Renderer {
32
36
  /** @internal */
33
37
  _Context(): Context | undefined;
34
38
  }
35
- declare function GL2(canvas: HTMLCanvasElement): GL2 | undefined;
39
+ declare function GL2(canvas: HTMLCanvasElement, always: boolean): GL2 | undefined;
36
40
  export {};
41
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/graphics/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAC,KAAK,EAAE,EAAO,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAA;AAE5C,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AACrC,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,UAAU,CAAA;AACjC,OAAO,EAAC,KAAK,GAAG,EAAE,MAAM,EAAC,MAAM,SAAS,CAAA;AACxC,OAAO,EAAgB,KAAK,MAAM,EAAC,MAAM,aAAa,CAAA;AAItD,gBAAgB;AAChB,MAAM,MAAM,OAAO,GAAG;IAAC,EAAE,EAAE,GAAG,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,EAAE,CAAA;CAAC,CAAA;AAInE,qBAAa,QAAQ;;IACnB,sDAAsD;IACtD,MAAM,EAAE,OAAO,CAA6B;IAC5C,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAI;IAClB,WAAW,EAAE,kBAAkB,GAAG,SAAS,CAAA;gBAWzC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,EAC7B,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAC;IAOhC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBzB,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI;IAgCxC,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,SAAS,GAAG,IAAI;IAKhE,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI;IA2BjC,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI;IASpC,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAO/B,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAIxB,gBAAgB;IAChB,QAAQ,IAAI,OAAO,GAAG,SAAS;CA8GhC;AAED,iBAAS,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,GAAG,GAAG,GAAG,SAAS,CAqBxE"}
@@ -8,13 +8,14 @@ const uv = new Int8Array([1, 1, 0, 1, 1, 0, 0, 0]);
8
8
  export class Renderer {
9
9
  /** when off, ents should avoid requesting renders. */
10
10
  always = debug?.render === 'always';
11
+ /** number of clears performed. often used to count render passes. */
11
12
  clears = 0;
12
- invalid = false;
13
13
  loseContext;
14
14
  #canvas;
15
15
  #clearRGBA = 0;
16
16
  #depth = true;
17
17
  #ctx;
18
+ #invalid = false;
18
19
  #looper;
19
20
  #preloadAtlas;
20
21
  #preloadAtlasImage;
@@ -45,11 +46,22 @@ export class Renderer {
45
46
  gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, uv.length / 2, // d
46
47
  pool.size);
47
48
  gl.bindVertexArray(null);
48
- this.invalid = false;
49
+ if (debug?.render) {
50
+ const err = gl.getError();
51
+ if (err !== gl.NO_ERROR)
52
+ console.error(`[render] GL error x${err.toString(16)}`);
53
+ }
54
+ this.#invalid = false;
49
55
  }
50
56
  get hasContext() {
51
57
  return this.#ctx != null;
52
58
  }
59
+ /**
60
+ * true when context has changed since last draw and screen should be redrawn.
61
+ */
62
+ get invalid() {
63
+ return this.#invalid || this.always;
64
+ }
53
65
  load(preloadAtlas) {
54
66
  this.#preloadAtlasImage = preloadAtlas;
55
67
  this.#ctx = this._Context();
@@ -64,7 +76,7 @@ export class Renderer {
64
76
  viewport.h = cam.h;
65
77
  }
66
78
  gl.useProgram(spriteShader.program);
67
- gl.uniform4i(spriteShader.uniform.uCam, cam.x, cam.y, cam.w, cam.h);
79
+ gl.uniform4i(spriteShader.uniform.uCam, Math.floor(cam.x), Math.floor(cam.y), cam.w, cam.h);
68
80
  gl.uniform1f(spriteShader.uniform.uAge, this.#looper.age);
69
81
  for (const [i, tex] of spriteShader.textures.entries()) {
70
82
  gl.activeTexture(gl.TEXTURE0 + i);
@@ -90,7 +102,7 @@ export class Renderer {
90
102
  }
91
103
  /** @internal */
92
104
  _Context() {
93
- const gl = this.#ctx?.gl ?? GL2(this.#canvas);
105
+ const gl = this.#ctx?.gl ?? GL2(this.#canvas, this.always);
94
106
  if (!gl)
95
107
  return;
96
108
  const shader = Shader(gl, spriteVertGLSL, spriteFragGLSL, [
@@ -123,6 +135,9 @@ export class Renderer {
123
135
  gl.enableVertexAttribArray(3);
124
136
  gl.vertexAttribIPointer(3, 1, gl.UNSIGNED_INT, drawableBytes, 8);
125
137
  gl.vertexAttribDivisor(3, 1);
138
+ gl.enableVertexAttribArray(4);
139
+ gl.vertexAttribIPointer(4, 1, gl.UNSIGNED_INT, drawableBytes, 12);
140
+ gl.vertexAttribDivisor(4, 1);
126
141
  gl.bindBuffer(gl.ARRAY_BUFFER, null);
127
142
  gl.bindTexture(gl.TEXTURE_2D, shader.textures[0]);
128
143
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
@@ -142,39 +157,41 @@ export class Renderer {
142
157
  gl.uniform1i(shader.uniform.uCels, 1);
143
158
  if (this.#preloadAtlasImage)
144
159
  gl.uniform2ui(shader.uniform.uTexWH, this.#preloadAtlasImage.naturalWidth, this.#preloadAtlasImage.naturalHeight);
145
- if (!this.invalid && debug?.invalid)
146
- console.debug('renderer invalid');
147
- this.invalid = true;
160
+ if (!this.#invalid && debug?.invalid)
161
+ console.debug('[invalid] renderer invalid');
162
+ this.#invalid = true;
148
163
  // keep outside of #context so it can be restored.
149
164
  this.loseContext = gl.getExtension('WEBGL_lose_context') ?? undefined;
150
165
  return (this.#ctx = { gl, spriteShader: shader, viewport: { w: 0, h: 0 } });
151
166
  }
152
167
  #onContextLost = (ev) => {
153
168
  ev.preventDefault(); // required.
154
- console.debug('[render] WebGL context lost');
169
+ console.debug('[render] GL context lost');
155
170
  this.#ctx = undefined;
156
171
  };
157
172
  #onContextRestored = () => {
158
- console.debug('[render] WebGL context restored');
173
+ console.debug('[render] GL context restored');
159
174
  this.#ctx = this._Context();
160
175
  };
161
176
  }
162
- function GL2(canvas) {
177
+ function GL2(canvas, always) {
163
178
  const gl = canvas.getContext('webgl2', {
164
- // to-do: expose.
179
+ // to-do: expose with Int / Frac mode.
165
180
  antialias: false,
166
181
  powerPreference: 'low-power',
167
182
  // avoid flicker caused by clearing the drawing buffer. see
168
183
  // https://developer.chrome.com/blog/desynchronized/.
169
184
  preserveDrawingBuffer: true,
170
- ...(!debug?.render && { desynchronized: true })
185
+ // disable desync in debug since it breaks FPS meter. only enable
186
+ // when canvas is known to draw next frame.
187
+ ...(!debug?.render && { desynchronized: always })
171
188
  });
172
189
  if (!gl) {
173
190
  console.debug('[render] no GL context');
174
191
  return;
175
192
  }
176
193
  if (debug?.render && !gl.getContextAttributes()?.desynchronized)
177
- console.debug('[render] no WebGL DOM desynchronization');
194
+ console.debug('[render] no GL DOM desynchronization');
178
195
  return gl;
179
196
  }
180
197
  //# sourceMappingURL=renderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/graphics/renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/graphics/renderer.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export declare const spriteFragGLSL: string;
2
+ //# sourceMappingURL=sprite-frag.glsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprite-frag.glsl.d.ts","sourceRoot":"","sources":["../../../src/graphics/sprite-frag.glsl.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,EAAE,MA+B5B,CAAA"}
@@ -1,5 +1,5 @@
1
1
  export const spriteFragGLSL = `#version 300 es
2
- #pragma debug(${debug?.render ? 'on' : 'off'})
2
+ #pragma debug(${debug?.render ? 'on' : 'off'})
3
3
  #pragma optimize(${debug?.render ? 'off' : 'on'})
4
4
 
5
5
  precision highp int;
@@ -11,14 +11,14 @@ uniform uvec2 uTexWH;
11
11
 
12
12
  flat in uint vStretch;
13
13
  flat in ivec4 vTexXYWH;
14
- flat in int vZ;
14
+ flat in uint vVisible;
15
15
  in vec2 vDstWH;
16
16
  flat in ivec2 vDstWHFixed;
17
17
 
18
18
  out vec4 oRGBA;
19
19
 
20
20
  void main() {
21
- if (vZ == ${Layer.Hidden} || vDstWHFixed.x == 0 || vDstWHFixed.y == 0)
21
+ if (vVisible == 0u || vDstWHFixed.x == 0 || vDstWHFixed.y == 0)
22
22
  discard;
23
23
 
24
24
  vec2 px = vec2(vTexXYWH.xy) + (
@@ -31,5 +31,4 @@ void main() {
31
31
  }
32
32
  `;
33
33
  import { debug } from "../utils/debug.js";
34
- import { Layer } from "./layer.js";
35
34
  //# sourceMappingURL=sprite-frag.glsl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sprite-frag.glsl.js","sourceRoot":"","sources":["../../../src/graphics/sprite-frag.glsl.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAW;gBACtB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;mBACzB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;;;cAkBjC,KAAK,CAAC,MAAM;;;;;;;;;;;CAWzB,CAAA;AAED,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"sprite-frag.glsl.js","sourceRoot":"","sources":["../../../src/graphics/sprite-frag.glsl.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAW;gBACtB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;mBACzB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B9C,CAAA;AAED,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAA"}
@@ -1 +1,2 @@
1
1
  export declare const spriteVertGLSL: string;
2
+ //# sourceMappingURL=sprite-vert.glsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprite-vert.glsl.d.ts","sourceRoot":"","sources":["../../../src/graphics/sprite-vert.glsl.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,EAAE,MAiE5B,CAAA"}
@@ -1,5 +1,5 @@
1
1
  export const spriteVertGLSL = `#version 300 es
2
- #pragma debug(${debug?.render ? 'on' : 'off'})
2
+ #pragma debug(${debug?.render ? 'on' : 'off'})
3
3
  #pragma optimize(${debug?.render ? 'off' : 'on'})
4
4
 
5
5
  // https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/WebGL_best_practices#essl300_minimum_requirements_webgl_2
@@ -15,6 +15,7 @@ layout (location=0) in ivec2 iUV;
15
15
  layout (location=1) in uint iy8_x24;
16
16
  layout (location=2) in uint iw8_sxyz_llll_y16;
17
17
  layout (location=3) in uint ii11_c5_h12_w4;
18
+ layout (location=4) in uint r31_v;
18
19
 
19
20
  const int maxY = 0x20000;
20
21
  const int layers = 16;
@@ -22,13 +23,13 @@ const int maxDepth = maxY * layers;
22
23
 
23
24
  flat out uint vStretch;
24
25
  flat out ivec4 vTexXYWH;
25
- flat out int vZ;
26
+ flat out uint vVisible;
26
27
  out vec2 vDstWH;
27
28
  flat out ivec2 vDstWHFixed;
28
29
 
29
30
  void main() {
30
- int x = (int((iy8_x24 & 0xffffffu) << 8) >> 8) / 64;
31
- int y = (int(iy8_x24 >> 24) | (int(iw8_sxyz_llll_y16 & 0xffffu) << 16 >> 8)) / 64;
31
+ int x = int(floor(float(int((iy8_x24 & 0xffffffu) << 8) >> 8) / 64.));
32
+ int y = int(floor(float(int(iy8_x24 >> 24) | (int(iw8_sxyz_llll_y16 & 0xffffu) << 16 >> 8)) / 64.));
32
33
  int z = int((iw8_sxyz_llll_y16 >> 16) & 0xfu);
33
34
  bool zend = bool(iw8_sxyz_llll_y16 & 0x100000u);
34
35
  bool flipY = bool(iw8_sxyz_llll_y16 & 0x200000u);
@@ -38,23 +39,24 @@ void main() {
38
39
  int cel = int((ii11_c5_h12_w4 >> 16) & 0xfu); // ignore the MSB.
39
40
  int w = int(((ii11_c5_h12_w4 & 0xfu) << 8) | (iw8_sxyz_llll_y16 >> 24));
40
41
  int h = int((ii11_c5_h12_w4 >> 4) & 0xfffu);
42
+ bool visible = bool(r31_v & 0x1u);
41
43
 
42
44
  // https://www.patternsgameprog.com/opengl-2d-facade-25-get-the-z-of-a-pixel
43
- float depth = float((z + 1) * maxY - (y + (zend ? 0 : h))) / float(maxDepth);
45
+ float depth = float((${Layer.Top} - z + 1) * maxY - (y + (zend ? 0 : h))) / float(maxDepth);
44
46
 
45
47
  ivec2 targetWH = iUV * ivec2(w, h);
46
48
 
47
49
  vec2 end = vec2(x + targetWH.x, y + targetWH.y);
48
50
  // UI layers are always given in screen coordinates.
49
51
  // to-do: how to handle non-int mode?
50
- vec2 camXY = z < ${Layer.A} ? vec2(0, 0) : vec2(uCam.xy);
52
+ vec2 camXY = z >= ${Layer.UIA} ? vec2(0, 0) : vec2(uCam.xy);
51
53
  vec2 clip = ((-2. * camXY + 2. * end) / vec2(uCam.zw) - 1.) * vec2(1, -1);
52
54
  gl_Position = vec4(clip, depth, 1);
53
55
 
54
56
  int frame = (((int(uAge / ${celMillis}) & 0x1f) - cel) + ${animCels}) & 0xf;
55
57
  uvec4 texXYWH = texelFetch(uCels, ivec2(0, id + frame), 0);
56
58
  vTexXYWH = ivec4(texXYWH);
57
- vZ = z;
59
+ vVisible = uint(visible);
58
60
 
59
61
  vDstWH = vec2(targetWH * ivec2(flipX ? -1 : 1, flipY ? -1 : 1));
60
62
  vDstWHFixed = ivec2(w, h) * ivec2(flipX ? -1 : 1, flipY ? -1 : 1);
@@ -1 +1 @@
1
- {"version":3,"file":"sprite-vert.glsl.js","sourceRoot":"","sources":["../../../src/graphics/sprite-vert.glsl.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAW;gBACtB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;mBACzB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA+C1B,KAAK,CAAC,CAAC;;;;8BAIE,SAAS,sBAAsB,QAAQ;;;;;;;;;;CAUpE,CAAA;AAED,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"sprite-vert.glsl.js","sourceRoot":"","sources":["../../../src/graphics/sprite-vert.glsl.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAW;gBACtB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;mBACzB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA0CtB,KAAK,CAAC,GAAG;;;;;;;sBAOZ,KAAK,CAAC,GAAG;;;;8BAID,SAAS,sBAAsB,QAAQ;;;;;;;;;;CAUpE,CAAA;AAED,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA"}
@@ -1,12 +1,17 @@
1
- import { type Anim, type Atlas, type TagFormat } from '../graphics/atlas.ts';
1
+ import { type Anim, type Atlas, type Tag } from '../graphics/atlas.ts';
2
2
  import type { Block } from '../mem/pool.ts';
3
3
  import { type Box, type WH, type XY } from '../types/geo.ts';
4
4
  import type { Millis } from '../types/time.ts';
5
- import type { Layer } from './layer.ts';
5
+ import { Layer } from './layer.ts';
6
+ export type DrawablePool = {
7
+ free(block: Block): void;
8
+ view: DataView<ArrayBuffer>;
9
+ };
10
+ /** must be a multiple of 4 (`UNSIGNED_INT`). */
6
11
  export declare const drawableBytes: number;
7
- /** granularity (0.015625) of `Drawable` coords. */
12
+ /** granularity (0.015625) of drawable coords. */
8
13
  export declare const drawableEpsilon: number;
9
- export declare const drawableMaxWH: WH;
14
+ export declare const drawableMaxWH: Readonly<WH>;
10
15
  /**
11
16
  * everything not requiring an atlas. the box is the drawn region. assume little
12
17
  * endian.
@@ -23,6 +28,10 @@ export declare const drawableMaxWH: WH;
23
28
  * 9 hhhh hhhh
24
29
  * a iiic cccc animation ID [0, 2047], animation cel [0, 31].
25
30
  * b iiii iiii
31
+ * c rrrr rrrv reserved, visible.
32
+ * d rrrr rrrr
33
+ * e rrrr rrrr
34
+ * f rrrr rrrr
26
35
  *
27
36
  * animations default to looping without CPU interaction.
28
37
  * @internal
@@ -30,69 +39,89 @@ export declare const drawableMaxWH: WH;
30
39
  export declare abstract class Drawable implements Block, Box {
31
40
  #private;
32
41
  i: number;
33
- constructor(pool: {
34
- readonly view: DataView<ArrayBuffer>;
35
- }, i: number);
42
+ constructor(pool: Readonly<DrawablePool>, i: number);
36
43
  above(draw: Readonly<Drawable>): boolean;
37
44
  get cel(): number;
38
45
  /**
39
46
  * [0, 31]. rendered cel offset. call reset() to play animation from start.
40
47
  */
41
48
  set cel(cel: number);
49
+ /**
50
+ * `this` is a clipbox but sometimes a copy or non-Sprite instance is needed.
51
+ */
52
+ get clipbox(): Box;
42
53
  /** test if render area overlaps box or sprite render area. */
43
54
  clips(box: Readonly<XY & Partial<WH>>): boolean;
55
+ /** like `clips()` but can supports different world and UI layers. */
56
+ clipsZ(draw: Readonly<Drawable>, cam: Readonly<XY>): boolean;
44
57
  get flipX(): boolean;
45
58
  set flipX(flip: boolean);
46
59
  get flipY(): boolean;
47
60
  set flipY(flip: boolean);
61
+ free(): void;
48
62
  get h(): number;
49
63
  /** [0, 4095]. */
50
64
  set h(h: number);
51
65
  get id(): number;
52
66
  /** [0, 2047]. */
53
67
  set id(id: number);
68
+ /**
69
+ * reset most values that wouldn't be configured when setting the tag. used
70
+ * for reinitialization on pool allocation.
71
+ */
72
+ init(): void;
54
73
  get stretch(): boolean;
55
74
  /** wrap texture (default) or stretch to width and height. */
56
75
  set stretch(stretch: boolean);
76
+ get ui(): boolean;
77
+ get visible(): boolean;
78
+ set visible(visible: boolean);
57
79
  get w(): number;
58
80
  /** [0, 4095]. */
59
81
  set w(w: number);
60
82
  get x(): number;
61
83
  /** [-131072, 131071.984375] with 1/64th (0.015625) granularity. */
62
84
  set x(x: number);
63
- get xy(): XY;
64
- set xy(xy: Readonly<XY>);
65
85
  get y(): number;
66
86
  /** [-131072, 131071.984375] with 1/64th (0.015625) granularity. */
67
87
  set y(y: number);
68
88
  get z(): Layer;
69
- /** layer [0 (closest), 14 (furthest)]; 15 is hidden. */
89
+ /** layer [0 (bottom), 15 (top)]. */
70
90
  set z(z: Layer);
71
91
  get zend(): boolean;
72
92
  /** z-order by top (default) or bottom of box. */
73
93
  set zend(end: boolean);
74
94
  }
75
- export declare class Sprite<out Tag extends TagFormat> extends Drawable {
95
+ export declare class Sprite extends Drawable {
76
96
  #private;
77
- constructor(pool: {
78
- readonly view: DataView<ArrayBuffer>;
79
- }, i: number, atlas: Readonly<Atlas>, looper: {
97
+ constructor(pool: Readonly<DrawablePool>, i: number, atlas: Readonly<Atlas>, looper: {
80
98
  readonly age: Millis;
81
99
  });
82
100
  get anim(): Anim;
101
+ diagonalize(dir: Readonly<XY>): void;
83
102
  get flipX(): boolean;
84
103
  set flipX(flip: boolean);
85
104
  get flipY(): boolean;
86
105
  set flipY(flip: boolean);
87
106
  get h(): number;
88
107
  set h(h: number);
89
- get hitbox(): Box | undefined;
108
+ /** floored hitbox. */
109
+ get hitbox(): Readonly<Box> | undefined;
110
+ /**
111
+ * use `clips()` to test only clipbox of this and box. hitbox and hurtbox
112
+ * default to clipbox.
113
+ */
90
114
  hits(box: Readonly<XY | Box>): boolean;
91
- get hurtbox(): Box | undefined;
115
+ /** like `hits()` but can supports different world and UI layers. */
116
+ hitsZ(sprite: Readonly<Sprite>, cam: Readonly<XY>): boolean;
117
+ /** floored hurtbox. */
118
+ get hurtbox(): Readonly<Box> | undefined;
92
119
  get id(): number;
93
120
  set id(id: number);
94
121
  /** true if animation has played once. */
95
122
  get looped(): boolean;
123
+ /** current fractional cel in [0, 2 * anim.cels). */
124
+ get looperCel(): number;
96
125
  /** sets cel to animation start. */
97
126
  reset(): void;
98
127
  get tag(): Tag;
@@ -106,3 +135,12 @@ export declare class Sprite<out Tag extends TagFormat> extends Drawable {
106
135
  get y(): number;
107
136
  set y(y: number);
108
137
  }
138
+ /**
139
+ * center component fractions for synchronized 45 degree diagonal movement.
140
+ * @arg dir positive if x and y are both increasing or decreasing, negative if
141
+ * opposing, zero if either are static.
142
+ */
143
+ export declare function diagonalize(xy: XY, dir: number): void;
144
+ /** truncate to nearest drawable quantum. */
145
+ export declare function truncDrawableEpsilon(x: number): number;
146
+ //# sourceMappingURL=sprite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../../../src/graphics/sprite.ts"],"names":[],"mappings":"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"}