melonjs 14.5.0 → 15.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 (315) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +6 -6
  3. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/arraymultimap.js +1 -1
  5. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  6. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  7. package/dist/melonjs.mjs/_virtual/index.js +7 -3
  8. package/dist/melonjs.mjs/_virtual/index2.js +1 -1
  9. package/dist/melonjs.mjs/_virtual/multimap.js +1 -1
  10. package/dist/melonjs.mjs/_virtual/setmultimap.js +1 -1
  11. package/dist/melonjs.mjs/application/application.js +27 -17
  12. package/dist/melonjs.mjs/application/header.js +6 -5
  13. package/dist/melonjs.mjs/application/resize.js +20 -20
  14. package/dist/melonjs.mjs/application/settings.js +1 -1
  15. package/dist/melonjs.mjs/audio/audio.js +18 -20
  16. package/dist/melonjs.mjs/camera/camera2d.js +10 -10
  17. package/dist/melonjs.mjs/const.js +1 -1
  18. package/dist/melonjs.mjs/entity/entity.js +4 -4
  19. package/dist/melonjs.mjs/geometries/ellipse.js +6 -6
  20. package/dist/melonjs.mjs/geometries/line.js +9 -9
  21. package/dist/melonjs.mjs/geometries/path2d.js +56 -56
  22. package/dist/melonjs.mjs/geometries/point.js +2 -2
  23. package/dist/melonjs.mjs/geometries/poly.js +29 -29
  24. package/dist/melonjs.mjs/geometries/rectangle.js +8 -8
  25. package/dist/melonjs.mjs/geometries/roundrect.js +6 -6
  26. package/dist/melonjs.mjs/index.js +8 -6
  27. package/dist/melonjs.mjs/input/gamepad.js +30 -30
  28. package/dist/melonjs.mjs/input/input.js +2 -2
  29. package/dist/melonjs.mjs/input/keyboard.js +15 -15
  30. package/dist/melonjs.mjs/input/pointer.js +2 -2
  31. package/dist/melonjs.mjs/input/pointerevent.js +59 -59
  32. package/dist/melonjs.mjs/lang/console.js +3 -3
  33. package/dist/melonjs.mjs/lang/deprecated.js +2 -2
  34. package/dist/melonjs.mjs/level/level.js +9 -9
  35. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +3 -3
  36. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +31 -31
  37. package/dist/melonjs.mjs/level/tiled/TMXObject.js +8 -8
  38. package/dist/melonjs.mjs/level/tiled/TMXTile.js +8 -8
  39. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +19 -19
  40. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +15 -15
  41. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +3 -3
  42. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +46 -41
  43. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  44. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +30 -30
  45. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +21 -21
  46. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +10 -10
  47. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
  48. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +6 -6
  49. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  50. package/dist/melonjs.mjs/loader/cache.js +1 -1
  51. package/dist/melonjs.mjs/loader/loader.js +7 -7
  52. package/dist/melonjs.mjs/loader/loadingscreen.js +2 -2
  53. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  54. package/dist/melonjs.mjs/loader/parser.js +13 -13
  55. package/dist/melonjs.mjs/loader/settings.js +3 -3
  56. package/dist/melonjs.mjs/math/color.js +25 -24
  57. package/dist/melonjs.mjs/math/math.js +2 -2
  58. package/dist/melonjs.mjs/math/matrix2.js +22 -22
  59. package/dist/melonjs.mjs/math/matrix3.js +52 -52
  60. package/dist/melonjs.mjs/math/observable_vector2.js +12 -12
  61. package/dist/melonjs.mjs/math/observable_vector3.js +22 -22
  62. package/dist/melonjs.mjs/math/vector2.js +11 -11
  63. package/dist/melonjs.mjs/math/vector3.js +21 -21
  64. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +45 -0
  65. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +130 -0
  66. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +1 -1
  67. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +1 -1
  68. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +1 -1
  69. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +1 -1
  70. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  71. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +2 -2
  72. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  73. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  74. package/dist/melonjs.mjs/particles/emitter.js +5 -5
  75. package/dist/melonjs.mjs/particles/particle.js +8 -8
  76. package/dist/melonjs.mjs/particles/settings.js +3 -3
  77. package/dist/melonjs.mjs/physics/body.js +17 -17
  78. package/dist/melonjs.mjs/physics/bounds.js +12 -12
  79. package/dist/melonjs.mjs/physics/collision.js +3 -3
  80. package/dist/melonjs.mjs/physics/detector.js +14 -14
  81. package/dist/melonjs.mjs/physics/quadtree.js +19 -19
  82. package/dist/melonjs.mjs/physics/response.js +1 -1
  83. package/dist/melonjs.mjs/physics/sat.js +60 -60
  84. package/dist/melonjs.mjs/physics/world.js +4 -4
  85. package/dist/melonjs.mjs/plugin/plugin.js +11 -11
  86. package/dist/melonjs.mjs/renderable/collectable.js +2 -2
  87. package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
  88. package/dist/melonjs.mjs/renderable/container.js +77 -59
  89. package/dist/melonjs.mjs/renderable/dragndrop.js +5 -5
  90. package/dist/melonjs.mjs/renderable/imagelayer.js +7 -6
  91. package/dist/melonjs.mjs/renderable/light2d.js +6 -6
  92. package/dist/melonjs.mjs/renderable/nineslicesprite.js +12 -12
  93. package/dist/melonjs.mjs/renderable/renderable.js +35 -13
  94. package/dist/melonjs.mjs/renderable/sprite.js +25 -25
  95. package/dist/melonjs.mjs/renderable/trigger.js +11 -9
  96. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +97 -27
  97. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +25 -25
  98. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +83 -65
  99. package/dist/melonjs.mjs/state/stage.js +7 -7
  100. package/dist/melonjs.mjs/state/state.js +15 -15
  101. package/dist/melonjs.mjs/system/device.js +3 -3
  102. package/dist/melonjs.mjs/system/dom.js +1 -1
  103. package/dist/melonjs.mjs/system/event.js +2 -2
  104. package/dist/melonjs.mjs/system/platform.js +1 -1
  105. package/dist/melonjs.mjs/system/pooling.js +9 -9
  106. package/dist/melonjs.mjs/system/save.js +6 -6
  107. package/dist/melonjs.mjs/system/timer.js +16 -12
  108. package/dist/melonjs.mjs/text/bitmaptext.js +20 -20
  109. package/dist/melonjs.mjs/text/bitmaptextdata.js +22 -22
  110. package/dist/melonjs.mjs/text/glyph.js +3 -3
  111. package/dist/melonjs.mjs/text/text.js +63 -92
  112. package/dist/melonjs.mjs/text/textmetrics.js +15 -15
  113. package/dist/melonjs.mjs/text/textstyle.js +4 -6
  114. package/dist/melonjs.mjs/tweens/easing.js +4 -4
  115. package/dist/melonjs.mjs/tweens/interpolation.js +8 -8
  116. package/dist/melonjs.mjs/tweens/tween.js +11 -11
  117. package/dist/melonjs.mjs/utils/agent.js +6 -6
  118. package/dist/melonjs.mjs/utils/array.js +4 -4
  119. package/dist/melonjs.mjs/utils/file.js +1 -1
  120. package/dist/melonjs.mjs/utils/function.js +5 -5
  121. package/dist/melonjs.mjs/utils/string.js +3 -3
  122. package/dist/melonjs.mjs/utils/utils.js +16 -16
  123. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +41 -119
  124. package/dist/melonjs.mjs/video/renderer.js +70 -14
  125. package/dist/melonjs.mjs/video/texture/atlas.js +39 -45
  126. package/dist/melonjs.mjs/video/texture/cache.js +9 -10
  127. package/dist/melonjs.mjs/video/texture/canvas_texture.js +63 -3
  128. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  129. package/dist/melonjs.mjs/video/video.js +2 -2
  130. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +23 -19
  131. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +80 -80
  132. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +77 -0
  133. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +252 -0
  134. package/dist/melonjs.mjs/video/webgl/compositors/webgl_compositor.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/glshader.js +7 -7
  136. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  137. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +2 -2
  138. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  139. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +2 -2
  140. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +2 -2
  141. package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
  142. package/dist/melonjs.mjs/video/webgl/utils/program.js +7 -7
  143. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  144. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +4 -4
  145. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +188 -181
  146. package/dist/melonjs.module.js +25040 -25193
  147. package/dist/types/application/application.d.ts +11 -8
  148. package/dist/types/audio/audio.d.ts +3 -3
  149. package/dist/types/entity/entity.d.ts +1 -1
  150. package/dist/types/index.d.ts +7 -4
  151. package/dist/types/input/input.d.ts +1 -1
  152. package/dist/types/input/keyboard.d.ts +1 -1
  153. package/dist/types/input/pointerevent.d.ts +6 -6
  154. package/dist/types/level/level.d.ts +2 -2
  155. package/dist/types/level/tiled/TMXLayer.d.ts +4 -4
  156. package/dist/types/level/tiled/TMXTileMap.d.ts +2 -2
  157. package/dist/types/level/tiled/TMXUtils.d.ts +5 -4
  158. package/dist/types/loader/loader.d.ts +2 -2
  159. package/dist/types/loader/settings.d.ts +2 -2
  160. package/dist/types/particles/emitter.d.ts +1 -1
  161. package/dist/types/physics/collision.d.ts +1 -1
  162. package/dist/types/physics/detector.d.ts +1 -1
  163. package/dist/types/plugin/plugin.d.ts +2 -2
  164. package/dist/types/renderable/container.d.ts +21 -17
  165. package/dist/types/renderable/renderable.d.ts +6 -0
  166. package/dist/types/renderable/sprite.d.ts +11 -11
  167. package/dist/types/renderable/trigger.d.ts +1 -1
  168. package/dist/types/renderable/ui/uibaseelement.d.ts +28 -6
  169. package/dist/types/renderable/ui/uispriteelement.d.ts +12 -14
  170. package/dist/types/renderable/ui/uitextbutton.d.ts +52 -12
  171. package/dist/types/state/stage.d.ts +1 -1
  172. package/dist/types/system/device.d.ts +1 -1
  173. package/dist/types/system/pooling.d.ts +3 -3
  174. package/dist/types/system/timer.d.ts +5 -5
  175. package/dist/types/text/bitmaptext.d.ts +1 -1
  176. package/dist/types/text/text.d.ts +7 -21
  177. package/dist/types/text/textstyle.d.ts +1 -1
  178. package/dist/types/utils/array.d.ts +2 -2
  179. package/dist/types/video/canvas/canvas_renderer.d.ts +8 -81
  180. package/dist/types/video/renderer.d.ts +48 -4
  181. package/dist/types/video/texture/atlas.d.ts +3 -3
  182. package/dist/types/video/texture/canvas_texture.d.ts +40 -0
  183. package/dist/types/video/webgl/buffer/vertex.d.ts +3 -3
  184. package/dist/types/video/webgl/compositors/compositor.d.ts +38 -32
  185. package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +22 -0
  186. package/dist/types/video/webgl/compositors/quad_compositor.d.ts +72 -0
  187. package/dist/types/video/webgl/glshader.d.ts +1 -1
  188. package/dist/types/video/webgl/webgl_renderer.d.ts +47 -37
  189. package/package.json +16 -17
  190. package/src/application/application.js +26 -16
  191. package/src/application/header.js +5 -4
  192. package/src/application/resize.js +19 -19
  193. package/src/audio/audio.js +17 -19
  194. package/src/camera/camera2d.js +9 -9
  195. package/src/entity/entity.js +3 -3
  196. package/src/geometries/ellipse.js +5 -5
  197. package/src/geometries/line.js +8 -8
  198. package/src/geometries/path2d.js +55 -55
  199. package/src/geometries/point.js +1 -1
  200. package/src/geometries/poly.js +28 -28
  201. package/src/geometries/rectangle.js +7 -7
  202. package/src/geometries/roundrect.js +5 -5
  203. package/src/index.js +9 -4
  204. package/src/input/gamepad.js +29 -29
  205. package/src/input/input.js +1 -1
  206. package/src/input/keyboard.js +14 -14
  207. package/src/input/pointer.js +1 -1
  208. package/src/input/pointerevent.js +52 -52
  209. package/src/lang/console.js +2 -2
  210. package/src/lang/deprecated.js +1 -1
  211. package/src/level/level.js +8 -8
  212. package/src/level/tiled/TMXGroup.js +2 -2
  213. package/src/level/tiled/TMXLayer.js +30 -30
  214. package/src/level/tiled/TMXObject.js +7 -7
  215. package/src/level/tiled/TMXTile.js +7 -7
  216. package/src/level/tiled/TMXTileMap.js +18 -18
  217. package/src/level/tiled/TMXTileset.js +14 -14
  218. package/src/level/tiled/TMXTilesetGroup.js +2 -2
  219. package/src/level/tiled/TMXUtils.js +45 -40
  220. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +29 -29
  221. package/src/level/tiled/renderer/TMXIsometricRenderer.js +20 -20
  222. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +9 -9
  223. package/src/level/tiled/renderer/TMXRenderer.js +1 -1
  224. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +5 -5
  225. package/src/loader/loader.js +6 -6
  226. package/src/loader/loadingscreen.js +1 -1
  227. package/src/loader/parser.js +12 -12
  228. package/src/loader/settings.js +2 -2
  229. package/src/math/color.js +24 -23
  230. package/src/math/math.js +1 -1
  231. package/src/math/matrix2.js +21 -21
  232. package/src/math/matrix3.js +51 -51
  233. package/src/math/observable_vector2.js +11 -11
  234. package/src/math/observable_vector3.js +21 -21
  235. package/src/math/vector2.js +10 -10
  236. package/src/math/vector3.js +20 -20
  237. package/src/particles/emitter.js +4 -4
  238. package/src/particles/particle.js +7 -7
  239. package/src/particles/settings.js +2 -2
  240. package/src/physics/body.js +16 -16
  241. package/src/physics/bounds.js +11 -11
  242. package/src/physics/collision.js +2 -2
  243. package/src/physics/detector.js +13 -13
  244. package/src/physics/quadtree.js +18 -18
  245. package/src/physics/sat.js +59 -59
  246. package/src/physics/world.js +3 -3
  247. package/src/plugin/plugin.js +8 -8
  248. package/src/polyfill/index.js +0 -2
  249. package/src/renderable/collectable.js +1 -1
  250. package/src/renderable/container.js +76 -58
  251. package/src/renderable/dragndrop.js +4 -4
  252. package/src/renderable/imagelayer.js +6 -5
  253. package/src/renderable/light2d.js +5 -5
  254. package/src/renderable/nineslicesprite.js +11 -11
  255. package/src/renderable/renderable.js +34 -12
  256. package/src/renderable/sprite.js +24 -24
  257. package/src/renderable/trigger.js +10 -8
  258. package/src/renderable/ui/uibaseelement.js +96 -26
  259. package/src/renderable/ui/uispriteelement.js +24 -24
  260. package/src/renderable/ui/uitextbutton.js +85 -67
  261. package/src/state/stage.js +6 -6
  262. package/src/state/state.js +14 -14
  263. package/src/system/device.js +2 -2
  264. package/src/system/event.js +1 -1
  265. package/src/system/pooling.js +8 -8
  266. package/src/system/save.js +5 -5
  267. package/src/system/timer.js +15 -11
  268. package/src/text/bitmaptext.js +19 -19
  269. package/src/text/bitmaptextdata.js +21 -21
  270. package/src/text/glyph.js +2 -2
  271. package/src/text/text.js +62 -91
  272. package/src/text/textmetrics.js +14 -14
  273. package/src/text/textstyle.js +3 -5
  274. package/src/tweens/easing.js +3 -3
  275. package/src/tweens/interpolation.js +7 -7
  276. package/src/tweens/tween.js +10 -10
  277. package/src/utils/agent.js +5 -5
  278. package/src/utils/array.js +3 -3
  279. package/src/utils/function.js +4 -4
  280. package/src/utils/string.js +2 -2
  281. package/src/utils/utils.js +15 -15
  282. package/src/video/canvas/canvas_renderer.js +39 -117
  283. package/src/video/renderer.js +68 -12
  284. package/src/video/texture/atlas.js +38 -44
  285. package/src/video/texture/cache.js +6 -6
  286. package/src/video/texture/canvas_texture.js +62 -2
  287. package/src/video/video.js +1 -1
  288. package/src/video/webgl/buffer/vertex.js +22 -18
  289. package/src/video/webgl/compositors/compositor.js +79 -80
  290. package/src/video/webgl/compositors/primitive_compositor.js +68 -0
  291. package/src/video/webgl/compositors/{webgl_compositor.js → quad_compositor.js} +52 -109
  292. package/src/video/webgl/glshader.js +6 -6
  293. package/src/video/webgl/shaders/primitive.vert +2 -5
  294. package/src/video/webgl/shaders/quad.vert +3 -1
  295. package/src/video/webgl/utils/attributes.js +1 -1
  296. package/src/video/webgl/utils/program.js +6 -6
  297. package/src/video/webgl/utils/uniforms.js +3 -3
  298. package/src/video/webgl/webgl_renderer.js +186 -179
  299. package/dist/melonjs.mjs/_virtual/make-built-in.js +0 -10
  300. package/dist/melonjs.mjs/_virtual/object-define-property.js +0 -10
  301. package/dist/melonjs.mjs/_virtual/object-get-own-property-descriptor.js +0 -10
  302. package/dist/melonjs.mjs/_virtual/object-get-own-property-names.js +0 -10
  303. package/dist/melonjs.mjs/_virtual/object-get-own-property-symbols.js +0 -10
  304. package/dist/melonjs.mjs/_virtual/object-property-is-enumerable.js +0 -10
  305. package/dist/melonjs.mjs/_virtual/shared.js +0 -10
  306. package/dist/melonjs.mjs/game.js +0 -29
  307. package/dist/melonjs.mjs/polyfill/console.js +0 -18
  308. package/dist/melonjs.mjs/polyfill/performance.js +0 -27
  309. package/dist/melonjs.mjs/polyfill/requestAnimationFrame.js +0 -46
  310. package/dist/melonjs.mjs/polyfill/roundrect.js +0 -242
  311. package/dist/melonjs.mjs/renderable/re_container.js +0 -1016
  312. package/dist/melonjs.mjs/video/utils/resize.js +0 -116
  313. package/dist/melonjs.mjs/video/webgl/webgl_compositor.js +0 -494
  314. package/src/polyfill/performance.js +0 -20
  315. package/src/polyfill/requestAnimationFrame.js +0 -39
