melonjs 17.3.0 → 18.0.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 (704) hide show
  1. package/{dist/types → build}/application/application.d.ts +16 -10
  2. package/build/application/application.d.ts.map +1 -0
  3. package/build/application/defaultApplicationSettings.d.ts +18 -0
  4. package/build/application/defaultApplicationSettings.d.ts.map +1 -0
  5. package/build/application/header.d.ts +11 -0
  6. package/build/application/header.d.ts.map +1 -0
  7. package/{dist/types → build}/application/resize.d.ts +2 -0
  8. package/build/application/resize.d.ts.map +1 -0
  9. package/build/application/scaleMethods.d.ts +44 -0
  10. package/build/application/scaleMethods.d.ts.map +1 -0
  11. package/build/application/settings.d.ts +85 -0
  12. package/build/application/settings.d.ts.map +1 -0
  13. package/{dist/types → build}/audio/audio.d.ts +37 -59
  14. package/build/audio/audio.d.ts.map +1 -0
  15. package/{dist/types → build}/camera/camera2d.d.ts +42 -75
  16. package/build/camera/camera2d.d.ts.map +1 -0
  17. package/build/const.d.ts +14 -0
  18. package/build/const.d.ts.map +1 -0
  19. package/build/geometries/earcut.d.ts +3 -0
  20. package/build/geometries/earcut.d.ts.map +1 -0
  21. package/build/geometries/ellipse.d.ts +117 -0
  22. package/build/geometries/ellipse.d.ts.map +1 -0
  23. package/build/geometries/line.d.ts +39 -0
  24. package/build/geometries/line.d.ts.map +1 -0
  25. package/build/geometries/observablePoint.d.ts +75 -0
  26. package/build/geometries/observablePoint.d.ts.map +1 -0
  27. package/{dist/types → build}/geometries/path2d.d.ts +11 -5
  28. package/build/geometries/path2d.d.ts.map +1 -0
  29. package/build/geometries/point.d.ts +44 -0
  30. package/build/geometries/point.d.ts.map +1 -0
  31. package/build/geometries/polygon.d.ts +182 -0
  32. package/build/geometries/polygon.d.ts.map +1 -0
  33. package/build/geometries/rectangle.d.ts +135 -0
  34. package/build/geometries/rectangle.d.ts.map +1 -0
  35. package/build/geometries/roundrect.d.ts +67 -0
  36. package/build/geometries/roundrect.d.ts.map +1 -0
  37. package/build/geometries/toarccanvas.d.ts +28 -0
  38. package/build/geometries/toarccanvas.d.ts.map +1 -0
  39. package/{dist/types → build}/index.d.ts +41 -45
  40. package/build/index.d.ts.map +1 -0
  41. package/build/index.js +28318 -0
  42. package/build/index.js.map +7 -0
  43. package/{dist/types → build}/input/gamepad.d.ts +3 -11
  44. package/build/input/gamepad.d.ts.map +1 -0
  45. package/{dist/types → build}/input/input.d.ts +4 -2
  46. package/build/input/input.d.ts.map +1 -0
  47. package/build/input/key.d.ts +105 -0
  48. package/build/input/key.d.ts.map +1 -0
  49. package/build/input/keyboard.d.ts +72 -0
  50. package/build/input/keyboard.d.ts.map +1 -0
  51. package/build/input/pointer.d.ts +180 -0
  52. package/build/input/pointer.d.ts.map +1 -0
  53. package/{dist/types → build}/input/pointerevent.d.ts +17 -15
  54. package/build/input/pointerevent.d.ts.map +1 -0
  55. package/{dist/types → build}/lang/console.d.ts +1 -0
  56. package/build/lang/console.d.ts.map +1 -0
  57. package/build/lang/deprecated.d.ts +24 -0
  58. package/build/lang/deprecated.d.ts.map +1 -0
  59. package/{dist/types → build}/level/level.d.ts +7 -7
  60. package/build/level/level.d.ts.map +1 -0
  61. package/{dist/types → build}/level/tiled/TMXGroup.d.ts +2 -2
  62. package/build/level/tiled/TMXGroup.d.ts.map +1 -0
  63. package/{dist/types → build}/level/tiled/TMXLayer.d.ts +4 -4
  64. package/build/level/tiled/TMXLayer.d.ts.map +1 -0
  65. package/{dist/types → build}/level/tiled/TMXObject.d.ts +3 -3
  66. package/build/level/tiled/TMXObject.d.ts.map +1 -0
  67. package/{dist/types → build}/level/tiled/TMXTile.d.ts +4 -5
  68. package/build/level/tiled/TMXTile.d.ts.map +1 -0
  69. package/{dist/types → build}/level/tiled/TMXTileMap.d.ts +4 -4
  70. package/build/level/tiled/TMXTileMap.d.ts.map +1 -0
  71. package/{dist/types → build}/level/tiled/TMXTileset.d.ts +3 -3
  72. package/build/level/tiled/TMXTileset.d.ts.map +1 -0
  73. package/{dist/types → build}/level/tiled/TMXTilesetGroup.d.ts +1 -1
  74. package/build/level/tiled/TMXTilesetGroup.d.ts.map +1 -0
  75. package/{dist/types → build}/level/tiled/TMXUtils.d.ts +2 -1
  76. package/build/level/tiled/TMXUtils.d.ts.map +1 -0
  77. package/{dist/types → build}/level/tiled/constants.d.ts +1 -0
  78. package/build/level/tiled/constants.d.ts.map +1 -0
  79. package/{dist/types → build}/level/tiled/renderer/TMXHexagonalRenderer.d.ts +3 -4
  80. package/build/level/tiled/renderer/TMXHexagonalRenderer.d.ts.map +1 -0
  81. package/{dist/types → build}/level/tiled/renderer/TMXIsometricRenderer.d.ts +2 -3
  82. package/build/level/tiled/renderer/TMXIsometricRenderer.d.ts.map +1 -0
  83. package/{dist/types → build}/level/tiled/renderer/TMXOrthogonalRenderer.d.ts +1 -2
  84. package/build/level/tiled/renderer/TMXOrthogonalRenderer.d.ts.map +1 -0
  85. package/{dist/types → build}/level/tiled/renderer/TMXRenderer.d.ts +7 -7
  86. package/build/level/tiled/renderer/TMXRenderer.d.ts.map +1 -0
  87. package/{dist/types → build}/level/tiled/renderer/TMXStaggeredRenderer.d.ts +1 -2
  88. package/build/level/tiled/renderer/TMXStaggeredRenderer.d.ts.map +1 -0
  89. package/{dist/types → build}/level/tiled/renderer/autodetect.d.ts +4 -3
  90. package/build/level/tiled/renderer/autodetect.d.ts.map +1 -0
  91. package/build/loader/cache.d.ts +10 -0
  92. package/build/loader/cache.d.ts.map +1 -0
  93. package/{dist/types → build}/loader/loader.d.ts +29 -53
  94. package/build/loader/loader.d.ts.map +1 -0
  95. package/{dist/types → build}/loader/loadingscreen.d.ts +1 -0
  96. package/build/loader/loadingscreen.d.ts.map +1 -0
  97. package/{dist/types → build}/loader/parsers/binary.d.ts +2 -1
  98. package/build/loader/parsers/binary.d.ts.map +1 -0
  99. package/{dist/types → build}/loader/parsers/compressed_textures/compressed_image.d.ts +1 -0
  100. package/build/loader/parsers/compressed_textures/compressed_image.d.ts.map +1 -0
  101. package/build/loader/parsers/compressed_textures/parseDDS.d.ts +2 -0
  102. package/build/loader/parsers/compressed_textures/parseDDS.d.ts.map +1 -0
  103. package/build/loader/parsers/compressed_textures/parseKTX.d.ts +2 -0
  104. package/build/loader/parsers/compressed_textures/parseKTX.d.ts.map +1 -0
  105. package/build/loader/parsers/compressed_textures/parseKTX2.d.ts +2 -0
  106. package/build/loader/parsers/compressed_textures/parseKTX2.d.ts.map +1 -0
  107. package/build/loader/parsers/compressed_textures/parsePKM.d.ts +2 -0
  108. package/build/loader/parsers/compressed_textures/parsePKM.d.ts.map +1 -0
  109. package/build/loader/parsers/compressed_textures/parsePVR.d.ts +2 -0
  110. package/build/loader/parsers/compressed_textures/parsePVR.d.ts.map +1 -0
  111. package/{dist/types → build}/loader/parsers/fetchdata.d.ts +2 -1
  112. package/build/loader/parsers/fetchdata.d.ts.map +1 -0
  113. package/{dist/types → build}/loader/parsers/fontface.d.ts +2 -1
  114. package/build/loader/parsers/fontface.d.ts.map +1 -0
  115. package/{dist/types → build}/loader/parsers/image.d.ts +2 -1
  116. package/build/loader/parsers/image.d.ts.map +1 -0
  117. package/{dist/types → build}/loader/parsers/json.d.ts +2 -1
  118. package/build/loader/parsers/json.d.ts.map +1 -0
  119. package/{dist/types → build}/loader/parsers/script.d.ts +2 -1
  120. package/build/loader/parsers/script.d.ts.map +1 -0
  121. package/{dist/types → build}/loader/parsers/tmx.d.ts +2 -1
  122. package/build/loader/parsers/tmx.d.ts.map +1 -0
  123. package/{dist/types → build}/loader/parsers/video.d.ts +2 -1
  124. package/build/loader/parsers/video.d.ts.map +1 -0
  125. package/build/math/color.d.ts +192 -0
  126. package/build/math/color.d.ts.map +1 -0
  127. package/build/math/math.d.ts +128 -0
  128. package/build/math/math.d.ts.map +1 -0
  129. package/build/math/matrix2d.d.ts +163 -0
  130. package/build/math/matrix2d.d.ts.map +1 -0
  131. package/build/math/matrix3d.d.ts +188 -0
  132. package/build/math/matrix3d.d.ts.map +1 -0
  133. package/build/math/observableVector2d.d.ts +286 -0
  134. package/build/math/observableVector2d.d.ts.map +1 -0
  135. package/build/math/observableVector2d_old.d.ts +76 -0
  136. package/build/math/observableVector2d_old.d.ts.map +1 -0
  137. package/build/math/observableVector3d.d.ts +283 -0
  138. package/build/math/observableVector3d.d.ts.map +1 -0
  139. package/build/math/observableVector3d_old.d.ts +81 -0
  140. package/build/math/observableVector3d_old.d.ts.map +1 -0
  141. package/build/math/vector2d.d.ts +253 -0
  142. package/build/math/vector2d.d.ts.map +1 -0
  143. package/build/math/vector3d.d.ts +242 -0
  144. package/build/math/vector3d.d.ts.map +1 -0
  145. package/{dist/types → build}/particles/emitter.d.ts +16 -40
  146. package/build/particles/emitter.d.ts.map +1 -0
  147. package/build/particles/particle.d.ts +47 -0
  148. package/build/particles/particle.d.ts.map +1 -0
  149. package/{dist/types → build}/particles/settings.d.ts +1 -0
  150. package/build/particles/settings.d.ts.map +1 -0
  151. package/{dist/types → build}/physics/body.d.ts +39 -21
  152. package/build/physics/body.d.ts.map +1 -0
  153. package/build/physics/bounds.d.ts +192 -0
  154. package/build/physics/bounds.d.ts.map +1 -0
  155. package/{dist/types → build}/physics/collision.d.ts +6 -4
  156. package/build/physics/collision.d.ts.map +1 -0
  157. package/{dist/types → build}/physics/detector.d.ts +13 -5
  158. package/build/physics/detector.d.ts.map +1 -0
  159. package/{dist/types → build}/physics/quadtree.d.ts +7 -18
  160. package/build/physics/quadtree.d.ts.map +1 -0
  161. package/{dist/types → build}/physics/response.d.ts +46 -5
  162. package/build/physics/response.d.ts.map +1 -0
  163. package/{dist/types → build}/physics/sat.d.ts +8 -0
  164. package/build/physics/sat.d.ts.map +1 -0
  165. package/{dist/types → build}/physics/world.d.ts +9 -4
  166. package/build/physics/world.d.ts.map +1 -0
  167. package/{dist/types → build}/plugin/plugin.d.ts +11 -18
  168. package/build/plugin/plugin.d.ts.map +1 -0
  169. package/build/polyfill/console.d.ts +2 -0
  170. package/build/polyfill/console.d.ts.map +1 -0
  171. package/build/polyfill/index.d.ts +6 -0
  172. package/build/polyfill/index.d.ts.map +1 -0
  173. package/build/polyfill/roundrect.d.ts +2 -0
  174. package/build/polyfill/roundrect.d.ts.map +1 -0
  175. package/build/pool.d.ts +39 -0
  176. package/build/pool.d.ts.map +1 -0
  177. package/{dist/types → build}/renderable/collectable.d.ts +2 -2
  178. package/build/renderable/collectable.d.ts.map +1 -0
  179. package/build/renderable/colorlayer.d.ts +41 -0
  180. package/build/renderable/colorlayer.d.ts.map +1 -0
  181. package/{dist/types → build}/renderable/container.d.ts +50 -19
  182. package/build/renderable/container.d.ts.map +1 -0
  183. package/{dist/types → build}/renderable/draggable.d.ts +5 -13
  184. package/build/renderable/draggable.d.ts.map +1 -0
  185. package/{dist/types → build}/renderable/dragndrop.d.ts +12 -21
  186. package/build/renderable/dragndrop.d.ts.map +1 -0
  187. package/{dist/types → build}/renderable/entity/entity.d.ts +17 -11
  188. package/build/renderable/entity/entity.d.ts.map +1 -0
  189. package/{dist/types → build}/renderable/imagelayer.d.ts +28 -8
  190. package/build/renderable/imagelayer.d.ts.map +1 -0
  191. package/build/renderable/light2d.d.ts +73 -0
  192. package/build/renderable/light2d.d.ts.map +1 -0
  193. package/{dist/types → build}/renderable/nineslicesprite.d.ts +9 -3
  194. package/build/renderable/nineslicesprite.d.ts.map +1 -0
  195. package/{dist/types → build}/renderable/renderable.d.ts +71 -50
  196. package/build/renderable/renderable.d.ts.map +1 -0
  197. package/{dist/types → build}/renderable/sprite.d.ts +34 -13
  198. package/build/renderable/sprite.d.ts.map +1 -0
  199. package/{dist/types → build}/renderable/text/bitmaptext.d.ts +7 -8
  200. package/build/renderable/text/bitmaptext.d.ts.map +1 -0
  201. package/build/renderable/text/bitmaptextdata.d.ts +17 -0
  202. package/build/renderable/text/bitmaptextdata.d.ts.map +1 -0
  203. package/{dist/types → build}/renderable/text/glyph.d.ts +15 -3
  204. package/build/renderable/text/glyph.d.ts.map +1 -0
  205. package/{dist/types → build}/renderable/text/text.d.ts +7 -16
  206. package/build/renderable/text/text.d.ts.map +1 -0
  207. package/{dist/types → build}/renderable/text/textmetrics.d.ts +8 -9
  208. package/build/renderable/text/textmetrics.d.ts.map +1 -0
  209. package/{dist/types → build}/renderable/text/textstyle.d.ts +1 -0
  210. package/build/renderable/text/textstyle.d.ts.map +1 -0
  211. package/{dist/types → build}/renderable/trigger.d.ts +22 -7
  212. package/build/renderable/trigger.d.ts.map +1 -0
  213. package/{dist/types → build}/renderable/ui/uibaseelement.d.ts +7 -7
  214. package/build/renderable/ui/uibaseelement.d.ts.map +1 -0
  215. package/{dist/types → build}/renderable/ui/uispriteelement.d.ts +4 -6
  216. package/build/renderable/ui/uispriteelement.d.ts.map +1 -0
  217. package/{dist/types → build}/renderable/ui/uitextbutton.d.ts +17 -4
  218. package/build/renderable/ui/uitextbutton.d.ts.map +1 -0
  219. package/{dist/types → build}/state/stage.d.ts +3 -3
  220. package/build/state/stage.d.ts.map +1 -0
  221. package/{dist/types → build}/state/state.d.ts +10 -9
  222. package/build/state/state.d.ts.map +1 -0
  223. package/{dist/types → build}/system/device.d.ts +49 -80
  224. package/build/system/device.d.ts.map +1 -0
  225. package/build/system/dom.d.ts +2 -0
  226. package/build/system/dom.d.ts.map +1 -0
  227. package/{dist/types → build}/system/event.d.ts +124 -291
  228. package/build/system/event.d.ts.map +1 -0
  229. package/build/system/eventEmitter.d.ts +19 -0
  230. package/build/system/eventEmitter.d.ts.map +1 -0
  231. package/build/system/eventEmitter.spec.d.ts +2 -0
  232. package/build/system/eventEmitter.spec.d.ts.map +1 -0
  233. package/{dist/types/system/pooling.d.ts → build/system/legacy_pool.d.ts} +22 -7
  234. package/build/system/legacy_pool.d.ts.map +1 -0
  235. package/build/system/platform.d.ts +34 -0
  236. package/build/system/platform.d.ts.map +1 -0
  237. package/build/system/pool.d.ts +26 -0
  238. package/build/system/pool.d.ts.map +1 -0
  239. package/build/system/save.d.ts +3 -0
  240. package/build/system/save.d.ts.map +1 -0
  241. package/build/system/timer.d.ts +118 -0
  242. package/build/system/timer.d.ts.map +1 -0
  243. package/build/tweens/easing.d.ts +93 -0
  244. package/build/tweens/easing.d.ts.map +1 -0
  245. package/build/tweens/interpolation.d.ts +7 -0
  246. package/build/tweens/interpolation.d.ts.map +1 -0
  247. package/build/tweens/tween.d.ts +234 -0
  248. package/build/tweens/tween.d.ts.map +1 -0
  249. package/build/utils/agent.d.ts +16 -0
  250. package/build/utils/agent.d.ts.map +1 -0
  251. package/build/utils/array-multimap.d.ts +14 -0
  252. package/build/utils/array-multimap.d.ts.map +1 -0
  253. package/build/utils/array.d.ts +30 -0
  254. package/build/utils/array.d.ts.map +1 -0
  255. package/build/utils/file.d.ts +16 -0
  256. package/build/utils/file.d.ts.map +1 -0
  257. package/build/utils/function.d.ts +24 -0
  258. package/build/utils/function.d.ts.map +1 -0
  259. package/build/utils/semver.d.ts +2 -0
  260. package/build/utils/semver.d.ts.map +1 -0
  261. package/build/utils/string.d.ts +35 -0
  262. package/build/utils/string.d.ts.map +1 -0
  263. package/build/utils/types.d.ts +5 -0
  264. package/build/utils/types.d.ts.map +1 -0
  265. package/build/utils/utils.d.ts +49 -0
  266. package/build/utils/utils.d.ts.map +1 -0
  267. package/build/version.d.ts +5 -0
  268. package/build/version.d.ts.map +1 -0
  269. package/{dist/types → build}/video/canvas/canvas_renderer.d.ts +58 -22
  270. package/build/video/canvas/canvas_renderer.d.ts.map +1 -0
  271. package/{dist/types → build}/video/renderer.d.ts +38 -17
  272. package/build/video/renderer.d.ts.map +1 -0
  273. package/{dist/types → build}/video/rendertarget/canvasrendertarget.d.ts +20 -10
  274. package/build/video/rendertarget/canvasrendertarget.d.ts.map +1 -0
  275. package/{dist/types → build}/video/texture/atlas.d.ts +14 -9
  276. package/build/video/texture/atlas.d.ts.map +1 -0
  277. package/{dist/types → build}/video/texture/cache.d.ts +4 -3
  278. package/build/video/texture/cache.d.ts.map +1 -0
  279. package/{dist/types → build}/video/texture/parser/aseprite.d.ts +1 -0
  280. package/build/video/texture/parser/aseprite.d.ts.map +1 -0
  281. package/{dist/types → build}/video/texture/parser/spritesheet.d.ts +1 -0
  282. package/build/video/texture/parser/spritesheet.d.ts.map +1 -0
  283. package/{dist/types → build}/video/texture/parser/texturepacker.d.ts +1 -0
  284. package/build/video/texture/parser/texturepacker.d.ts.map +1 -0
  285. package/build/video/utils/autodetect.d.ts +8 -0
  286. package/build/video/utils/autodetect.d.ts.map +1 -0
  287. package/{dist/types → build}/video/video.d.ts +4 -3
  288. package/build/video/video.d.ts.map +1 -0
  289. package/{dist/types → build}/video/webgl/buffer/vertex.d.ts +5 -6
  290. package/build/video/webgl/buffer/vertex.d.ts.map +1 -0
  291. package/{dist/types → build}/video/webgl/compositors/compositor.d.ts +9 -2
  292. package/build/video/webgl/compositors/compositor.d.ts.map +1 -0
  293. package/{dist/types → build}/video/webgl/compositors/primitive_compositor.d.ts +7 -3
  294. package/build/video/webgl/compositors/primitive_compositor.d.ts.map +1 -0
  295. package/{dist/types → build}/video/webgl/compositors/quad_compositor.d.ts +5 -5
  296. package/build/video/webgl/compositors/quad_compositor.d.ts.map +1 -0
  297. package/{dist/types → build}/video/webgl/glshader.d.ts +2 -2
  298. package/build/video/webgl/glshader.d.ts.map +1 -0
  299. package/{dist/types → build}/video/webgl/utils/attributes.d.ts +1 -0
  300. package/build/video/webgl/utils/attributes.d.ts.map +1 -0
  301. package/{dist/types → build}/video/webgl/utils/precision.d.ts +1 -0
  302. package/build/video/webgl/utils/precision.d.ts.map +1 -0
  303. package/{dist/types → build}/video/webgl/utils/program.d.ts +1 -0
  304. package/build/video/webgl/utils/program.d.ts.map +1 -0
  305. package/{dist/types → build}/video/webgl/utils/string.d.ts +1 -0
  306. package/build/video/webgl/utils/string.d.ts.map +1 -0
  307. package/{dist/types → build}/video/webgl/utils/uniforms.d.ts +1 -0
  308. package/build/video/webgl/utils/uniforms.d.ts.map +1 -0
  309. package/{dist/types → build}/video/webgl/webgl_renderer.d.ts +55 -43
  310. package/build/video/webgl/webgl_renderer.d.ts.map +1 -0
  311. package/package.json +83 -105
  312. package/LICENSE.md +0 -21
  313. package/README.md +0 -223
  314. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +0 -14
  315. package/dist/melonjs.mjs/_virtual/earcut.js +0 -10
  316. package/dist/melonjs.mjs/_virtual/howler.js +0 -10
  317. package/dist/melonjs.mjs/_virtual/index.js +0 -10
  318. package/dist/melonjs.mjs/_virtual/re.js +0 -10
  319. package/dist/melonjs.mjs/application/application.js +0 -437
  320. package/dist/melonjs.mjs/application/header.js +0 -35
  321. package/dist/melonjs.mjs/application/resize.js +0 -123
  322. package/dist/melonjs.mjs/application/settings.js +0 -65
  323. package/dist/melonjs.mjs/audio/audio.js +0 -618
  324. package/dist/melonjs.mjs/camera/camera2d.js +0 -729
  325. package/dist/melonjs.mjs/const.js +0 -32
  326. package/dist/melonjs.mjs/geometries/ellipse.js +0 -245
  327. package/dist/melonjs.mjs/geometries/line.js +0 -108
  328. package/dist/melonjs.mjs/geometries/path2d.js +0 -474
  329. package/dist/melonjs.mjs/geometries/point.js +0 -80
  330. package/dist/melonjs.mjs/geometries/poly.js +0 -433
  331. package/dist/melonjs.mjs/geometries/rectangle.js +0 -330
  332. package/dist/melonjs.mjs/geometries/roundrect.js +0 -165
  333. package/dist/melonjs.mjs/geometries/toarccanvas.js +0 -103
  334. package/dist/melonjs.mjs/index.js +0 -239
  335. package/dist/melonjs.mjs/input/gamepad.js +0 -495
  336. package/dist/melonjs.mjs/input/input.js +0 -26
  337. package/dist/melonjs.mjs/input/keyboard.js +0 -470
  338. package/dist/melonjs.mjs/input/pointer.js +0 -393
  339. package/dist/melonjs.mjs/input/pointerevent.js +0 -803
  340. package/dist/melonjs.mjs/lang/console.js +0 -44
  341. package/dist/melonjs.mjs/lang/deprecated.js +0 -200
  342. package/dist/melonjs.mjs/level/level.js +0 -298
  343. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +0 -120
  344. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +0 -432
  345. package/dist/melonjs.mjs/level/tiled/TMXObject.js +0 -295
  346. package/dist/melonjs.mjs/level/tiled/TMXTile.js +0 -177
  347. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +0 -574
  348. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +0 -292
  349. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +0 -74
  350. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +0 -417
  351. package/dist/melonjs.mjs/level/tiled/constants.js +0 -17
  352. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +0 -503
  353. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +0 -215
  354. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +0 -155
  355. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +0 -113
  356. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +0 -107
  357. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +0 -38
  358. package/dist/melonjs.mjs/loader/cache.js +0 -30
  359. package/dist/melonjs.mjs/loader/loader.js +0 -728
  360. package/dist/melonjs.mjs/loader/loadingscreen.js +0 -118
  361. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +0 -10
  362. package/dist/melonjs.mjs/loader/parsers/binary.js +0 -42
  363. package/dist/melonjs.mjs/loader/parsers/compressed_textures/compressed_image.js +0 -58
  364. package/dist/melonjs.mjs/loader/parsers/compressed_textures/parseDDS.js +0 -13
  365. package/dist/melonjs.mjs/loader/parsers/compressed_textures/parseKTX.js +0 -13
  366. package/dist/melonjs.mjs/loader/parsers/compressed_textures/parseKTX2.js +0 -13
  367. package/dist/melonjs.mjs/loader/parsers/compressed_textures/parsePKM.js +0 -13
  368. package/dist/melonjs.mjs/loader/parsers/compressed_textures/parsePVR.js +0 -136
  369. package/dist/melonjs.mjs/loader/parsers/fetchdata.js +0 -62
  370. package/dist/melonjs.mjs/loader/parsers/fontface.js +0 -62
  371. package/dist/melonjs.mjs/loader/parsers/image.js +0 -129
  372. package/dist/melonjs.mjs/loader/parsers/json.js +0 -43
  373. package/dist/melonjs.mjs/loader/parsers/script.js +0 -46
  374. package/dist/melonjs.mjs/loader/parsers/tmx.js +0 -103
  375. package/dist/melonjs.mjs/loader/parsers/video.js +0 -99
  376. package/dist/melonjs.mjs/math/color.js +0 -635
  377. package/dist/melonjs.mjs/math/math.js +0 -221
  378. package/dist/melonjs.mjs/math/matrix2.js +0 -487
  379. package/dist/melonjs.mjs/math/matrix3.js +0 -621
  380. package/dist/melonjs.mjs/math/observable_vector2.js +0 -468
  381. package/dist/melonjs.mjs/math/observable_vector3.js +0 -558
  382. package/dist/melonjs.mjs/math/vector2.js +0 -431
  383. package/dist/melonjs.mjs/math/vector3.js +0 -468
  384. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +0 -45
  385. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +0 -130
  386. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +0 -694
  387. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +0 -352
  388. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +0 -12
  389. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +0 -3246
  390. package/dist/melonjs.mjs/node_modules/semver/classes/comparator.js +0 -165
  391. package/dist/melonjs.mjs/node_modules/semver/classes/range.js +0 -565
  392. package/dist/melonjs.mjs/node_modules/semver/classes/semver.js +0 -317
  393. package/dist/melonjs.mjs/node_modules/semver/functions/clean.js +0 -17
  394. package/dist/melonjs.mjs/node_modules/semver/functions/cmp.js +0 -68
  395. package/dist/melonjs.mjs/node_modules/semver/functions/coerce.js +0 -73
  396. package/dist/melonjs.mjs/node_modules/semver/functions/compare-build.js +0 -18
  397. package/dist/melonjs.mjs/node_modules/semver/functions/compare-loose.js +0 -14
  398. package/dist/melonjs.mjs/node_modules/semver/functions/compare.js +0 -16
  399. package/dist/melonjs.mjs/node_modules/semver/functions/diff.js +0 -76
  400. package/dist/melonjs.mjs/node_modules/semver/functions/eq.js +0 -14
  401. package/dist/melonjs.mjs/node_modules/semver/functions/gt.js +0 -14
  402. package/dist/melonjs.mjs/node_modules/semver/functions/gte.js +0 -14
  403. package/dist/melonjs.mjs/node_modules/semver/functions/inc.js +0 -30
  404. package/dist/melonjs.mjs/node_modules/semver/functions/lt.js +0 -14
  405. package/dist/melonjs.mjs/node_modules/semver/functions/lte.js +0 -14
  406. package/dist/melonjs.mjs/node_modules/semver/functions/major.js +0 -14
  407. package/dist/melonjs.mjs/node_modules/semver/functions/minor.js +0 -14
  408. package/dist/melonjs.mjs/node_modules/semver/functions/neq.js +0 -14
  409. package/dist/melonjs.mjs/node_modules/semver/functions/parse.js +0 -27
  410. package/dist/melonjs.mjs/node_modules/semver/functions/patch.js +0 -14
  411. package/dist/melonjs.mjs/node_modules/semver/functions/prerelease.js +0 -17
  412. package/dist/melonjs.mjs/node_modules/semver/functions/rcompare.js +0 -14
  413. package/dist/melonjs.mjs/node_modules/semver/functions/rsort.js +0 -14
  414. package/dist/melonjs.mjs/node_modules/semver/functions/satisfies.js +0 -21
  415. package/dist/melonjs.mjs/node_modules/semver/functions/sort.js +0 -14
  416. package/dist/melonjs.mjs/node_modules/semver/functions/valid.js +0 -17
  417. package/dist/melonjs.mjs/node_modules/semver/index.js +0 -140
  418. package/dist/melonjs.mjs/node_modules/semver/internal/constants.js +0 -44
  419. package/dist/melonjs.mjs/node_modules/semver/internal/debug.js +0 -18
  420. package/dist/melonjs.mjs/node_modules/semver/internal/identifiers.js +0 -32
  421. package/dist/melonjs.mjs/node_modules/semver/internal/lrucache.js +0 -49
  422. package/dist/melonjs.mjs/node_modules/semver/internal/parse-options.js +0 -24
  423. package/dist/melonjs.mjs/node_modules/semver/internal/re.js +0 -234
  424. package/dist/melonjs.mjs/node_modules/semver/ranges/gtr.js +0 -15
  425. package/dist/melonjs.mjs/node_modules/semver/ranges/intersects.js +0 -18
  426. package/dist/melonjs.mjs/node_modules/semver/ranges/ltr.js +0 -15
  427. package/dist/melonjs.mjs/node_modules/semver/ranges/max-satisfying.js +0 -37
  428. package/dist/melonjs.mjs/node_modules/semver/ranges/min-satisfying.js +0 -36
  429. package/dist/melonjs.mjs/node_modules/semver/ranges/min-version.js +0 -74
  430. package/dist/melonjs.mjs/node_modules/semver/ranges/outside.js +0 -98
  431. package/dist/melonjs.mjs/node_modules/semver/ranges/simplify.js +0 -59
  432. package/dist/melonjs.mjs/node_modules/semver/ranges/subset.js +0 -261
  433. package/dist/melonjs.mjs/node_modules/semver/ranges/to-comparators.js +0 -19
  434. package/dist/melonjs.mjs/node_modules/semver/ranges/valid.js +0 -22
  435. package/dist/melonjs.mjs/particles/emitter.js +0 -265
  436. package/dist/melonjs.mjs/particles/particle.js +0 -186
  437. package/dist/melonjs.mjs/particles/settings.js +0 -317
  438. package/dist/melonjs.mjs/physics/body.js +0 -706
  439. package/dist/melonjs.mjs/physics/bounds.js +0 -409
  440. package/dist/melonjs.mjs/physics/collision.js +0 -130
  441. package/dist/melonjs.mjs/physics/detector.js +0 -218
  442. package/dist/melonjs.mjs/physics/quadtree.js +0 -396
  443. package/dist/melonjs.mjs/physics/response.js +0 -57
  444. package/dist/melonjs.mjs/physics/sat.js +0 -483
  445. package/dist/melonjs.mjs/physics/world.js +0 -224
  446. package/dist/melonjs.mjs/plugin/plugin.js +0 -168
  447. package/dist/melonjs.mjs/renderable/collectable.js +0 -60
  448. package/dist/melonjs.mjs/renderable/colorlayer.js +0 -78
  449. package/dist/melonjs.mjs/renderable/container.js +0 -994
  450. package/dist/melonjs.mjs/renderable/draggable.js +0 -121
  451. package/dist/melonjs.mjs/renderable/dragndrop.js +0 -114
  452. package/dist/melonjs.mjs/renderable/entity/entity.js +0 -254
  453. package/dist/melonjs.mjs/renderable/imagelayer.js +0 -288
  454. package/dist/melonjs.mjs/renderable/light2d.js +0 -164
  455. package/dist/melonjs.mjs/renderable/nineslicesprite.js +0 -242
  456. package/dist/melonjs.mjs/renderable/renderable.js +0 -860
  457. package/dist/melonjs.mjs/renderable/sprite.js +0 -694
  458. package/dist/melonjs.mjs/renderable/text/bitmaptext.js +0 -421
  459. package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +0 -195
  460. package/dist/melonjs.mjs/renderable/text/glyph.js +0 -65
  461. package/dist/melonjs.mjs/renderable/text/text.js +0 -424
  462. package/dist/melonjs.mjs/renderable/text/textmetrics.js +0 -176
  463. package/dist/melonjs.mjs/renderable/text/textstyle.js +0 -21
  464. package/dist/melonjs.mjs/renderable/trigger.js +0 -158
  465. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +0 -285
  466. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +0 -231
  467. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +0 -146
  468. package/dist/melonjs.mjs/state/stage.js +0 -235
  469. package/dist/melonjs.mjs/state/state.js +0 -548
  470. package/dist/melonjs.mjs/system/device.js +0 -872
  471. package/dist/melonjs.mjs/system/dom.js +0 -79
  472. package/dist/melonjs.mjs/system/event.js +0 -606
  473. package/dist/melonjs.mjs/system/platform.js +0 -43
  474. package/dist/melonjs.mjs/system/pooling.js +0 -182
  475. package/dist/melonjs.mjs/system/save.js +0 -157
  476. package/dist/melonjs.mjs/system/timer.js +0 -274
  477. package/dist/melonjs.mjs/tweens/easing.js +0 -334
  478. package/dist/melonjs.mjs/tweens/interpolation.js +0 -112
  479. package/dist/melonjs.mjs/tweens/tween.js +0 -479
  480. package/dist/melonjs.mjs/utils/agent.js +0 -77
  481. package/dist/melonjs.mjs/utils/array.js +0 -63
  482. package/dist/melonjs.mjs/utils/file.js +0 -54
  483. package/dist/melonjs.mjs/utils/function.js +0 -69
  484. package/dist/melonjs.mjs/utils/string.js +0 -82
  485. package/dist/melonjs.mjs/utils/utils.js +0 -139
  486. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +0 -883
  487. package/dist/melonjs.mjs/video/renderer.js +0 -393
  488. package/dist/melonjs.mjs/video/rendertarget/canvasrendertarget.js +0 -310
  489. package/dist/melonjs.mjs/video/texture/atlas.js +0 -460
  490. package/dist/melonjs.mjs/video/texture/cache.js +0 -186
  491. package/dist/melonjs.mjs/video/texture/parser/aseprite.js +0 -78
  492. package/dist/melonjs.mjs/video/texture/parser/spritesheet.js +0 -77
  493. package/dist/melonjs.mjs/video/texture/parser/texturepacker.js +0 -64
  494. package/dist/melonjs.mjs/video/utils/autodetect.js +0 -27
  495. package/dist/melonjs.mjs/video/video.js +0 -142
  496. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +0 -146
  497. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +0 -234
  498. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +0 -77
  499. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +0 -254
  500. package/dist/melonjs.mjs/video/webgl/glshader.js +0 -166
  501. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +0 -10
  502. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +0 -10
  503. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +0 -10
  504. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +0 -10
  505. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +0 -25
  506. package/dist/melonjs.mjs/video/webgl/utils/precision.js +0 -38
  507. package/dist/melonjs.mjs/video/webgl/utils/program.js +0 -67
  508. package/dist/melonjs.mjs/video/webgl/utils/string.js +0 -25
  509. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +0 -92
  510. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +0 -1199
  511. package/dist/melonjs.module.js +0 -42838
  512. package/dist/types/application/header.d.ts +0 -5
  513. package/dist/types/application/settings.d.ts +0 -105
  514. package/dist/types/const.d.ts +0 -21
  515. package/dist/types/geometries/ellipse.d.ts +0 -127
  516. package/dist/types/geometries/line.d.ts +0 -11
  517. package/dist/types/geometries/point.d.ts +0 -46
  518. package/dist/types/geometries/poly.d.ts +0 -175
  519. package/dist/types/geometries/rectangle.d.ts +0 -130
  520. package/dist/types/geometries/roundrect.d.ts +0 -43
  521. package/dist/types/geometries/toarccanvas.d.ts +0 -10
  522. package/dist/types/input/keyboard.d.ts +0 -205
  523. package/dist/types/input/pointer.d.ts +0 -261
  524. package/dist/types/lang/deprecated.d.ts +0 -68
  525. package/dist/types/loader/cache.d.ts +0 -9
  526. package/dist/types/loader/parsers/compressed_textures/parseDDS.d.ts +0 -1
  527. package/dist/types/loader/parsers/compressed_textures/parseKTX.d.ts +0 -1
  528. package/dist/types/loader/parsers/compressed_textures/parseKTX2.d.ts +0 -1
  529. package/dist/types/loader/parsers/compressed_textures/parsePKM.d.ts +0 -1
  530. package/dist/types/loader/parsers/compressed_textures/parsePVR.d.ts +0 -1
  531. package/dist/types/math/color.d.ts +0 -179
  532. package/dist/types/math/math.d.ts +0 -149
  533. package/dist/types/math/matrix2.d.ts +0 -165
  534. package/dist/types/math/matrix3.d.ts +0 -177
  535. package/dist/types/math/observable_vector2.d.ts +0 -278
  536. package/dist/types/math/observable_vector3.d.ts +0 -277
  537. package/dist/types/math/vector2.d.ts +0 -255
  538. package/dist/types/math/vector3.d.ts +0 -266
  539. package/dist/types/particles/particle.d.ts +0 -32
  540. package/dist/types/physics/bounds.d.ts +0 -195
  541. package/dist/types/polyfill/console.d.ts +0 -1
  542. package/dist/types/polyfill/index.d.ts +0 -1
  543. package/dist/types/polyfill/roundrect.d.ts +0 -1
  544. package/dist/types/renderable/colorlayer.d.ts +0 -28
  545. package/dist/types/renderable/light2d.d.ts +0 -58
  546. package/dist/types/renderable/text/bitmaptextdata.d.ts +0 -35
  547. package/dist/types/system/dom.d.ts +0 -1
  548. package/dist/types/system/platform.d.ts +0 -33
  549. package/dist/types/system/save.d.ts +0 -25
  550. package/dist/types/system/timer.d.ts +0 -126
  551. package/dist/types/tweens/easing.d.ts +0 -46
  552. package/dist/types/tweens/interpolation.d.ts +0 -18
  553. package/dist/types/tweens/tween.d.ts +0 -195
  554. package/dist/types/utils/agent.d.ts +0 -21
  555. package/dist/types/utils/array.d.ts +0 -39
  556. package/dist/types/utils/file.d.ts +0 -27
  557. package/dist/types/utils/function.d.ts +0 -31
  558. package/dist/types/utils/string.d.ts +0 -50
  559. package/dist/types/utils/utils.d.ts +0 -54
  560. package/dist/types/video/utils/autodetect.d.ts +0 -5
  561. package/src/application/application.js +0 -429
  562. package/src/application/header.js +0 -26
  563. package/src/application/resize.js +0 -114
  564. package/src/application/settings.js +0 -56
  565. package/src/audio/audio.js +0 -617
  566. package/src/camera/camera2d.js +0 -724
  567. package/src/const.js +0 -23
  568. package/src/geometries/ellipse.js +0 -236
  569. package/src/geometries/line.js +0 -99
  570. package/src/geometries/path2d.js +0 -464
  571. package/src/geometries/point.js +0 -71
  572. package/src/geometries/poly.js +0 -424
  573. package/src/geometries/rectangle.js +0 -321
  574. package/src/geometries/roundrect.js +0 -156
  575. package/src/geometries/toarccanvas.js +0 -94
  576. package/src/index.js +0 -315
  577. package/src/input/gamepad.js +0 -487
  578. package/src/input/input.js +0 -17
  579. package/src/input/keyboard.js +0 -461
  580. package/src/input/pointer.js +0 -386
  581. package/src/input/pointerevent.js +0 -794
  582. package/src/lang/console.js +0 -36
  583. package/src/lang/deprecated.js +0 -192
  584. package/src/level/level.js +0 -290
  585. package/src/level/tiled/TMXGroup.js +0 -111
  586. package/src/level/tiled/TMXLayer.js +0 -424
  587. package/src/level/tiled/TMXObject.js +0 -286
  588. package/src/level/tiled/TMXTile.js +0 -168
  589. package/src/level/tiled/TMXTileMap.js +0 -569
  590. package/src/level/tiled/TMXTileset.js +0 -284
  591. package/src/level/tiled/TMXTilesetGroup.js +0 -66
  592. package/src/level/tiled/TMXUtils.js +0 -408
  593. package/src/level/tiled/constants.js +0 -8
  594. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +0 -497
  595. package/src/level/tiled/renderer/TMXIsometricRenderer.js +0 -208
  596. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +0 -149
  597. package/src/level/tiled/renderer/TMXRenderer.js +0 -103
  598. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +0 -100
  599. package/src/level/tiled/renderer/autodetect.js +0 -29
  600. package/src/loader/cache.js +0 -22
  601. package/src/loader/loader.js +0 -727
  602. package/src/loader/loadingscreen.js +0 -112
  603. package/src/loader/melonjs_logo.png +0 -0
  604. package/src/loader/parsers/binary.js +0 -33
  605. package/src/loader/parsers/compressed_textures/compressed_image.js +0 -49
  606. package/src/loader/parsers/compressed_textures/parseDDS.js +0 -5
  607. package/src/loader/parsers/compressed_textures/parseKTX.js +0 -5
  608. package/src/loader/parsers/compressed_textures/parseKTX2.js +0 -5
  609. package/src/loader/parsers/compressed_textures/parsePKM.js +0 -5
  610. package/src/loader/parsers/compressed_textures/parsePVR.js +0 -127
  611. package/src/loader/parsers/fetchdata.js +0 -53
  612. package/src/loader/parsers/fontface.js +0 -54
  613. package/src/loader/parsers/image.js +0 -120
  614. package/src/loader/parsers/json.js +0 -35
  615. package/src/loader/parsers/script.js +0 -37
  616. package/src/loader/parsers/tmx.js +0 -95
  617. package/src/loader/parsers/video.js +0 -90
  618. package/src/math/color.js +0 -627
  619. package/src/math/math.js +0 -212
  620. package/src/math/matrix2.js +0 -479
  621. package/src/math/matrix3.js +0 -613
  622. package/src/math/observable_vector2.js +0 -460
  623. package/src/math/observable_vector3.js +0 -550
  624. package/src/math/vector2.js +0 -423
  625. package/src/math/vector3.js +0 -460
  626. package/src/particles/emitter.js +0 -258
  627. package/src/particles/particle.js +0 -178
  628. package/src/particles/settings.js +0 -310
  629. package/src/physics/body.js +0 -698
  630. package/src/physics/bounds.js +0 -401
  631. package/src/physics/collision.js +0 -123
  632. package/src/physics/detector.js +0 -209
  633. package/src/physics/quadtree.js +0 -387
  634. package/src/physics/response.js +0 -48
  635. package/src/physics/sat.js +0 -473
  636. package/src/physics/world.js +0 -216
  637. package/src/plugin/plugin.js +0 -159
  638. package/src/polyfill/console.js +0 -11
  639. package/src/polyfill/index.js +0 -13
  640. package/src/polyfill/roundrect.js +0 -237
  641. package/src/renderable/collectable.js +0 -51
  642. package/src/renderable/colorlayer.js +0 -70
  643. package/src/renderable/container.js +0 -985
  644. package/src/renderable/draggable.js +0 -114
  645. package/src/renderable/dragndrop.js +0 -106
  646. package/src/renderable/entity/entity.js +0 -246
  647. package/src/renderable/imagelayer.js +0 -280
  648. package/src/renderable/light2d.js +0 -155
  649. package/src/renderable/nineslicesprite.js +0 -233
  650. package/src/renderable/renderable.js +0 -852
  651. package/src/renderable/sprite.js +0 -685
  652. package/src/renderable/text/bitmaptext.js +0 -418
  653. package/src/renderable/text/bitmaptextdata.js +0 -186
  654. package/src/renderable/text/glyph.js +0 -57
  655. package/src/renderable/text/text.js +0 -415
  656. package/src/renderable/text/textmetrics.js +0 -167
  657. package/src/renderable/text/textstyle.js +0 -12
  658. package/src/renderable/trigger.js +0 -149
  659. package/src/renderable/ui/uibaseelement.js +0 -276
  660. package/src/renderable/ui/uispriteelement.js +0 -223
  661. package/src/renderable/ui/uitextbutton.js +0 -140
  662. package/src/state/stage.js +0 -226
  663. package/src/state/state.js +0 -541
  664. package/src/system/device.js +0 -863
  665. package/src/system/dom.js +0 -70
  666. package/src/system/event.js +0 -597
  667. package/src/system/platform.js +0 -34
  668. package/src/system/pooling.js +0 -190
  669. package/src/system/save.js +0 -148
  670. package/src/system/timer.js +0 -281
  671. package/src/tweens/easing.js +0 -325
  672. package/src/tweens/interpolation.js +0 -103
  673. package/src/tweens/tween.js +0 -470
  674. package/src/utils/agent.js +0 -68
  675. package/src/utils/array.js +0 -54
  676. package/src/utils/file.js +0 -46
  677. package/src/utils/function.js +0 -60
  678. package/src/utils/string.js +0 -73
  679. package/src/utils/utils.js +0 -127
  680. package/src/video/canvas/canvas_renderer.js +0 -874
  681. package/src/video/renderer.js +0 -384
  682. package/src/video/rendertarget/canvasrendertarget.js +0 -303
  683. package/src/video/texture/atlas.js +0 -451
  684. package/src/video/texture/cache.js +0 -178
  685. package/src/video/texture/parser/aseprite.js +0 -69
  686. package/src/video/texture/parser/spritesheet.js +0 -68
  687. package/src/video/texture/parser/texturepacker.js +0 -55
  688. package/src/video/utils/autodetect.js +0 -18
  689. package/src/video/video.js +0 -160
  690. package/src/video/webgl/buffer/vertex.js +0 -137
  691. package/src/video/webgl/compositors/compositor.js +0 -225
  692. package/src/video/webgl/compositors/primitive_compositor.js +0 -68
  693. package/src/video/webgl/compositors/quad_compositor.js +0 -245
  694. package/src/video/webgl/glshader.js +0 -158
  695. package/src/video/webgl/shaders/primitive.frag +0 -5
  696. package/src/video/webgl/shaders/primitive.vert +0 -15
  697. package/src/video/webgl/shaders/quad.frag +0 -7
  698. package/src/video/webgl/shaders/quad.vert +0 -18
  699. package/src/video/webgl/utils/attributes.js +0 -16
  700. package/src/video/webgl/utils/precision.js +0 -29
  701. package/src/video/webgl/utils/program.js +0 -58
  702. package/src/video/webgl/utils/string.js +0 -16
  703. package/src/video/webgl/utils/uniforms.js +0 -84
  704. package/src/video/webgl/webgl_renderer.js +0 -1190
