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