@@ -13,6 +13,7 @@ export default class Renderer {
13
13
  * @param {boolean} [options.transparent=false] - Whether to enable transparency on the canvas
14
14
  * @param {boolean} [options.premultipliedAlpha=true] - in WebGL, whether the renderer will assume that colors have premultiplied alpha when canvas transparency is enabled
15
15
  * @param {boolean} [options.blendMode="normal"] - the default blend mode to use ("normal", "multiply")
16
+ * @param {boolean} [options.depthBuffer="sorting"] - ~Experimental~ the default method to sort object on the z axis in WebGL ("sorting", "z-buffer")
16
17
  * @param {boolean} [options.subPixel=false] - Whether to enable subpixel rendering (performance hit when enabled)
17
18
  * @param {boolean} [options.verbose=false] - Enable the verbose mode that provides additional details as to what the renderer is doing
18
19
  * @param {number} [options.zoomX=width] - The actual width of the canvas with scaling applied
@@ -27,6 +28,7 @@ export default class Renderer {
27
28
  transparent?: boolean | undefined;
28
29
  premultipliedAlpha?: boolean | undefined;
29
30
  blendMode?: boolean | undefined;
31
+ depthBuffer?: boolean | undefined;
30
32
  subPixel?: boolean | undefined;
31
33
  verbose?: boolean | undefined;
32
34
  zoomX?: number | undefined;
@@ -56,6 +58,12 @@ export default class Renderer {
56
58
  * @type {boolean}
57
59
  */
58
60
  isContextValid: boolean;
61
+ /**
62
+ * the default method to sort object ("sorting", "z-buffer")
63
+ * @type {string}
64
+ * @default "sorting"
65
+ */
66
+ depthTest: string;
59
67
  /**
60
68
  * The Path2D instance used by the renderer to draw primitives
61
69
  * @type {Path2D}
@@ -188,7 +196,7 @@ export default class Renderer {
188
196
  * @param {Rect|RoundRect|Polygon|Line|Ellipse} [mask] - the shape defining the mask to be applied
189
197
  * @param {boolean} [invert=false] - either the given shape should define what is visible (default) or the opposite
190
198
  */
191
- setMask(mask?: Polygon | Rect | Ellipse | RoundRect | Line | undefined): void;
199
+ setMask(mask?: Polygon | Line | Ellipse | Rect | RoundRect | undefined): void;
192
200
  /**
193
201
  * disable (remove) the rendering mask set through setMask.
194
202
  * @see Renderer#setMask
@@ -206,9 +214,45 @@ export default class Renderer {
206
214
  */
207
215
  clearTint(): void;
208
216
  /**
209
- * @ignore
210
- */
211
- drawFont(): void;
217
+ * creates a Blob object representing the last rendered frame
218
+ * @param {Object} [options] - An object with the following properties:
219
+ * @param {String} [options.type="image/png"] - A string indicating the image format
220
+ * @param {Number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
221
+ * @return {Promise} A Promise returning a Blob object representing the last rendered frame
222
+ * @example
223
+ * renderer.convertToBlob().then((blob) => console.log(blob));
224
+ */
225
+ toBlob(options?: {
226
+ type?: string | undefined;
227
+ quality?: number | undefined;
228
+ } | undefined): Promise<any>;
229
+ /**
230
+ * creates an ImageBitmap object of the last frame rendered
231
+ * (not supported by standard Canvas)
232
+ * @param {Object} [options] - An object with the following properties:
233
+ * @param {String} [options.type="image/png"] - A string indicating the image format
234
+ * @param {Number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
235
+ * @return {Promise} A Promise returning an ImageBitmap.
236
+ * @example
237
+ * renderer.transferToImageBitmap().then((image) => console.log(image));
238
+ */
239
+ toImageBitmap(options?: {
240
+ type?: string | undefined;
241
+ quality?: number | undefined;
242
+ } | undefined): Promise<any>;
243
+ /**
244
+ * returns a data URL containing a representation of the last frame rendered
245
+ * @param {Object} [options] - An object with the following properties:
246
+ * @param {String} [options.type="image/png"] - A string indicating the image format
247
+ * @param {Number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
248
+ * @return {Promise} A Promise returning a string containing the requested data URL.
249
+ * @example
250
+ * renderer.toDataURL().then((dataURL) => console.log(dataURL));
251
+ */
252
+ toDataURL(options?: {
253
+ type?: string | undefined;
254
+ quality?: number | undefined;
255
+ } | undefined): Promise<any>;
212
256
  }
213
257
  import Vector2d from "../math/vector2.js";
214
258
  import Path2D from "./../geometries/path2d.js";
@@ -152,13 +152,13 @@ export class TextureAtlas {
152
152
  * ...
153
153
  * ...
154
154
  * // create a new "coin" sprite
155
- * var sprite = game.texture.createSpriteFromName("coin.png");
155
+ * let sprite = game.texture.createSpriteFromName("coin.png");
156
156
  * // set the renderable position to bottom center
157
157
  * sprite.anchorPoint.set(0.5, 1.0);
158
158
  * ...
159
159
  * ...
160
160
  * // create a 9-slice sprite
161
- * var dialogPanel = game.texture.createSpriteFromName(
161
+ * let dialogPanel = game.texture.createSpriteFromName(
162
162
  * "rpg_dialo.png",
163
163
  * // width & height are mandatory for 9-slice sprites
164
164
  * { width: this.width, height: this.height },
@@ -180,7 +180,7 @@ export class TextureAtlas {
180
180
  * );
181
181
  *
182
182
  * // create a new Animated Sprite
183
- * var sprite = game.texture.createAnimationFromName([
183
+ * let sprite = game.texture.createAnimationFromName([
184
184
  * "walk0001.png", "walk0002.png", "walk0003.png",
185
185
  * "walk0004.png", "walk0005.png", "walk0006.png",
186
186
  * "walk0007.png", "walk0008.png", "walk0009.png",
@@ -57,6 +57,46 @@ declare class CanvasTexture {
57
57
  * @return {ImageData} The ImageData extracted from this CanvasTexture.
58
58
  */
59
59
  getImageData(x: number, y: number, width: number, height: number): ImageData;
60
+ /**
61
+ * creates a Blob object representing the image contained in this canvas texture
62
+ * @param {Object} [options] - An object with the following properties:
63
+ * @param {String} [options.type="image/png"] - A string indicating the image format
64
+ * @param {Number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
65
+ * @return {Promise} A Promise returning a Blob object representing the image contained in this canvas texture
66
+ * @example
67
+ * canvasTexture.convertToBlob().then((blob) => console.log(blob));
68
+ */
69
+ toBlob(options?: {
70
+ type?: string | undefined;
71
+ quality?: number | undefined;
72
+ } | undefined): Promise<any>;
73
+ /**
74
+ * creates an ImageBitmap object from the most recently rendered image of this canvas texture
75
+ * @param {Object} [options] - An object with the following properties:
76
+ * @param {String} [options.type="image/png"] - A string indicating the image format
77
+ * @param {Number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
78
+ * @return {Promise} A Promise returning an ImageBitmap.
79
+ * @example
80
+ * canvasTexture.transferToImageBitmap().then((bitmap) => console.log(bitmap));
81
+ */
82
+ toImageBitmap(options?: {
83
+ type?: string | undefined;
84
+ quality?: number | undefined;
85
+ } | undefined): Promise<any>;
86
+ /**
87
+ * returns a data URL containing a representation of the most recently rendered image of this canvas texture
88
+ * (not supported by OffscreenCanvas)
89
+ * @param {Object} [options] - An object with the following properties:
90
+ * @param {String} [options.type="image/png"] - A string indicating the image format
91
+ * @param {Number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
92
+ * @return {Promise} A Promise returning a string containing the requested data URL.
93
+ * @example
94
+ * renderer.toDataURL().then((dataURL) => console.log(dataURL));
95
+ */
96
+ toDataURL(options?: {
97
+ type?: string | undefined;
98
+ quality?: number | undefined;
99
+ } | undefined): Promise<any>;
60
100
  /**
61
101
  * @ignore
62
102
  */
@@ -5,9 +5,9 @@
5
5
  * @ignore
6
6
  */
7
7
  export default class VertexArrayBuffer {
8
- constructor(vertex_size: any, vertex_per_quad: any);
8
+ constructor(vertex_size: any, vertex_per_obj: any);
9
9
  vertexSize: any;
10
- quadSize: any;
10
+ objSize: any;
11
11
  maxVertex: number;
12
12
  vertexCount: number;
13
13
  buffer: ArrayBuffer;
@@ -27,7 +27,7 @@ export default class VertexArrayBuffer {
27
27
  * resize the vertex buffer, retaining its original contents
28
28
  * @ignore
29
29
  */
30
- resize(): VertexArrayBuffer;
30
+ resize(vertexCount: any): VertexArrayBuffer;
31
31
  /**
32
32
  * push a new vertex to the buffer
33
33
  * @ignore
@@ -5,22 +5,37 @@
5
5
  export default class Compositor {
6
6
  /**
7
7
  * @param {WebGLRenderer} renderer - the current WebGL renderer session
8
+ * @param {Object} settings - additional settings to initialize this compositors
9
+ * @param {object[]} attribute - an array of attributes definition
10
+ * @param {string} attribute.name - name of the attribute in the vertex shader
11
+ * @param {number} attribute.size - number of components per vertex attribute. Must be 1, 2, 3, or 4.
12
+ * @param {GLenum} attribute.type - data type of each component in the array
13
+ * @param {boolean} attribute.normalized - whether integer data values should be normalized into a certain range when being cast to a float
14
+ * @param {number} attribute.offset - offset in bytes of the first component in the vertex attribute array
15
+ * @param {object} shader - an array of attributes definition
16
+ * @param {string} shader.vertex - a string containing the GLSL source code to set
17
+ * @param {string} shader.fragment - a string containing the GLSL source code to set
8
18
  */
9
- constructor(renderer: WebGLRenderer);
19
+ constructor(renderer: WebGLRenderer, settings: Object);
10
20
  /**
11
21
  * Initialize the compositor
12
22
  * @ignore
13
23
  */
14
- init(renderer: any): void;
24
+ init(renderer: any, settings: any): void;
15
25
  renderer: any;
16
26
  gl: any;
17
27
  color: any;
18
28
  viewMatrix: any;
19
29
  /**
20
- * a reference to the active WebGL shader
30
+ * the default shader created by this compositor
21
31
  * @type {GLShader}
22
32
  */
23
- activeShader: any;
33
+ defaultShader: GLShader | undefined;
34
+ /**
35
+ * the shader currently used by this compositor
36
+ * @type {GLShader}
37
+ */
38
+ currentShader: GLShader | undefined;
24
39
  /**
25
40
  * primitive type to render (gl.POINTS, gl.LINE_STRIP, gl.LINE_LOOP, gl.LINES, gl.TRIANGLE_STRIP, gl.TRIANGLE_FAN, gl.TRIANGLES)
26
41
  * @type {number}
@@ -47,11 +62,27 @@ export default class Compositor {
47
62
  * @type {number}
48
63
  */
49
64
  vertexSize: number | undefined;
65
+ /**
66
+ * the vertex data buffer used by this compositor
67
+ * @type {VertexArrayBuffer}
68
+ */
69
+ vertexData: VertexArrayBuffer | undefined;
50
70
  /**
51
71
  * Reset compositor internal state
52
72
  * @ignore
53
73
  */
54
74
  reset(): void;
75
+ /**
76
+ * @ignore
77
+ * called by the WebGL renderer when a compositor become the current one
78
+ */
79
+ bind(): void;
80
+ /**
81
+ * Select the shader to use for compositing
82
+ * @see GLShader
83
+ * @param {GLShader} shader - a reference to a GLShader instance
84
+ */
85
+ useShader(shader: GLShader): void;
55
86
  /**
56
87
  * add vertex attribute property definition to the compositor
57
88
  * @param {string} name - name of the attribute in the vertex shader
@@ -61,41 +92,16 @@ export default class Compositor {
61
92
  * @param {number} offset - offset in bytes of the first component in the vertex attribute array
62
93
  */
63
94
  addAttribute(name: string, size: number, type: GLenum, normalized: boolean, offset: number): void;
64
- /**
65
- * Sets the viewport
66
- * @param {number} x - x position of viewport
67
- * @param {number} y - y position of viewport
68
- * @param {number} w - width of viewport
69
- * @param {number} h - height of viewport
70
- */
71
- setViewport(x: number, y: number, w: number, h: number): void;
72
95
  /**
73
96
  * set/change the current projection matrix
74
97
  * @param {Matrix3d} matrix
75
98
  */
76
99
  setProjection(matrix: Matrix3d): void;
77
100
  /**
78
- * Select the shader to use for compositing
79
- * @see GLShader
80
- * @param {GLShader} shader - a reference to a GLShader instance
81
- */
82
- useShader(shader: GLShader): void;
83
- /**
84
- * Flush batched texture operations to the GPU
101
+ * Flush batched vertex data to the GPU
85
102
  * @param {number} [mode=gl.TRIANGLES] - the GL drawing mode
86
103
  */
87
104
  flush(mode?: number | undefined): void;
88
- /**
89
- * Clear the frame buffer
90
- * @param {number} [alpha = 0.0] - the alpha value used when clearing the framebuffer
91
- */
92
- clear(alpha?: number | undefined): void;
93
- /**
94
- * Specify the color values used when clearing color buffers. The values are clamped between 0 and 1.
95
- * @param {number} [r = 0] - the red color value used when the color buffers are cleared
96
- * @param {number} [g = 0] - the green color value used when the color buffers are cleared
97
- * @param {number} [b = 0] - the blue color value used when the color buffers are cleared
98
- * @param {number} [a = 0] - the alpha color value used when the color buffers are cleared
99
- */
100
- clearColor(r?: number | undefined, g?: number | undefined, b?: number | undefined, a?: number | undefined): void;
101
105
  }
106
+ import GLShader from "../glshader.js";
107
+ import VertexArrayBuffer from "../buffer/vertex.js";
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @classdesc
3
+ * A WebGL Compositor object. This class handles all of the WebGL state<br>
4
+ * Pushes texture regions or shape geometry into WebGL buffers, automatically flushes to GPU
5
+ * @augments Compositor
6
+ */
7
+ export default class PrimitiveCompositor extends Compositor {
8
+ /**
9
+ * Initialize the compositor
10
+ * @ignore
11
+ */
12
+ init(renderer: any): void;
13
+ /**
14
+ * Draw an array of vertices
15
+ * @param {GLenum} mode - primitive type to render (gl.POINTS, gl.LINE_STRIP, gl.LINE_LOOP, gl.LINES, gl.TRIANGLE_STRIP, gl.TRIANGLE_FAN, gl.TRIANGLES)
16
+ * @param {Point[]} verts - an array of vertices
17
+ * @param {number} [vertexCount=verts.length] - amount of points defined in the points array
18
+ */
19
+ drawVertices(mode: GLenum, verts: Point[], vertexCount?: number | undefined): void;
20
+ mode: any;
21
+ }
22
+ import Compositor from "./compositor.js";
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @classdesc
3
+ * A WebGL Compositor object. This class handles all of the WebGL state<br>
4
+ * Pushes texture regions or shape geometry into WebGL buffers, automatically flushes to GPU
5
+ * @augments Compositor
6
+ */
7
+ export default class QuadCompositor extends Compositor {
8
+ /**
9
+ * Initialize the compositor
10
+ * @ignore
11
+ */
12
+ init(renderer: any): void;
13
+ currentTextureUnit: any;
14
+ boundTextures: any[] | undefined;
15
+ /**
16
+ * Create a WebGL texture from an image
17
+ * @param {number} unit - Destination texture unit
18
+ * @param {Image|HTMLCanvasElement|ImageData|Uint8Array[]|Float32Array[]} [pixels=null] - Source image
19
+ * @param {number} filter - gl.LINEAR or gl.NEAREST
20
+ * @param {string} [repeat="no-repeat"] - Image repeat behavior (see {@link ImageLayer#repeat})
21
+ * @param {number} [w=pixels.width] - Source image width (Only use with UInt8Array[] or Float32Array[] source image)
22
+ * @param {number} [h=pixels.height] - Source image height (Only use with UInt8Array[] or Float32Array[] source image)
23
+ * @param {boolean} [premultipliedAlpha=true] - Multiplies the alpha channel into the other color channels
24
+ * @param {boolean} [mipmap=true] - Whether mipmap levels should be generated for this texture
25
+ * @returns {WebGLTexture} a WebGL texture
26
+ */
27
+ createTexture2D(unit: number, pixels?: HTMLCanvasElement | ImageData | (new (width?: number | undefined, height?: number | undefined) => HTMLImageElement) | Uint8Array[] | Float32Array[] | undefined, filter: number, repeat?: string | undefined, w?: number | undefined, h?: number | undefined, premultipliedAlpha?: boolean | undefined, mipmap?: boolean | undefined): WebGLTexture;
28
+ /**
29
+ * delete the given WebGL texture
30
+ * @param {WebGLTexture} [texture] - a WebGL texture to delete
31
+ * @param {number} [unit] - Texture unit to delete
32
+ */
33
+ deleteTexture2D(texture?: WebGLTexture | undefined): void;
34
+ /**
35
+ * returns the WebGL texture associated to the given texture unit
36
+ * @param {number} unit - Texture unit to which a texture is bound
37
+ * @returns {WebGLTexture} texture a WebGL texture
38
+ */
39
+ getTexture2D(unit: number): WebGLTexture;
40
+ /**
41
+ * assign the given WebGL texture to the current batch
42
+ * @param {WebGLTexture} texture - a WebGL texture
43
+ * @param {number} unit - Texture unit to which the given texture is bound
44
+ */
45
+ bindTexture2D(texture: WebGLTexture, unit: number): void;
46
+ /**
47
+ * unbind the given WebGL texture, forcing it to be reuploaded
48
+ * @param {WebGLTexture} [texture] - a WebGL texture
49
+ * @param {number} [unit] - a WebGL texture
50
+ * @returns {number} unit the unit number that was associated with the given texture
51
+ */
52
+ unbindTexture2D(texture?: WebGLTexture | undefined, unit?: number | undefined): number;
53
+ /**
54
+ * @ignore
55
+ */
56
+ uploadTexture(texture: any, w: any, h: any, force?: boolean): any;
57
+ /**
58
+ * Add a textured quad
59
+ * @param {TextureAtlas} texture - Source texture atlas
60
+ * @param {number} x - Destination x-coordinate
61
+ * @param {number} y - Destination y-coordinate
62
+ * @param {number} w - Destination width
63
+ * @param {number} h - Destination height
64
+ * @param {number} u0 - Texture UV (u0) value.
65
+ * @param {number} v0 - Texture UV (v0) value.
66
+ * @param {number} u1 - Texture UV (u1) value.
67
+ * @param {number} v1 - Texture UV (v1) value.
68
+ * @param {number} tint - tint color to be applied to the texture in UINT32 (argb) format
69
+ */
70
+ addQuad(texture: TextureAtlas, x: number, y: number, w: number, h: number, u0: number, v0: number, u1: number, v1: number, tint: number): void;
71
+ }
72
+ import Compositor from "./compositor.js";
@@ -11,7 +11,7 @@ export default class GLShader {
11
11
  * @see https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_on_the_web/GLSL_Shaders
12
12
  * @example
13
13
  * // create a basic shader
14
- * var myShader = new me.GLShader(
14
+ * let myShader = new me.GLShader(
15
15
  * // WebGL rendering context
16
16
  * gl,
17
17
  * // vertex shader
@@ -15,10 +15,11 @@ export default class WebGLRenderer extends Renderer {
15
15
  * @param {boolean} [options.premultipliedAlpha=true] - in WebGL, whether the renderer will assume that colors have premultiplied alpha when canvas transparency is enabled
16
16
  * @param {boolean} [options.subPixel=false] - Whether to enable subpixel renderering (performance hit when enabled)
17
17
  * @param {boolean} [options.preferWebGL1=false] - if true the renderer will only use WebGL 1
18
+ * @param {boolean} [options.depthTest="sorting"] - ~Experimental~ the default method to sort object on the z axis in WebGL ("sorting", "z-buffer")
18
19
  * @param {string} [options.powerPreference="default"] - a hint to the user agent indicating what configuration of GPU is suitable for the WebGL context ("default", "high-performance", "low-power"). To be noted that Safari and Chrome (since version 80) both default to "low-power" to save battery life and improve the user experience on these dual-GPU machines.
19
20
  * @param {number} [options.zoomX=width] - The actual width of the canvas with scaling applied
20
21
  * @param {number} [options.zoomY=height] - The actual height of the canvas with scaling applied
21
- * @param {WebGLCompositor} [options.compositor] - A class that implements the compositor API
22
+ * @param {Compositor} [options.compositor] - A class that implements the compositor API for sprite rendering
22
23
  */
23
24
  constructor(options: {
24
25
  width: number;
@@ -30,10 +31,11 @@ export default class WebGLRenderer extends Renderer {
30
31
  premultipliedAlpha?: boolean | undefined;
31
32
  subPixel?: boolean | undefined;
32
33
  preferWebGL1?: boolean | undefined;
34
+ depthTest?: boolean | undefined;
33
35
  powerPreference?: string | undefined;
34
36
  zoomX?: number | undefined;
35
37
  zoomY?: number | undefined;
36
- compositor?: WebGLCompositor | undefined;
38
+ compositor?: any;
37
39
  });
38
40
  /**
39
41
  * The WebGL version used by this renderer (1 or 2)
@@ -45,14 +47,14 @@ export default class WebGLRenderer extends Renderer {
45
47
  /**
46
48
  * The vendor string of the underlying graphics driver.
47
49
  * @type {string}
48
- * @default null
50
+ * @default undefined
49
51
  * @readonly
50
52
  */
51
53
  readonly GPUVendor: string;
52
54
  /**
53
55
  * The renderer string of the underlying graphics driver.
54
56
  * @type {string}
55
- * @default null
57
+ * @default undefined
56
58
  * @readonly
57
59
  */
58
60
  readonly GPURenderer: string;
@@ -63,6 +65,11 @@ export default class WebGLRenderer extends Renderer {
63
65
  */
64
66
  context: WebGLRenderingContext;
65
67
  gl: WebGLRenderingContext;
68
+ /**
69
+ * the vertex buffer used by this WebGL Renderer
70
+ * @type {WebGLBuffer}
71
+ */
72
+ vertexBuffer: WebGLBuffer;
66
73
  /**
67
74
  * Maximum number of texture unit supported under the current context
68
75
  * @type {number}
@@ -95,51 +102,63 @@ export default class WebGLRenderer extends Renderer {
95
102
  * @type {WebGLCompositor}
96
103
  */
97
104
  currentCompositor: WebGLCompositor;
105
+ /**
106
+ * a reference to the current shader program used by the renderer
107
+ * @type {WebGLProgram}
108
+ */
109
+ currentProgram: WebGLProgram;
98
110
  /**
99
111
  * The list of active compositors
100
112
  * @type {Map<WebGLCompositor>}
101
113
  */
102
114
  compositors: Map<WebGLCompositor, any>;
115
+ depthTest: boolean | undefined;
116
+ customShader: any;
103
117
  cache: TextureCache;
118
+ /**
119
+ * add a new compositor to this renderer
120
+ * @param {Compositor} compositor - a compositor instance
121
+ * @param {String} name - a name uniquely identifying this compositor
122
+ * @param {Boolean} [activate=false] - true if the given compositor should be set as the active one
123
+ */
124
+ addCompositor(compositor: Compositor, name?: string, activate?: boolean | undefined): void;
104
125
  /**
105
126
  * set the active compositor for this renderer
106
- * @param {WebGLCompositor|string} compositor - a compositor name or instance
127
+ * @param {String} name - a compositor name
128
+ * @param {GLShader} [shader] - an optional shader program to be used, instead of the default one, when activating the compositor
129
+ * @return {Compositor} an instance to the current active compositor
107
130
  */
108
- setCompositor(compositor?: WebGLCompositor | string): void;
131
+ setCompositor(name?: string, shader?: any): Compositor;
109
132
  /**
110
133
  * Reset the gl transform to identity
111
134
  */
112
135
  resetTransform(): void;
113
- /**
114
- * @ignore
115
- */
116
- createFontTexture(cache: any): void;
117
- /**
118
- * @ignore
119
- */
120
- fontContext2D: CanvasRenderingContext2D | undefined;
121
- /**
122
- * @ignore
123
- */
124
- fontTexture: TextureAtlas | undefined;
125
136
  /**
126
137
  * Create a pattern with the specified repetition
127
- * @param {Image} image - Source image
138
+ * @param {HTMLImageElement|SVGImageElement|HTMLVideoElement|HTMLCanvasElement|ImageBitmap|OffscreenCanvas|VideoFrame} image - Source image to be used as the pattern's image
128
139
  * @param {string} repeat - Define how the pattern should be repeated
129
140
  * @returns {TextureAtlas}
130
141
  * @see ImageLayer#repeat
131
142
  * @example
132
- * var tileable = renderer.createPattern(image, "repeat");
133
- * var horizontal = renderer.createPattern(image, "repeat-x");
134
- * var vertical = renderer.createPattern(image, "repeat-y");
135
- * var basic = renderer.createPattern(image, "no-repeat");
143
+ * let tileable = renderer.createPattern(image, "repeat");
144
+ * let horizontal = renderer.createPattern(image, "repeat-x");
145
+ * let vertical = renderer.createPattern(image, "repeat-y");
146
+ * let basic = renderer.createPattern(image, "no-repeat");
136
147
  */
137
- createPattern(image: new (width?: number | undefined, height?: number | undefined) => HTMLImageElement, repeat: string): TextureAtlas;
148
+ createPattern(image: HTMLImageElement | SVGImageElement | HTMLVideoElement | HTMLCanvasElement | ImageBitmap | OffscreenCanvas | VideoFrame, repeat: string): TextureAtlas;
138
149
  /**
139
150
  * set/change the current projection matrix (WebGL only)
140
151
  * @param {Matrix3d} matrix
141
152
  */
142
153
  setProjection(matrix: Matrix3d): void;
154
+ /**
155
+ * Sets the WebGL viewport, which specifies the affine transformation of x and y from normalized device coordinates to window coordinates
156
+ * @param {number} [x = 0] - x the horizontal coordinate for the lower left corner of the viewport origin
157
+ * @param {number} [y = 0] - y the vertical coordinate for the lower left corner of the viewport origin
158
+ * @param {number} [w = width of the canvas] - the width of viewport
159
+ * @param {number} [h = height of the canvas] - the height of viewport
160
+ */
161
+ setViewport(x?: number | undefined, y?: number | undefined, w?: number | undefined, h?: number | undefined): void;
143
162
  /**
144
163
  * Clears the gl context with the given color.
145
164
  * @param {Color|string} [color="#000000"] - CSS color.
@@ -154,13 +173,9 @@ export default class WebGLRenderer extends Renderer {
154
173
  * @param {number} height - The rectangle's height.
155
174
  */
156
175
  clearRect(x: number, y: number, width: number, height: number): void;
157
- /**
158
- * @ignore
159
- */
160
- drawFont(bounds: any): void;
161
176
  /**
162
177
  * Draw an image to the gl context
163
- * @param {Image} image - An element to draw into the context. The specification permits any canvas image source (CanvasImageSource), specifically, a CSSImageValue, an HTMLImageElement, an SVGImageElement, an HTMLVideoElement, an HTMLCanvasElement, an ImageBitmap, or an OffscreenCanvas.
178
+ * @param {HTMLImageElement|SVGImageElement|HTMLVideoElement|HTMLCanvasElement|ImageBitmap|OffscreenCanvas|VideoFrame} image - An element to draw into the context.
164
179
  * @param {number} sx - The X coordinate of the top left corner of the sub-rectangle of the source image to draw into the destination context.
165
180
  * @param {number} sy - The Y coordinate of the top left corner of the sub-rectangle of the source image to draw into the destination context.
166
181
  * @param {number} sw - The width of the sub-rectangle of the source image to draw into the destination context. If not specified, the entire rectangle from the coordinates specified by sx and sy to the bottom-right corner of the image is used.
@@ -177,7 +192,7 @@ export default class WebGLRenderer extends Renderer {
177
192
  * // Clip the image and position the clipped part on the canvas:
178
193
  * renderer.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);
179
194
  */
180
- drawImage(image: new (width?: number | undefined, height?: number | undefined) => HTMLImageElement, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;
195
+ drawImage(image: HTMLImageElement | SVGImageElement | HTMLVideoElement | HTMLCanvasElement | ImageBitmap | OffscreenCanvas | VideoFrame, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;
181
196
  /**
182
197
  * Draw a pattern within the given rectangle.
183
198
  * @param {TextureAtlas} pattern - Pattern object
@@ -192,9 +207,10 @@ export default class WebGLRenderer extends Renderer {
192
207
  * Returns the WebGL Context object of the given canvas element
193
208
  * @param {HTMLCanvasElement} canvas
194
209
  * @param {boolean} [transparent=false] - use true to enable transparency
210
+ * @param {boolean} [depth=false] - use true to enable depth buffer testing
195
211
  * @returns {WebGLRenderingContext}
196
212
  */
197
- getContextGL(canvas: HTMLCanvasElement, transparent?: boolean | undefined): WebGLRenderingContext;
213
+ getContextGL(canvas: HTMLCanvasElement, transparent?: boolean | undefined, depth?: boolean | undefined): WebGLRenderingContext;
198
214
  /**
199
215
  * Returns the WebGLContext instance for the renderer
200
216
  * return a reference to the system 2d Context
@@ -218,11 +234,6 @@ export default class WebGLRenderer extends Renderer {
218
234
  */
219
235
  setBlendMode(mode?: string | undefined, gl?: WebGLRenderingContext | undefined): void;
220
236
  currentBlendMode: any;
221
- /**
222
- * return a reference to the font 2d Context
223
- * @ignore
224
- */
225
- getFontContext(): CanvasRenderingContext2D | undefined;
226
237
  /**
227
238
  * restores the canvas context
228
239
  */
@@ -423,7 +434,6 @@ export default class WebGLRenderer extends Renderer {
423
434
  }
424
435
  import Renderer from "./../renderer.js";
425
436
  import Matrix2d from "./../../math/matrix2.js";
426
- import WebGLCompositor from "./compositors/webgl_compositor.js";
427
437
  import TextureCache from "./../texture/cache.js";
428
438
  import { TextureAtlas } from "./../texture/atlas.js";
429
439
  import Color from "./../../math/color.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "melonjs",
3
- "version": "14.5.0",
3
+ "version": "15.1.0",
4
4
  "description": "melonJS Game Engine",
5
5
  "homepage": "http://www.melonjs.org/",
6
6
  "type": "module",
@@ -52,39 +52,38 @@
52
52
  "CHANGELOG"
53
53
  ],
54
54
  "dependencies": {
55
- "@teppeis/multimaps": "^2.0.0",
56
- "core-js": "^3.27.2",
55
+ "@teppeis/multimaps": "^3.0.0",
56
+ "core-js": "^3.30.0",
57
57
  "earcut": "2.2.4",
58
58
  "eventemitter3": "^5.0.0",
59
59
  "howler": "2.2.3"
60
60
  },
61
61
  "devDependencies": {
62
- "@babel/eslint-parser": "^7.19.1",
62
+ "@babel/eslint-parser": "^7.21.3",
63
63
  "@babel/plugin-syntax-import-assertions": "^7.20.0",
64
- "@fastify/static": "^6.9.0",
64
+ "@fastify/static": "^6.10.0",
65
65
  "@melonjs/webdoc-theme": "^1.1.1",
66
66
  "@rollup/plugin-commonjs": "^24.0.1",
67
67
  "@rollup/plugin-image": "^3.0.2",
68
- "@rollup/plugin-node-resolve": "^15.0.1",
68
+ "@rollup/plugin-node-resolve": "^15.0.2",
69
69
  "@rollup/plugin-replace": "^5.0.2",
70
- "@types/offscreencanvas": "^2019.7.0",
71
70
  "@webdoc/cli": "^2.2.0",
72
- "chromedriver": "^110.0.0",
71
+ "chromedriver": "^112.0.0",
73
72
  "cross-env": "^7.0.3",
74
73
  "del-cli": "^5.0.0",
75
- "eslint": "^8.34.0",
76
- "eslint-plugin-jsdoc": "^40.0.0",
77
- "expect": "^29.4.2",
78
- "expect-mocha-image-snapshot": "^3.0.1",
79
- "fastify": "^4.13.0",
74
+ "eslint": "^8.37.0",
75
+ "eslint-plugin-jsdoc": "^40.1.1",
76
+ "expect": "^29.5.0",
77
+ "expect-mocha-image-snapshot": "^3.0.8",
78
+ "fastify": "^4.15.0",
80
79
  "mocha": "^10.2.0",
81
80
  "npm-self-link": "^1.1.7",
82
- "puppeteer": "^19.6.3",
83
- "rollup": "^3.15.0",
81
+ "puppeteer": "^19.8.5",
82
+ "rollup": "^3.20.2",
84
83
  "rollup-plugin-bundle-size": "^1.0.3",
85
84
  "rollup-plugin-string": "^3.0.0",
86
- "terser": "^5.16.3",
87
- "typescript": "^4.9.5"
85
+ "terser": "^5.16.8",
86
+ "typescript": "^5.0.3"
88
87
  },
89
88
  "scripts": {
90
89
  "build": "npm run lint && rollup -c --silent",