@@ -1,1199 +0,0 @@
1
- /*!
2
- * melonJS Game Engine - v17.3.0
3
- * http://www.melonjs.org
4
- * melonjs is licensed under the MIT License.
5
- * http://www.opensource.org/licenses/mit-license
6
- * @copyright (C) 2011 - 2024 Olivier Biot (AltByte Pte Ltd)
7
- */
8
- import Color from '../../math/color.js';
9
- import Matrix2d from '../../math/matrix2.js';
10
- import QuadCompositor from './compositors/quad_compositor.js';
11
- import PrimitiveCompositor from './compositors/primitive_compositor.js';
12
- import Renderer from '../renderer.js';
13
- import TextureCache from '../texture/cache.js';
14
- import { TextureAtlas, createAtlas } from '../texture/atlas.js';
15
- import { renderer } from '../video.js';
16
- import { emit, on, ONCONTEXT_LOST, ONCONTEXT_RESTORED, GAME_RESET, CANVAS_ONRESIZE } from '../../system/event.js';
17
- import pool from '../../system/pooling.js';
18
- import { isPowerOfTwo } from '../../math/math.js';
19
-
20
- // list of supported compressed texture formats
21
- let supportedCompressedTextureFormats;
22
-
23
- /**
24
- * @classdesc
25
- * a WebGL renderer draw
26
- * @augments Renderer
27
- */
28
- class WebGLRenderer extends Renderer {
29
- /**
30
- * @param {ApplicationSettings} [options] - optional parameters for the renderer
31
- */
32
- constructor(options) {
33
- // parent contructor
34
- super(Object.assign(options, { context: "webgl" }));
35
-
36
- /**
37
- * The vendor string of the underlying graphics driver.
38
- * @type {string}
39
- * @default undefined
40
- * @readonly
41
- */
42
- this.GPUVendor = undefined;
43
-
44
- /**
45
- * The renderer string of the underlying graphics driver.
46
- * @type {string}
47
- * @default undefined
48
- * @readonly
49
- */
50
- this.GPURenderer = undefined;
51
-
52
- /**
53
- * The WebGL context
54
- * @name gl
55
- * @type {WebGLRenderingContext}
56
- */
57
- this.gl = this.renderTarget.context;
58
-
59
- /**
60
- * sets or returns the thickness of lines for shape drawing (limited to strokeLine)
61
- * @type {number}
62
- * @default 1
63
- * @see WebGLRenderer#strokeLine
64
- */
65
- this.lineWidth = 1;
66
-
67
- /**
68
- * the vertex buffer used by this WebGL Renderer
69
- * @type {WebGLBuffer}
70
- */
71
- this.vertexBuffer = this.gl.createBuffer();
72
-
73
- /**
74
- * Maximum number of texture unit supported under the current context
75
- * @type {number}
76
- * @readonly
77
- */
78
- this.maxTextures = this.gl.getParameter(this.gl.MAX_TEXTURE_IMAGE_UNITS);
79
-
80
- /**
81
- * @ignore
82
- */
83
- this._colorStack = [];
84
-
85
- /**
86
- * @ignore
87
- */
88
- this._matrixStack = [];
89
-
90
- /**
91
- * @ignore
92
- */
93
- this._scissorStack = [];
94
-
95
- /**
96
- * @ignore
97
- */
98
- this._blendStack = [];
99
-
100
- /**
101
- * The current transformation matrix used for transformations on the overall scene
102
- * @type {Matrix2d}
103
- */
104
- this.currentTransform = new Matrix2d();
105
-
106
- /**
107
- * The current compositor used by the renderer
108
- * @type {WebGLCompositor}
109
- */
110
- this.currentCompositor = undefined;
111
-
112
- /**
113
- * a reference to the current shader program used by the renderer
114
- * @type {WebGLProgram}
115
- */
116
- this.currentProgram = undefined;
117
-
118
- /**
119
- * The list of active compositors
120
- * @type {Map<WebGLCompositor>}
121
- */
122
- this.compositors = new Map();
123
-
124
- // bind the vertex buffer
125
- this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuffer);
126
-
127
- // Create both quad and primitive compositor
128
- this.addCompositor(new (this.settings.compositor || QuadCompositor)(this), "quad", true);
129
- this.addCompositor(new (this.settings.compositor || PrimitiveCompositor)(this), "primitive");
130
-
131
- // depth Test settings
132
- this.depthTest = options.depthTest;
133
-
134
- // default WebGL state(s)
135
- if (this.depthTest === "z-buffer") {
136
- this.gl.enable(this.gl.DEPTH_TEST);
137
- // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/depthFunc
138
- this.gl.depthFunc(this.gl.LEQUAL);
139
- this.gl.depthMask(true);
140
- } else {
141
- this.gl.disable(this.gl.DEPTH_TEST);
142
- this.gl.depthMask(false);
143
- }
144
-
145
- this.gl.disable(this.gl.SCISSOR_TEST);
146
- this.gl.enable(this.gl.BLEND);
147
-
148
- // set default mode
149
- this.setBlendMode(this.settings.blendMode);
150
-
151
- // get GPU vendor and renderer
152
- let debugInfo = this.gl.getExtension("WEBGL_debug_renderer_info");
153
- if (debugInfo !== null) {
154
- this.GPUVendor = this.gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
155
- this.GPURenderer = this.gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
156
- }
157
-
158
- // a private property that when set will make `setCompositor`
159
- // to use this specific shader instead of the default one
160
- this.customShader = undefined;
161
-
162
- // Create a texture cache
163
- this.cache = new TextureCache(this.maxTextures);
164
-
165
- // set the renderer type
166
- this.type = "WebGL" + this.WebGLVersion;
167
-
168
- // to simulate context lost and restore in WebGL:
169
- // let ctx = me.video.renderer.context.getExtension('WEBGL_lose_context');
170
- // ctx.loseContext()
171
- this.getCanvas().addEventListener("webglcontextlost", (e) => {
172
- e.preventDefault();
173
- this.isContextValid = false;
174
- emit(ONCONTEXT_LOST, this);
175
- }, false);
176
- // ctx.restoreContext()
177
- this.getCanvas().addEventListener("webglcontextrestored", () => {
178
- this.reset();
179
- this.isContextValid = true;
180
- emit(ONCONTEXT_RESTORED, this);
181
- }, false);
182
-
183
- // reset the renderer on game reset
184
- on(GAME_RESET, () => {
185
- this.reset();
186
- });
187
-
188
- // register to the CANVAS resize channel
189
- on(CANVAS_ONRESIZE, (width, height) => {
190
- this.flush();
191
- this.setViewport(0, 0, width, height);
192
- });
193
- }
194
-
195
- /**
196
- * The WebGL version used by this renderer (1 or 2)
197
- * @type {number}
198
- * @default 1
199
- * @readonly
200
- */
201
- get WebGLVersion() {
202
- return this.renderTarget.WebGLVersion;
203
- }
204
-
205
- /**
206
- * return the list of supported compressed texture formats
207
- * @return {Object}
208
- */
209
- getSupportedCompressedTextureFormats() {
210
- if (typeof supportedCompressedTextureFormats === "undefined") {
211
- const gl = this.gl;
212
- supportedCompressedTextureFormats = {
213
- astc: gl.getExtension("WEBGL_compressed_texture_astc") || this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_astc"),
214
- bptc: gl.getExtension("EXT_texture_compression_bptc") || this._gl.getExtension("WEBKIT_EXT_texture_compression_bptc"),
215
- s3tc: gl.getExtension("WEBGL_compressed_texture_s3tc") || this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"),
216
- s3tc_srgb: gl.getExtension("WEBGL_compressed_texture_s3tc_srgb") || this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc_srgb"),
217
- pvrtc: gl.getExtension("WEBGL_compressed_texture_pvrtc") || this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),
218
- etc1: gl.getExtension("WEBGL_compressed_texture_etc1") || this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc1"),
219
- etc2: gl.getExtension("WEBGL_compressed_texture_etc") || gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc") || gl.getExtension("WEBGL_compressed_texture_es3_0")
220
- };
221
- }
222
- return supportedCompressedTextureFormats;
223
- }
224
-
225
- /**
226
- * return true if the given compressed texture format is supported
227
- * @param {Number} format
228
- * @returns
229
- */
230
- hasSupportedCompressedFormats(format) {
231
- const supportedFormats = this.getSupportedCompressedTextureFormats();
232
- for (var supportedFormat in supportedFormats) {
233
- for (var extension in supportedFormats[supportedFormat]) {
234
- if (format === supportedFormats[supportedFormat][extension]) {
235
- return true;
236
- }
237
- }
238
- }
239
- return false;
240
- }
241
-
242
- /**
243
- * Reset context state
244
- */
245
- reset() {
246
- super.reset();
247
-
248
- // clear all stacks
249
- this._colorStack.forEach((color) => {
250
- pool.push(color);
251
- });
252
- this._matrixStack.forEach((matrix) => {
253
- pool.push(matrix);
254
- });
255
- this._colorStack.length = 0;
256
- this._matrixStack.length = 0;
257
- this._blendStack.length = 0;
258
-
259
- // clear gl context
260
- this.clear();
261
-
262
- // initial viewport size
263
- this.setViewport();
264
-
265
- // rebind the vertex buffer if required (e.g in case of context loss)
266
- if (this.gl.getParameter(this.gl.ARRAY_BUFFER_BINDING) !== this.vertexBuffer) {
267
- this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.vertexBuffer);
268
- }
269
-
270
- this.currentCompositor = undefined;
271
- this.currentProgram = undefined;
272
- this.customShader = undefined;
273
-
274
- this.compositors.forEach((compositor) => {
275
- if (this.isContextValid === false) {
276
- // on context lost/restore
277
- compositor.init(this);
278
- } else {
279
- compositor.reset();
280
- }
281
- });
282
-
283
- this.setCompositor("quad");
284
-
285
- this.gl.disable(this.gl.SCISSOR_TEST);
286
- }
287
-
288
- /**
289
- * add a new compositor to this renderer
290
- * @param {Compositor} compositor - a compositor instance
291
- * @param {string} name - a name uniquely identifying this compositor
292
- * @param {boolean} [activate=false] - true if the given compositor should be set as the active one
293
- */
294
- addCompositor(compositor, name = "default", activate = false) {
295
- // make sure there is no existing compositor with the same name
296
- if (typeof this.compositors.get(name) !== "undefined") {
297
- throw new Error("Invalid Compositor name");
298
- }
299
-
300
- // add the new compositor
301
- this.compositors.set(name, compositor);
302
-
303
- if (activate === true) {
304
- // set as active one
305
- this.setCompositor(name);
306
- }
307
- }
308
-
309
- /**
310
- * set the active compositor for this renderer
311
- * @param {string} name - a compositor name
312
- * @param {GLShader} [shader] - an optional shader program to be used, instead of the default one, when activating the compositor
313
- * @returns {Compositor} an instance to the current active compositor
314
- */
315
- setCompositor(name = "default", shader = this.customShader) {
316
- let compositor = this.compositors.get(name);
317
-
318
- if (typeof compositor === "undefined") {
319
- throw new Error("Invalid Compositor");
320
- }
321
-
322
- if (this.currentCompositor !== compositor) {
323
- if (this.currentCompositor !== undefined) {
324
- // flush the current compositor
325
- this.currentCompositor.flush();
326
- }
327
- // set as the active one
328
- this.currentCompositor = compositor;
329
- }
330
-
331
- if (name === "quad" && typeof shader === "object") {
332
- this.currentCompositor.useShader(shader);
333
- } else {
334
- // (re)bind the compositor with the default shader (program & attributes)
335
- this.currentCompositor.bind();
336
- }
337
-
338
- return this.currentCompositor;
339
- }
340
-
341
- /**
342
- * Reset the gl transform to identity
343
- */
344
- resetTransform() {
345
- this.currentTransform.identity();
346
- }
347
-
348
- /**
349
- * Create a pattern with the specified repetition
350
- * @param {HTMLImageElement|SVGImageElement|HTMLVideoElement|HTMLCanvasElement|ImageBitmap|OffscreenCanvas|VideoFrame} image - Source image to be used as the pattern's image
351
- * @param {string} repeat - Define how the pattern should be repeated
352
- * @returns {TextureAtlas} the patterned texture created
353
- * @see ImageLayer#repeat
354
- * @example
355
- * let tileable = renderer.createPattern(image, "repeat");
356
- * let horizontal = renderer.createPattern(image, "repeat-x");
357
- * let vertical = renderer.createPattern(image, "repeat-y");
358
- * let basic = renderer.createPattern(image, "no-repeat");
359
- */
360
- createPattern(image, repeat) {
361
-
362
- this.setCompositor("quad");
363
-
364
- if (renderer.WebGLVersion === 1 && (!isPowerOfTwo(image.width) || !isPowerOfTwo(image.height))) {
365
- let src = typeof image.src !== "undefined" ? image.src : image;
366
- throw new Error(
367
- "[WebGL Renderer] " + src + " is not a POT texture " +
368
- "(" + image.width + "x" + image.height + ")"
369
- );
370
- }
371
-
372
- let texture = new TextureAtlas(createAtlas(image.width, image.height, "pattern", repeat), image);
373
-
374
- // FIXME: Remove old cache entry and texture when changing the repeat mode
375
- this.currentCompositor.uploadTexture(texture);
376
-
377
- return texture;
378
- }
379
-
380
- /**
381
- * Flush the compositor to the frame buffer
382
- */
383
- flush() {
384
- this.currentCompositor.flush();
385
- }
386
-
387
- /**
388
- * set/change the current projection matrix (WebGL only)
389
- * @param {Matrix3d} matrix - the new projection matrix
390
- */
391
- setProjection(matrix) {
392
- super.setProjection(matrix);
393
- this.currentCompositor.setProjection(matrix);
394
- }
395
-
396
- /**
397
- * Sets the WebGL viewport, which specifies the affine transformation of x and y from normalized device coordinates to window coordinates
398
- * @param {number} [x = 0] - x the horizontal coordinate for the lower left corner of the viewport origin
399
- * @param {number} [y = 0] - y the vertical coordinate for the lower left corner of the viewport origin
400
- * @param {number} [w = width of the canvas] - the width of viewport
401
- * @param {number} [h = height of the canvas] - the height of viewport
402
- */
403
- setViewport(x = 0, y = 0, w = this.getCanvas().width, h = this.getCanvas().height) {
404
- this.gl.viewport(x, y, w, h);
405
- }
406
-
407
- /**
408
- * Clear the frame buffer
409
- */
410
- clear() {
411
- let gl = this.gl;
412
- gl.clearColor(0, 0, 0, this.settings.transparent ? 0.0 : 1.0);
413
- this.lineWidth = 1;
414
- if (this.depthTest === "z-buffer") {
415
- gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
416
- } else {
417
- gl.clear(gl.COLOR_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
418
- }
419
- }
420
-
421
- /**
422
- * Clears the gl context with the given color.
423
- * @param {Color|string} [color="#000000"] - CSS color.
424
- * @param {boolean} [opaque=false] - Allow transparency [default] or clear the surface completely [true]
425
- */
426
- clearColor(color = "#000000", opaque = false) {
427
- let glArray;
428
- let gl = this.gl;
429
-
430
- if (color instanceof Color) {
431
- glArray = color.toArray();
432
- } else {
433
- let _color = pool.pull("me.Color");
434
- // reuse temporary the renderer default color object
435
- glArray = _color.parseCSS(color).toArray();
436
- pool.push(_color);
437
- }
438
-
439
- // clear gl context with the specified color
440
- gl.clearColor(glArray[0], glArray[1], glArray[2], (opaque === true) ? 1.0 : glArray[3]);
441
- gl.clear(gl.COLOR_BUFFER_BIT);
442
- }
443
-
444
- /**
445
- * Erase the pixels in the given rectangular area by setting them to transparent black (rgba(0,0,0,0)).
446
- * @param {number} x - x axis of the coordinate for the rectangle starting point.
447
- * @param {number} y - y axis of the coordinate for the rectangle starting point.
448
- * @param {number} width - The rectangle's width.
449
- * @param {number} height - The rectangle's height.
450
- */
451
- clearRect(x, y, width, height) {
452
- this.save();
453
- this.clipRect(x, y, width, height);
454
- this.clearColor();
455
- this.restore();
456
- }
457
-
458
- /**
459
- * Draw an image to the gl context
460
- * @param {HTMLImageElement|SVGImageElement|HTMLVideoElement|HTMLCanvasElement|ImageBitmap|OffscreenCanvas|VideoFrame} image - An element to draw into the context.
461
- * @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.
462
- * @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.
463
- * @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.
464
- * @param {number} sh - The height of the sub-rectangle of the source image to draw into the destination context.
465
- * @param {number} dx - The X coordinate in the destination canvas at which to place the top-left corner of the source image.
466
- * @param {number} dy - The Y coordinate in the destination canvas at which to place the top-left corner of the source image.
467
- * @param {number} dw - The width to draw the image in the destination canvas. This allows scaling of the drawn image. If not specified, the image is not scaled in width when drawn.
468
- * @param {number} dh - The height to draw the image in the destination canvas. This allows scaling of the drawn image. If not specified, the image is not scaled in height when drawn.
469
- * @example
470
- * // Position the image on the canvas:
471
- * renderer.drawImage(image, dx, dy);
472
- * // Position the image on the canvas, and specify width and height of the image:
473
- * renderer.drawImage(image, dx, dy, dWidth, dHeight);
474
- * // Clip the image and position the clipped part on the canvas:
475
- * renderer.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);
476
- */
477
- drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) {
478
- if (typeof sw === "undefined") {
479
- sw = dw = image.width;
480
- sh = dh = image.height;
481
- dx = sx;
482
- dy = sy;
483
- sx = 0;
484
- sy = 0;
485
- }
486
- else if (typeof dx === "undefined") {
487
- dx = sx;
488
- dy = sy;
489
- dw = sw;
490
- dh = sh;
491
- sw = image.width;
492
- sh = image.height;
493
- sx = 0;
494
- sy = 0;
495
- }
496
-
497
- if (this.settings.subPixel === false) {
498
- // clamp to pixel grid
499
- dx |= 0;
500
- dy |= 0;
501
- }
502
-
503
- this.setCompositor("quad");
504
- // force reuploading if the given image is a HTMLVideoElement
505
- let reupload = typeof image.videoWidth !== "undefined";
506
- let texture = this.cache.get(image);
507
- let uvs = texture.getUVs(sx + "," + sy + "," + sw + "," + sh);
508
- this.currentCompositor.addQuad(texture, dx, dy, dw, dh, uvs[0], uvs[1], uvs[2], uvs[3], this.currentTint.toUint32(this.getGlobalAlpha()), reupload);
509
- }
510
-
511
- /**
512
- * Draw a pattern within the given rectangle.
513
- * @param {TextureAtlas} pattern - Pattern object
514
- * @param {number} x - x position where to draw the pattern
515
- * @param {number} y - y position where to draw the pattern
516
- * @param {number} width - width of the pattern
517
- * @param {number} height - height of the pattern
518
- * @see WebGLRenderer#createPattern
519
- */
520
- drawPattern(pattern, x, y, width, height) {
521
- let uvs = pattern.getUVs("0,0," + width + "," + height);
522
- this.setCompositor("quad");
523
- this.currentCompositor.addQuad(pattern, x, y, width, height, uvs[0], uvs[1], uvs[2], uvs[3], this.currentTint.toUint32(this.getGlobalAlpha()));
524
- }
525
-
526
-
527
- /**
528
- * starts a new path by emptying the list of sub-paths. Call this method when you want to create a new path
529
- * @example
530
- * // First path
531
- * renderer.beginPath();
532
- * renderer.setColor("blue");
533
- * renderer.moveTo(20, 20);
534
- * renderer.lineTo(200, 20);
535
- * renderer.stroke();
536
- * // Second path
537
- * renderer.beginPath();
538
- * renderer.setColor("green");
539
- * renderer.moveTo(20, 20);
540
- * renderer.lineTo(120, 120);
541
- * renderer.stroke();
542
- */
543
- beginPath() {
544
- this.path2D.beginPath();
545
- }
546
-
547
- /**
548
- * begins a new sub-path at the point specified by the given (x, y) coordinates.
549
- * @param {number} x - The x axis of the point.
550
- * @param {number} y - The y axis of the point.
551
- */
552
- moveTo(x, y) {
553
- this.path2D.moveTo(x, y);
554
- }
555
-
556
- /**
557
- * adds a straight line to the current sub-path by connecting the sub-path's last point to the specified (x, y) coordinates.
558
- */
559
- lineTo(x, y) {
560
- this.path2D.lineTo(x, y);
561
- }
562
-
563
- /**
564
- * creates a rectangular path whose starting point is at (x, y) and whose size is specified by width and height.
565
- * @param {number} x - The x axis of the coordinate for the rectangle starting point.
566
- * @param {number} y - The y axis of the coordinate for the rectangle starting point.
567
- * @param {number} width - The rectangle's width.
568
- * @param {number} height - The rectangle's height.
569
- */
570
- rect(x, y, width, height) {
571
- this.path2D.rect(x, y, width, height);
572
- }
573
-
574
- /**
575
- * adds a rounded rectangle to the current path.
576
- * @param {number} x - The x axis of the coordinate for the rectangle starting point.
577
- * @param {number} y - The y axis of the coordinate for the rectangle starting point.
578
- * @param {number} width - The rectangle's width.
579
- * @param {number} height - The rectangle's height.
580
- * @param {number} radius - The corner radius.
581
- */
582
- roundRect(x, y, width, height, radii) {
583
- this.path2D.roundRect(x, y, width, height, radii);
584
- }
585
-
586
- /**
587
- * stroke the given shape or the current defined path
588
- * @param {Rect|RoundRect|Polygon|Line|Ellipse} [shape] - a shape object to stroke
589
- * @param {boolean} [fill=false] - fill the shape with the current color if true
590
- */
591
- stroke(shape, fill) {
592
- this.setCompositor("primitive");
593
- if (typeof shape === "undefined") {
594
- if (fill === true) {
595
- // draw all triangles
596
- this.currentCompositor.drawVertices(this.gl.TRIANGLES, this.path2D.triangulatePath());
597
- } else {
598
- this.currentCompositor.drawVertices(this.gl.LINES, this.path2D.points);
599
- }
600
- } else {
601
- super.stroke(shape, fill);
602
- }
603
- }
604
-
605
- /**
606
- * fill the given shape or the current defined path
607
- * @param {Rect|RoundRect|Polygon|Line|Ellipse} [shape] - a shape object to fill
608
- */
609
- fill(shape) {
610
- this.stroke(shape, true);
611
- }
612
-
613
- /**
614
- * add a straight line from the current point to the start of the current sub-path. If the shape has already been closed or has only one point, this function does nothing
615
- */
616
- closePath() {
617
- this.path2D.closePath();
618
- }
619
-
620
- /**
621
- * Returns the WebGLContext instance for the renderer
622
- * return a reference to the system 2d Context
623
- * @returns {WebGLRenderingContext} the current WebGL context
624
- */
625
- getContext() {
626
- return this.gl;
627
- }
628
-
629
- /**
630
- * set a blend mode for the given context. <br>
631
- * Supported blend mode between Canvas and WebGL remderer : <br>
632
- * - "normal" : this is the default mode and draws new content on top of the existing content <br>
633
- * <img src="images/normal-blendmode.png" width="510"/> <br>
634
- * - "multiply" : the pixels of the top layer are multiplied with the corresponding pixel of the bottom layer. A darker picture is the result. <br>
635
- * <img src="images/multiply-blendmode.png" width="510"/> <br>
636
- * - "additive or lighter" : where both content overlap the color is determined by adding color values. <br>
637
- * <img src="images/lighter-blendmode.png" width="510"/> <br>
638
- * - "screen" : The pixels are inverted, multiplied, and inverted again. A lighter picture is the result (opposite of multiply) <br>
639
- * <img src="images/screen-blendmode.png" width="510"/> <br>
640
- * @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation
641
- * @param {string} [mode="normal"] - blend mode : "normal", "multiply", "lighter", "additive", "screen"
642
- * @param {WebGLRenderingContext} [gl] - a WebGL context
643
- */
644
- setBlendMode(mode = "normal", gl = this.gl) {
645
-
646
- if (this.currentBlendMode !== mode) {
647
- this.flush();
648
- gl.enable(gl.BLEND);
649
- this.currentBlendMode = mode;
650
-
651
- switch (mode) {
652
- case "screen" :
653
- gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_COLOR);
654
- break;
655
-
656
- case "lighter" :
657
- case "additive" :
658
- gl.blendFunc(gl.ONE, gl.ONE);
659
- break;
660
-
661
- case "multiply" :
662
- gl.blendFunc(gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA);
663
- break;
664
-
665
- default :
666
- gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
667
- this.currentBlendMode = "normal";
668
- break;
669
- }
670
- }
671
- }
672
-
673
- /**
674
- * restores the most recently saved renderer state by popping the top entry in the drawing state stack
675
- * @example
676
- * // Save the current state
677
- * renderer.save();
678
- *
679
- * // apply a transform and draw a rect
680
- * renderer.tranform(matrix);
681
- * renderer.fillRect(10, 10, 100, 100);
682
- *
683
- * // Restore to the state saved by the most recent call to save()
684
- * renderer.restore();
685
- */
686
- restore() {
687
- // do nothing if there is no saved states
688
- if (this._matrixStack.length !== 0) {
689
- let color = this._colorStack.pop();
690
- let matrix = this._matrixStack.pop();
691
-
692
- // restore the previous context
693
- this.currentColor.copy(color);
694
- this.currentTransform.copy(matrix);
695
-
696
- this.setBlendMode(this._blendStack.pop());
697
-
698
- // recycle objects
699
- pool.push(color);
700
- pool.push(matrix);
701
- }
702
-
703
- if (this._scissorStack.length !== 0) {
704
- // FIXME : prevent `scissor` object realloc and GC
705
- this.currentScissor.set(this._scissorStack.pop());
706
- } else {
707
- const canvas = this.getCanvas();
708
- // turn off scissor test
709
- this.gl.disable(this.gl.SCISSOR_TEST);
710
- this.currentScissor[0] = 0;
711
- this.currentScissor[1] = 0;
712
- this.currentScissor[2] = canvas.width;
713
- this.currentScissor[3] = canvas.height;
714
- }
715
- }
716
-
717
- /**
718
- * saves the entire state of the renderer by pushing the current state onto a stack.
719
- * @example
720
- * // Save the current state
721
- * renderer.save();
722
- *
723
- * // apply a transform and draw a rect
724
- * renderer.tranform(matrix);
725
- * renderer.fillRect(10, 10, 100, 100);
726
- *
727
- * // Restore to the state saved by the most recent call to save()
728
- * renderer.restore();
729
- */
730
- save() {
731
- this._colorStack.push(this.currentColor.clone());
732
- this._matrixStack.push(this.currentTransform.clone());
733
-
734
- if (this.gl.isEnabled(this.gl.SCISSOR_TEST)) {
735
- // FIXME avoid slice and object realloc
736
- this._scissorStack.push(this.currentScissor.slice());
737
- }
738
-
739
- this._blendStack.push(this.getBlendMode());
740
- }
741
-
742
- /**
743
- * adds a rotation to the transformation matrix.
744
- * @param {number} angle - the rotation angle, clockwise in radians
745
- * @example
746
- * // Rotated rectangle
747
- * renderer.rotate((45 * Math.PI) / 180);
748
- * renderer.setColor("red");
749
- * renderer.fillRect(10, 10, 100, 100);
750
- *
751
- * // Reset transformation matrix to the identity matrix
752
- * renderer.setTransform(1, 0, 0, 1, 0, 0);
753
- */
754
- rotate(angle) {
755
- this.currentTransform.rotate(angle);
756
- }
757
-
758
- /**
759
- * adds a scaling transformation to the renderer units horizontally and/or vertically
760
- * @param {number} x - Scaling factor in the horizontal direction. A negative value flips pixels across the vertical axis. A value of 1 results in no horizontal scaling.
761
- * @param {number} y - Scaling factor in the vertical direction. A negative value flips pixels across the horizontal axis. A value of 1 results in no vertical scaling
762
- */
763
- scale(x, y) {
764
- this.currentTransform.scale(x, y);
765
- }
766
-
767
- /**
768
- * not used by this renderer?
769
- * @ignore
770
- */
771
- setAntiAlias(context, enable) {
772
- super.setAntiAlias(context, enable);
773
- // TODO: perhaps handle GLNEAREST or other options with texture binding
774
- }
775
-
776
- /**
777
- * Set the global alpha
778
- * @param {number} alpha - 0.0 to 1.0 values accepted.
779
- */
780
- setGlobalAlpha(alpha) {
781
- this.currentColor.alpha = alpha;
782
- }
783
-
784
- /**
785
- * Return the global alpha
786
- * @returns {number} global alpha value
787
- */
788
- getGlobalAlpha() {
789
- return this.currentColor.alpha;
790
- }
791
-
792
- /**
793
- * Set the current fill & stroke style color.
794
- * By default, or upon reset, the value is set to #000000.
795
- * @param {Color|string} color - css color string.
796
- */
797
- setColor(color) {
798
- let alpha = this.currentColor.alpha;
799
- this.currentColor.copy(color);
800
- this.currentColor.alpha *= alpha;
801
- }
802
-
803
- /**
804
- * Stroke an arc at the specified coordinates with given radius, start and end points
805
- * @param {number} x - arc center point x-axis
806
- * @param {number} y - arc center point y-axis
807
- * @param {number} radius - arc radius
808
- * @param {number} start - start angle in radians
809
- * @param {number} end - end angle in radians
810
- * @param {boolean} [antiClockwise=false] - draw arc anti-clockwise
811
- * @param {boolean} [fill=false] - also fill the shape with the current color if true
812
- */
813
- strokeArc(x, y, radius, start, end, antiClockwise = false, fill = false) {
814
- this.setCompositor("primitive");
815
- this.path2D.beginPath();
816
- this.path2D.arc(x, y, radius, start, end, antiClockwise);
817
- if (fill === false) {
818
- this.currentCompositor.drawVertices(this.gl.LINES, this.path2D.points);
819
- } else {
820
- this.currentCompositor.drawVertices(this.gl.TRIANGLES, this.path2D.triangulatePath());
821
- }
822
- }
823
-
824
- /**
825
- * Fill an arc at the specified coordinates with given radius, start and end points
826
- * @param {number} x - arc center point x-axis
827
- * @param {number} y - arc center point y-axis
828
- * @param {number} radius - arc radius
829
- * @param {number} start - start angle in radians
830
- * @param {number} end - end angle in radians
831
- * @param {boolean} [antiClockwise=false] - draw arc anti-clockwise
832
- */
833
- fillArc(x, y, radius, start, end, antiClockwise = false) {
834
- this.strokeArc(x, y, radius, start, end, antiClockwise, true);
835
- }
836
-
837
- /**
838
- * Stroke an ellipse at the specified coordinates with given radius
839
- * @param {number} x - ellipse center point x-axis
840
- * @param {number} y - ellipse center point y-axis
841
- * @param {number} w - horizontal radius of the ellipse
842
- * @param {number} h - vertical radius of the ellipse
843
- * @param {boolean} [fill=false] - also fill the shape with the current color if true
844
- */
845
- strokeEllipse(x, y, w, h, fill = false) {
846
- this.setCompositor("primitive");
847
- this.path2D.beginPath();
848
- this.path2D.ellipse(x, y, w, h, 0, 0, 360);
849
- if (fill === false) {
850
- this.currentCompositor.drawVertices(this.gl.LINES, this.path2D.points);
851
- } else {
852
- this.currentCompositor.drawVertices(this.gl.TRIANGLES, this.path2D.triangulatePath());
853
- }
854
- }
855
-
856
- /**
857
- * Fill an ellipse at the specified coordinates with given radius
858
- * @param {number} x - ellipse center point x-axis
859
- * @param {number} y - ellipse center point y-axis
860
- * @param {number} w - horizontal radius of the ellipse
861
- * @param {number} h - vertical radius of the ellipse
862
- */
863
- fillEllipse(x, y, w, h) {
864
- this.strokeEllipse(x, y, w, h, false);
865
- }
866
-
867
- /**
868
- * Stroke a line of the given two points
869
- * @param {number} startX - the start x coordinate
870
- * @param {number} startY - the start y coordinate
871
- * @param {number} endX - the end x coordinate
872
- * @param {number} endY - the end y coordinate
873
- */
874
- strokeLine(startX, startY, endX, endY) {
875
- this.setCompositor("primitive");
876
- if (this.lineWidth === 1) {
877
- this.path2D.beginPath();
878
- this.path2D.moveTo(startX, startY);
879
- this.path2D.lineTo(endX, endY);
880
- this.currentCompositor.drawVertices(this.gl.LINES, this.path2D.points);
881
- } else if (this.lineWidth > 1) {
882
- const halfWidth = this.lineWidth / 2;
883
- const angle = Math.atan2(endY - startY, endX - startX);
884
- const dx = Math.sin(angle) * halfWidth;
885
- const dy = Math.cos(angle) * halfWidth;
886
- const x1 = startX - dx;
887
- const y1 = startY + dy;
888
- const x2 = startX + dx;
889
- const y2 = startY - dy;
890
- const x3 = endX + dx;
891
- const y3 = endY - dy;
892
- const x4 = endX - dx;
893
- const y4 = endY + dy;
894
-
895
- this.path2D.beginPath();
896
- this.path2D.moveTo(x1, y1);
897
- this.path2D.lineTo(x2, y2);
898
- this.path2D.lineTo(x3, y3);
899
- this.path2D.lineTo(x4, y4);
900
- this.path2D.closePath();
901
- // draw all triangles
902
- this.currentCompositor.drawVertices(this.gl.TRIANGLES, this.path2D.triangulatePath());
903
- }
904
- }
905
-
906
-
907
- /**
908
- * Fill a line of the given two points
909
- * @param {number} startX - the start x coordinate
910
- * @param {number} startY - the start y coordinate
911
- * @param {number} endX - the end x coordinate
912
- * @param {number} endY - the end y coordinate
913
- */
914
- fillLine(startX, startY, endX, endY) {
915
- this.strokeLine(startX, startY, endX, endY);
916
- }
917
-
918
- /**
919
- * Stroke a me.Polygon on the screen with a specified color
920
- * @param {Polygon} poly - the shape to draw
921
- * @param {boolean} [fill=false] - also fill the shape with the current color if true
922
- */
923
- strokePolygon(poly, fill = false) {
924
- const points = poly.points;
925
- const len = points.length;
926
-
927
- this.setCompositor("primitive");
928
-
929
- this.translate(poly.pos.x, poly.pos.y);
930
-
931
- this.path2D.beginPath();
932
- for (let i = 0; i < len - 1; i++) {
933
- const curPoint = points[i];
934
- const nextPoint = points[i + 1];
935
- this.path2D.moveTo(curPoint.x, curPoint.y);
936
- this.path2D.lineTo(nextPoint.x, nextPoint.y);
937
- }
938
- this.path2D.closePath();
939
-
940
- if (fill === false) {
941
- this.currentCompositor.drawVertices(this.gl.LINES, this.path2D.points);
942
- } else {
943
- // draw all triangles
944
- this.currentCompositor.drawVertices(this.gl.TRIANGLES, this.path2D.triangulatePath());
945
- }
946
-
947
- this.translate(-poly.pos.x, -poly.pos.y);
948
- }
949
-
950
- /**
951
- * Fill a me.Polygon on the screen
952
- * @param {Polygon} poly - the shape to draw
953
- */
954
- fillPolygon(poly) {
955
- this.strokePolygon(poly, true);
956
- }
957
-
958
- /**
959
- * Draw a stroke rectangle at the specified coordinates
960
- * @param {number} x - x axis of the coordinate for the rectangle starting point.
961
- * @param {number} y - y axis of the coordinate for the rectangle starting point.
962
- * @param {number} width - The rectangle's width.
963
- * @param {number} height - The rectangle's height.
964
- * @param {boolean} [fill=false] - also fill the shape with the current color if true
965
- */
966
- strokeRect(x, y, width, height, fill = false) {
967
- this.setCompositor("primitive");
968
- this.path2D.beginPath();
969
- this.path2D.rect(x, y, width, height);
970
- if (fill === false) {
971
- this.currentCompositor.drawVertices(this.gl.LINES, this.path2D.points);
972
- } else {
973
- this.currentCompositor.drawVertices(this.gl.TRIANGLES, this.path2D.triangulatePath());
974
- }
975
- }
976
-
977
- /**
978
- * Draw a filled rectangle at the specified coordinates
979
- * @param {number} x - x axis of the coordinate for the rectangle starting point.
980
- * @param {number} y - y axis of the coordinate for the rectangle starting point.
981
- * @param {number} width - The rectangle's width.
982
- * @param {number} height - The rectangle's height.
983
- */
984
- fillRect(x, y, width, height) {
985
- this.strokeRect(x, y, width, height, true);
986
- }
987
-
988
- /**
989
- * Stroke a rounded rectangle at the specified coordinates
990
- * @param {number} x - x axis of the coordinate for the rounded rectangle starting point.
991
- * @param {number} y - y axis of the coordinate for the rounded rectangle starting point.
992
- * @param {number} width - The rounded rectangle's width.
993
- * @param {number} height - The rounded rectangle's height.
994
- * @param {number} radius - The rounded corner's radius.
995
- * @param {boolean} [fill=false] - also fill the shape with the current color if true
996
- */
997
- strokeRoundRect(x, y, width, height, radius, fill = false) {
998
- this.setCompositor("primitive");
999
- this.path2D.beginPath();
1000
- this.path2D.roundRect(x, y, width, height, radius);
1001
- if (fill === false) {
1002
- this.currentCompositor.drawVertices(this.gl.LINES, this.path2D.points);
1003
- } else {
1004
- this.currentCompositor.drawVertices(this.gl.TRIANGLES, this.path2D.triangulatePath());
1005
- }
1006
- }
1007
-
1008
- /**
1009
- * Draw a rounded filled rectangle at the specified coordinates
1010
- * @param {number} x - x axis of the coordinate for the rounded rectangle starting point.
1011
- * @param {number} y - y axis of the coordinate for the rounded rectangle starting point.
1012
- * @param {number} width - The rounded rectangle's width.
1013
- * @param {number} height - The rounded rectangle's height.
1014
- * @param {number} radius - The rounded corner's radius.
1015
- */
1016
- fillRoundRect(x, y, width, height, radius) {
1017
- this.strokeRoundRect(x, y, width, height, radius, true);
1018
- }
1019
-
1020
- /**
1021
- * Stroke a Point at the specified coordinates
1022
- * @param {number} x - x axis of the coordinate for the point.
1023
- * @param {number} y - y axis of the coordinate for the point.
1024
- */
1025
- strokePoint(x, y) {
1026
- this.strokeLine(x, y, x + 1, y + 1);
1027
- }
1028
-
1029
- /**
1030
- * Draw a a point at the specified coordinates
1031
- * @param {number} x - x axis of the coordinate for the point.
1032
- * @param {number} y - y axis of the coordinate for the point.
1033
- */
1034
- fillPoint(x, y) {
1035
- this.strokePoint(x, y);
1036
- }
1037
-
1038
- /**
1039
- * Reset (overrides) the renderer transformation matrix to the
1040
- * identity one, and then apply the given transformation matrix.
1041
- * @param {Matrix2d|number} a - a matrix2d to transform by, or a the a component to multiply the current matrix by
1042
- * @param {number} b - the b component to multiply the current matrix by
1043
- * @param {number} c - the c component to multiply the current matrix by
1044
- * @param {number} d - the d component to multiply the current matrix by
1045
- * @param {number} e - the e component to multiply the current matrix by
1046
- * @param {number} f - the f component to multiply the current matrix by
1047
- */
1048
- setTransform(a, b, c, d, e, f) {
1049
- this.resetTransform();
1050
- this.transform(a, b, c, d, e, f);
1051
- }
1052
-
1053
- /**
1054
- * Multiply given matrix into the renderer tranformation matrix
1055
- * @see {@link WebGLRenderer.setTransform} which will reset the current transform matrix prior to performing the new transformation
1056
- * @param {Matrix2d|number} a - a matrix2d to transform by, or a the a component to multiply the current matrix by
1057
- * @param {number} b - the b component to multiply the current matrix by
1058
- * @param {number} c - the c component to multiply the current matrix by
1059
- * @param {number} d - the d component to multiply the current matrix by
1060
- * @param {number} e - the e component to multiply the current matrix by
1061
- * @param {number} f - the f component to multiply the current matrix by
1062
- */
1063
- transform(a, b, c, d, e, f) {
1064
- if (typeof a === "object") {
1065
- this.currentTransform.multiply(a);
1066
- } else {
1067
- // indivudual component
1068
- this.currentTransform.transform(a, b, c, d, e, f);
1069
- }
1070
- if (this.settings.subPixel === false) {
1071
- // snap position values to pixel grid
1072
- let a = this.currentTransform.toArray();
1073
- a[6] |= 0;
1074
- a[7] |= 0;
1075
- }
1076
- }
1077
-
1078
- /**
1079
- * adds a translation transformation to the current matrix.
1080
- * @param {number} x - Distance to move in the horizontal direction. Positive values are to the right, and negative to the left.
1081
- * @param {number} y - Distance to move in the vertical direction. Positive values are down, and negative are up.
1082
- */
1083
- translate(x, y) {
1084
- let currentTransform = this.currentTransform;
1085
- currentTransform.translate(x, y);
1086
- if (this.settings.subPixel === false) {
1087
- // snap position values to pixel grid
1088
- let a = currentTransform.toArray();
1089
- a[6] |= 0;
1090
- a[7] |= 0;
1091
- }
1092
- }
1093
-
1094
- /**
1095
- * clip the given region from the original canvas. Once a region is clipped,
1096
- * all future drawing will be limited to the clipped region.
1097
- * You can however save the current region using the save(),
1098
- * and restore it (with the restore() method) any time in the future.
1099
- * (<u>this is an experimental feature !</u>)
1100
- * @param {number} x - x axis of the coordinate for the upper-left corner of the rectangle to start clipping from.
1101
- * @param {number} y - y axis of the coordinate for the upper-left corner of the rectangle to start clipping from.
1102
- * @param {number} width - the width of the rectangle to start clipping from.
1103
- * @param {number} height - the height of the rectangle to start clipping from.
1104
- */
1105
- clipRect(x, y, width, height) {
1106
- let canvas = this.getCanvas();
1107
- let gl = this.gl;
1108
- // if requested box is different from the current canvas size
1109
- if (x !== 0 || y !== 0 || width !== canvas.width || height !== canvas.height) {
1110
- let currentScissor = this.currentScissor;
1111
- if (gl.isEnabled(gl.SCISSOR_TEST)) {
1112
- // if same as the current scissor box do nothing
1113
- if (currentScissor[0] === x && currentScissor[1] === y &&
1114
- currentScissor[2] === width && currentScissor[3] === height) {
1115
- return;
1116
- }
1117
- }
1118
- // flush the compositor
1119
- this.flush();
1120
- // turn on scissor test
1121
- gl.enable(this.gl.SCISSOR_TEST);
1122
- // set the scissor rectangle (note : coordinates are left/bottom)
1123
- gl.scissor(
1124
- // scissor does not account for currentTransform, so manually adjust
1125
- x + this.currentTransform.tx,
1126
- canvas.height - height - y - this.currentTransform.ty,
1127
- width,
1128
- height
1129
- );
1130
- // save the new currentScissor box
1131
- currentScissor[0] = x;
1132
- currentScissor[1] = y;
1133
- currentScissor[2] = width;
1134
- currentScissor[3] = height;
1135
- } else {
1136
- // turn off scissor test
1137
- gl.disable(gl.SCISSOR_TEST);
1138
- }
1139
- }
1140
-
1141
- /**
1142
- * A mask limits rendering elements to the shape and position of the given mask object.
1143
- * If the drawing or rendering area is larger than the mask, only the intersecting part of the renderable will be visible.
1144
- * (Note Mask are not preserved through renderer context save and restore and need so be manually cleared)
1145
- * @see CanvasRenderer#clearMask
1146
- * @param {Rect|RoundRect|Polygon|Line|Ellipse} [mask] - a shape defining the mask to be applied
1147
- * @param {boolean} [invert=false] - either the given shape should define what is visible (default) or the opposite
1148
- */
1149
- setMask(mask, invert = false) {
1150
- let gl = this.gl;
1151
-
1152
- // flush the compositor
1153
- this.flush();
1154
-
1155
- if (this.maskLevel === 0) {
1156
- // Enable and setup GL state to write to stencil buffer
1157
- gl.enable(gl.STENCIL_TEST);
1158
- gl.clear(gl.STENCIL_BUFFER_BIT);
1159
- }
1160
-
1161
- this.maskLevel++;
1162
-
1163
- gl.colorMask(false, false, false, false);
1164
- gl.stencilFunc(gl.EQUAL, this.maskLevel, 1);
1165
- gl.stencilOp(gl.REPLACE, gl.REPLACE, gl.REPLACE);
1166
-
1167
-
1168
- // fill the given mask shape
1169
- this.fill(mask);
1170
-
1171
- // flush the compositor
1172
- this.flush();
1173
-
1174
- gl.colorMask(true, true, true, true);
1175
-
1176
- // Use stencil buffer to affect next rendering object
1177
- if (invert === true) {
1178
- gl.stencilFunc(gl.EQUAL, this.maskLevel + 1, 1);
1179
- } else {
1180
- gl.stencilFunc(gl.NOTEQUAL, this.maskLevel + 1, 1);
1181
- }
1182
- gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
1183
- }
1184
-
1185
- /**
1186
- * disable (remove) the rendering mask set through setMask.
1187
- * @see WebGLRenderer#setMask
1188
- */
1189
- clearMask() {
1190
- if (this.maskLevel > 0) {
1191
- // flush the compositor
1192
- this.flush();
1193
- this.maskLevel = 0;
1194
- this.gl.disable(this.gl.STENCIL_TEST);
1195
- }
1196
- }
1197
- }
1198
-
1199
- export { WebGLRenderer as default };