melonjs 15.2.1 → 15.4.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 (291) hide show
  1. package/README.md +1 -1
  2. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  3. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  5. package/dist/melonjs.mjs/_virtual/index.js +1 -1
  6. package/dist/melonjs.mjs/application/application.js +75 -23
  7. package/dist/melonjs.mjs/application/header.js +2 -2
  8. package/dist/melonjs.mjs/application/resize.js +13 -11
  9. package/dist/melonjs.mjs/application/settings.js +37 -1
  10. package/dist/melonjs.mjs/audio/audio.js +4 -6
  11. package/dist/melonjs.mjs/camera/camera2d.js +12 -14
  12. package/dist/melonjs.mjs/const.js +1 -1
  13. package/dist/melonjs.mjs/entity/entity.js +3 -4
  14. package/dist/melonjs.mjs/geometries/ellipse.js +26 -59
  15. package/dist/melonjs.mjs/geometries/line.js +18 -25
  16. package/dist/melonjs.mjs/geometries/path2d.js +16 -13
  17. package/dist/melonjs.mjs/geometries/point.js +8 -16
  18. package/dist/melonjs.mjs/geometries/poly.js +40 -97
  19. package/dist/melonjs.mjs/geometries/rectangle.js +37 -91
  20. package/dist/melonjs.mjs/geometries/roundrect.js +26 -35
  21. package/dist/melonjs.mjs/index.js +6 -6
  22. package/dist/melonjs.mjs/input/gamepad.js +1 -1
  23. package/dist/melonjs.mjs/input/input.js +1 -1
  24. package/dist/melonjs.mjs/input/keyboard.js +3 -3
  25. package/dist/melonjs.mjs/input/pointer.js +4 -4
  26. package/dist/melonjs.mjs/input/pointerevent.js +6 -7
  27. package/dist/melonjs.mjs/lang/console.js +1 -1
  28. package/dist/melonjs.mjs/lang/deprecated.js +2 -2
  29. package/dist/melonjs.mjs/level/level.js +1 -1
  30. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
  31. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +16 -33
  32. package/dist/melonjs.mjs/level/tiled/TMXObject.js +3 -4
  33. package/dist/melonjs.mjs/level/tiled/TMXTile.js +4 -4
  34. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +3 -3
  35. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +4 -7
  36. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +2 -2
  37. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +37 -47
  38. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  39. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +3 -3
  40. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +2 -2
  41. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +2 -2
  42. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
  43. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +2 -2
  44. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  45. package/dist/melonjs.mjs/loader/cache.js +1 -1
  46. package/dist/melonjs.mjs/loader/loader.js +1 -1
  47. package/dist/melonjs.mjs/loader/loadingscreen.js +1 -1
  48. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  49. package/dist/melonjs.mjs/loader/parser.js +4 -5
  50. package/dist/melonjs.mjs/loader/settings.js +1 -1
  51. package/dist/melonjs.mjs/math/color.js +5 -5
  52. package/dist/melonjs.mjs/math/math.js +1 -1
  53. package/dist/melonjs.mjs/math/matrix2.js +5 -59
  54. package/dist/melonjs.mjs/math/matrix3.js +82 -141
  55. package/dist/melonjs.mjs/math/observable_vector2.js +7 -7
  56. package/dist/melonjs.mjs/math/observable_vector3.js +5 -5
  57. package/dist/melonjs.mjs/math/vector2.js +7 -91
  58. package/dist/melonjs.mjs/math/vector3.js +6 -90
  59. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +1 -1
  60. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +1 -1
  61. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  62. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
  63. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  64. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  65. package/dist/melonjs.mjs/particles/emitter.js +2 -2
  66. package/dist/melonjs.mjs/particles/particle.js +2 -2
  67. package/dist/melonjs.mjs/particles/settings.js +1 -1
  68. package/dist/melonjs.mjs/physics/body.js +22 -20
  69. package/dist/melonjs.mjs/physics/bounds.js +27 -33
  70. package/dist/melonjs.mjs/physics/collision.js +5 -5
  71. package/dist/melonjs.mjs/physics/detector.js +10 -10
  72. package/dist/melonjs.mjs/physics/quadtree.js +5 -5
  73. package/dist/melonjs.mjs/physics/response.js +1 -1
  74. package/dist/melonjs.mjs/physics/sat.js +3 -4
  75. package/dist/melonjs.mjs/physics/world.js +6 -9
  76. package/dist/melonjs.mjs/plugin/plugin.js +3 -3
  77. package/dist/melonjs.mjs/renderable/collectable.js +2 -2
  78. package/dist/melonjs.mjs/renderable/colorlayer.js +4 -4
  79. package/dist/melonjs.mjs/renderable/container.js +25 -25
  80. package/dist/melonjs.mjs/renderable/draggable.js +1 -1
  81. package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
  82. package/dist/melonjs.mjs/renderable/imagelayer.js +4 -4
  83. package/dist/melonjs.mjs/renderable/light2d.js +3 -3
  84. package/dist/melonjs.mjs/renderable/nineslicesprite.js +2 -2
  85. package/dist/melonjs.mjs/renderable/renderable.js +31 -39
  86. package/dist/melonjs.mjs/renderable/sprite.js +3 -3
  87. package/dist/melonjs.mjs/renderable/text/bitmaptext.js +421 -0
  88. package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +195 -0
  89. package/dist/melonjs.mjs/renderable/text/glyph.js +65 -0
  90. package/dist/melonjs.mjs/renderable/text/text.js +422 -0
  91. package/dist/melonjs.mjs/renderable/text/textmetrics.js +175 -0
  92. package/dist/melonjs.mjs/renderable/text/textstyle.js +21 -0
  93. package/dist/melonjs.mjs/renderable/trigger.js +10 -10
  94. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +7 -7
  95. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +7 -7
  96. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +3 -3
  97. package/dist/melonjs.mjs/state/stage.js +13 -14
  98. package/dist/melonjs.mjs/state/state.js +4 -51
  99. package/dist/melonjs.mjs/system/device.js +51 -10
  100. package/dist/melonjs.mjs/system/dom.js +1 -1
  101. package/dist/melonjs.mjs/system/event.js +46 -2
  102. package/dist/melonjs.mjs/system/platform.js +18 -18
  103. package/dist/melonjs.mjs/system/pooling.js +10 -10
  104. package/dist/melonjs.mjs/system/save.js +1 -1
  105. package/dist/melonjs.mjs/system/timer.js +1 -1
  106. package/dist/melonjs.mjs/text/bitmaptext.js +1 -1
  107. package/dist/melonjs.mjs/text/bitmaptextdata.js +3 -6
  108. package/dist/melonjs.mjs/text/glyph.js +1 -1
  109. package/dist/melonjs.mjs/text/text.js +1 -1
  110. package/dist/melonjs.mjs/text/textmetrics.js +1 -1
  111. package/dist/melonjs.mjs/text/textstyle.js +1 -1
  112. package/dist/melonjs.mjs/tweens/easing.js +1 -1
  113. package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
  114. package/dist/melonjs.mjs/tweens/tween.js +2 -2
  115. package/dist/melonjs.mjs/utils/agent.js +1 -1
  116. package/dist/melonjs.mjs/utils/array.js +1 -1
  117. package/dist/melonjs.mjs/utils/file.js +1 -1
  118. package/dist/melonjs.mjs/utils/function.js +2 -3
  119. package/dist/melonjs.mjs/utils/string.js +1 -1
  120. package/dist/melonjs.mjs/utils/utils.js +1 -1
  121. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +5 -18
  122. package/dist/melonjs.mjs/video/renderer.js +17 -30
  123. package/dist/melonjs.mjs/video/texture/atlas.js +13 -13
  124. package/dist/melonjs.mjs/video/texture/cache.js +1 -1
  125. package/dist/melonjs.mjs/video/texture/canvas_texture.js +15 -15
  126. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  127. package/dist/melonjs.mjs/video/video.js +5 -29
  128. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +3 -3
  129. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +13 -14
  130. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +5 -5
  131. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +2 -3
  132. package/dist/melonjs.mjs/video/webgl/glshader.js +2 -2
  133. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  134. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  136. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
  137. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
  138. package/dist/melonjs.mjs/video/webgl/utils/precision.js +4 -4
  139. package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
  140. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  141. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
  142. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +62 -67
  143. package/dist/melonjs.module.js +1272 -1713
  144. package/dist/types/application/application.d.ts +32 -31
  145. package/dist/types/application/header.d.ts +2 -2
  146. package/dist/types/application/settings.d.ts +80 -16
  147. package/dist/types/audio/audio.d.ts +4 -6
  148. package/dist/types/camera/camera2d.d.ts +13 -16
  149. package/dist/types/entity/entity.d.ts +0 -1
  150. package/dist/types/geometries/ellipse.d.ts +18 -50
  151. package/dist/types/geometries/path2d.d.ts +1 -1
  152. package/dist/types/geometries/point.d.ts +5 -13
  153. package/dist/types/geometries/poly.d.ts +26 -75
  154. package/dist/types/geometries/rectangle.d.ts +12 -58
  155. package/dist/types/geometries/roundrect.d.ts +2 -11
  156. package/dist/types/index.d.ts +3 -3
  157. package/dist/types/input/gamepad.d.ts +31 -31
  158. package/dist/types/input/keyboard.d.ts +105 -105
  159. package/dist/types/input/pointer.d.ts +21 -21
  160. package/dist/types/input/pointerevent.d.ts +6 -6
  161. package/dist/types/level/tiled/TMXLayer.d.ts +1 -1
  162. package/dist/types/level/tiled/TMXUtils.d.ts +4 -6
  163. package/dist/types/math/matrix2.d.ts +9 -63
  164. package/dist/types/math/matrix3.d.ts +9 -68
  165. package/dist/types/math/observable_vector2.d.ts +2 -2
  166. package/dist/types/math/observable_vector3.d.ts +2 -2
  167. package/dist/types/math/vector2.d.ts +8 -92
  168. package/dist/types/math/vector3.d.ts +8 -92
  169. package/dist/types/particles/settings.d.ts +29 -29
  170. package/dist/types/physics/body.d.ts +10 -8
  171. package/dist/types/physics/bounds.d.ts +24 -30
  172. package/dist/types/physics/collision.d.ts +12 -12
  173. package/dist/types/physics/detector.d.ts +1 -1
  174. package/dist/types/physics/world.d.ts +4 -7
  175. package/dist/types/renderable/container.d.ts +19 -19
  176. package/dist/types/renderable/imagelayer.d.ts +6 -6
  177. package/dist/types/renderable/light2d.d.ts +7 -7
  178. package/dist/types/renderable/renderable.d.ts +10 -18
  179. package/dist/types/renderable/text/bitmaptext.d.ts +151 -0
  180. package/dist/types/renderable/text/bitmaptextdata.d.ts +35 -0
  181. package/dist/types/renderable/text/glyph.d.ts +28 -0
  182. package/dist/types/renderable/text/text.d.ts +159 -0
  183. package/dist/types/renderable/text/textmetrics.d.ts +47 -0
  184. package/dist/types/renderable/text/textstyle.d.ts +5 -0
  185. package/dist/types/renderable/ui/uibaseelement.d.ts +0 -1
  186. package/dist/types/renderable/ui/uispriteelement.d.ts +0 -1
  187. package/dist/types/renderable/ui/uitextbutton.d.ts +2 -7
  188. package/dist/types/state/stage.d.ts +3 -2
  189. package/dist/types/state/state.d.ts +11 -11
  190. package/dist/types/system/device.d.ts +16 -9
  191. package/dist/types/system/event.d.ts +40 -0
  192. package/dist/types/system/platform.d.ts +17 -17
  193. package/dist/types/utils/function.d.ts +1 -2
  194. package/dist/types/video/canvas/canvas_renderer.d.ts +0 -23
  195. package/dist/types/video/renderer.d.ts +16 -43
  196. package/dist/types/video/texture/canvas_texture.d.ts +14 -14
  197. package/dist/types/video/video.d.ts +4 -38
  198. package/dist/types/video/webgl/buffer/vertex.d.ts +2 -2
  199. package/dist/types/video/webgl/compositors/compositor.d.ts +24 -13
  200. package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +0 -1
  201. package/dist/types/video/webgl/compositors/quad_compositor.d.ts +0 -1
  202. package/dist/types/video/webgl/utils/precision.d.ts +1 -1
  203. package/dist/types/video/webgl/webgl_renderer.d.ts +48 -84
  204. package/package.json +15 -15
  205. package/src/application/application.js +73 -21
  206. package/src/application/header.js +1 -1
  207. package/src/application/resize.js +11 -9
  208. package/src/application/settings.js +36 -0
  209. package/src/audio/audio.js +3 -5
  210. package/src/camera/camera2d.js +11 -13
  211. package/src/entity/entity.js +2 -3
  212. package/src/geometries/ellipse.js +25 -58
  213. package/src/geometries/line.js +17 -24
  214. package/src/geometries/path2d.js +15 -12
  215. package/src/geometries/point.js +7 -15
  216. package/src/geometries/poly.js +39 -96
  217. package/src/geometries/rectangle.js +36 -90
  218. package/src/geometries/roundrect.js +25 -34
  219. package/src/index.js +4 -4
  220. package/src/input/keyboard.js +2 -2
  221. package/src/input/pointer.js +3 -3
  222. package/src/input/pointerevent.js +5 -6
  223. package/src/lang/deprecated.js +1 -1
  224. package/src/level/tiled/TMXLayer.js +15 -32
  225. package/src/level/tiled/TMXObject.js +2 -3
  226. package/src/level/tiled/TMXTile.js +3 -3
  227. package/src/level/tiled/TMXTileMap.js +2 -2
  228. package/src/level/tiled/TMXTileset.js +3 -6
  229. package/src/level/tiled/TMXTilesetGroup.js +1 -1
  230. package/src/level/tiled/TMXUtils.js +36 -46
  231. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -2
  232. package/src/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  233. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  234. package/src/level/tiled/renderer/TMXRenderer.js +1 -1
  235. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  236. package/src/loader/parser.js +3 -4
  237. package/src/math/color.js +4 -4
  238. package/src/math/matrix2.js +4 -58
  239. package/src/math/matrix3.js +81 -140
  240. package/src/math/observable_vector2.js +6 -6
  241. package/src/math/observable_vector3.js +4 -4
  242. package/src/math/vector2.js +6 -90
  243. package/src/math/vector3.js +5 -89
  244. package/src/particles/emitter.js +1 -1
  245. package/src/particles/particle.js +1 -1
  246. package/src/physics/body.js +21 -19
  247. package/src/physics/bounds.js +26 -32
  248. package/src/physics/collision.js +4 -4
  249. package/src/physics/detector.js +9 -9
  250. package/src/physics/quadtree.js +4 -4
  251. package/src/physics/sat.js +2 -3
  252. package/src/physics/world.js +5 -8
  253. package/src/polyfill/roundrect.js +163 -163
  254. package/src/renderable/collectable.js +1 -1
  255. package/src/renderable/colorlayer.js +3 -3
  256. package/src/renderable/container.js +24 -24
  257. package/src/renderable/imagelayer.js +3 -3
  258. package/src/renderable/light2d.js +2 -2
  259. package/src/renderable/nineslicesprite.js +1 -1
  260. package/src/renderable/renderable.js +30 -38
  261. package/src/renderable/sprite.js +2 -2
  262. package/src/{text → renderable/text}/bitmaptext.js +8 -8
  263. package/src/{text → renderable/text}/bitmaptextdata.js +4 -7
  264. package/src/{text → renderable/text}/glyph.js +1 -1
  265. package/src/{text → renderable/text}/text.js +16 -17
  266. package/src/{text → renderable/text}/textmetrics.js +2 -2
  267. package/src/renderable/trigger.js +9 -9
  268. package/src/renderable/ui/uibaseelement.js +6 -6
  269. package/src/renderable/ui/uispriteelement.js +6 -6
  270. package/src/renderable/ui/uitextbutton.js +2 -2
  271. package/src/state/stage.js +12 -13
  272. package/src/state/state.js +2 -61
  273. package/src/system/device.js +50 -9
  274. package/src/system/event.js +44 -0
  275. package/src/system/platform.js +18 -18
  276. package/src/system/pooling.js +9 -9
  277. package/src/tweens/tween.js +1 -1
  278. package/src/utils/function.js +1 -2
  279. package/src/video/canvas/canvas_renderer.js +4 -17
  280. package/src/video/renderer.js +16 -29
  281. package/src/video/texture/atlas.js +12 -12
  282. package/src/video/texture/canvas_texture.js +14 -14
  283. package/src/video/video.js +7 -28
  284. package/src/video/webgl/buffer/vertex.js +2 -2
  285. package/src/video/webgl/compositors/compositor.js +12 -13
  286. package/src/video/webgl/compositors/primitive_compositor.js +4 -4
  287. package/src/video/webgl/compositors/quad_compositor.js +1 -2
  288. package/src/video/webgl/glshader.js +1 -1
  289. package/src/video/webgl/utils/precision.js +3 -3
  290. package/src/video/webgl/webgl_renderer.js +61 -66
  291. /package/src/{text → renderable/text}/textstyle.js +0 -0
@@ -8,35 +8,14 @@ export default class Application {
8
8
  /**
9
9
  * @param {number} width - The width of the canvas viewport
10
10
  * @param {number} height - The height of the canvas viewport
11
- * @param {object} [options] - The optional video/renderer parameters.<br> (see Renderer(s) documentation for further specific options)
12
- * @param {string|HTMLElement} [options.parent=document.body] - the DOM parent element to hold the canvas in the HTML file
13
- * @param {number|Renderer} [options.renderer=AUTO] - renderer to use (CANVAS, WEBGL, AUTO), or a custom renderer class
14
- * @param {number|string} [options.scale=1.0] - enable scaling of the canvas ('auto' for automatic scaling)
15
- * @param {string} [options.scaleMethod="fit"] - screen scaling modes ('fit','fill-min','fill-max','flex','flex-width','flex-height','stretch')
16
- * @param {boolean} [options.preferWebGL1=false] - if true the renderer will only use WebGL 1
17
- * @param {boolean} [options.depthTest="sorting"] - ~Experimental~ the default method to sort object on the z axis in WebGL ("sorting", "z-buffer")
18
- * @param {string} [options.powerPreference="default"] - a hint to the user agent indicating what configuration of GPU is suitable for the WebGL context ("default", "high-performance", "low-power"). To be noted that Safari and Chrome (since version 80) both default to "low-power" to save battery life and improve the user experience on these dual-GPU machines.
19
- * @param {boolean} [options.transparent=false] - whether to allow transparent pixels in the front buffer (screen).
20
- * @param {boolean} [options.antiAlias=false] - whether to enable or not video scaling interpolation
21
- * @param {boolean} [options.consoleHeader=true] - whether to display melonJS version and basic device information in the console
11
+ * @param {Application.Settings} [options] - The optional parameters for the application and default renderer
22
12
  * @throws Will throw an exception if it fails to instantiate a renderer
23
13
  * @example
24
14
  * let my game = new Application(640, 480, {renderer: me.video.AUTO}) {
25
15
  * ....
26
16
  * }
27
17
  */
28
- constructor(width: number, height: number, options?: {
29
- parent?: string | HTMLElement | undefined;
30
- renderer?: number | Renderer;
31
- scale?: string | number | undefined;
32
- scaleMethod?: string | undefined;
33
- preferWebGL1?: boolean | undefined;
34
- depthTest?: boolean | undefined;
35
- powerPreference?: string | undefined;
36
- transparent?: boolean | undefined;
37
- antiAlias?: boolean | undefined;
38
- consoleHeader?: boolean | undefined;
39
- } | undefined);
18
+ constructor(width: number, height: number, options?: any);
40
19
  /**
41
20
  * the parent HTML element holding the main canvas of this application
42
21
  * @type {HTMLElement}
@@ -81,9 +60,30 @@ export default class Application {
81
60
  isInitialized: boolean;
82
61
  /**
83
62
  * the given settings used when creating this application
84
- * @type {Object}
63
+ * @type {object}
85
64
  */
86
- settings: Object;
65
+ settings: object;
66
+ /**
67
+ * Specify whether to pause this app when losing focus
68
+ * @type {boolean}
69
+ * @default true
70
+ * @example
71
+ * // keep the default game instance running even when loosing focus
72
+ * me.game.pauseOnBlur = false;
73
+ */
74
+ pauseOnBlur: boolean;
75
+ /**
76
+ * Specify whether to unpause this app when gaining back focus
77
+ * @type {boolean}
78
+ * @default true
79
+ */
80
+ resumeOnFocus: boolean;
81
+ /**
82
+ * Specify whether to stop this app when losing focus
83
+ * @type {boolean}
84
+ * @default false
85
+ */
86
+ stopOnBlur: boolean;
87
87
  isDirty: boolean;
88
88
  isAlwaysDirty: boolean;
89
89
  frameCounter: number;
@@ -97,8 +97,11 @@ export default class Application {
97
97
  updateAverageDelta: number;
98
98
  /**
99
99
  * init the game instance (create a physic world, update starting time, etc..)
100
+ * @param {number} width - The width of the canvas viewport
101
+ * @param {number} height - The height of the canvas viewport
102
+ * @param {Application.Settings} [options] - The optional parameters for the application and default renderer
100
103
  */
101
- init(width: any, height: any, options: any): void;
104
+ init(width: number, height: number, options?: any): void;
102
105
  /**
103
106
  * reset the game Object manager
104
107
  * destroy all current objects
@@ -128,7 +131,7 @@ export default class Application {
128
131
  updateFrameRate(): void;
129
132
  /**
130
133
  * Returns the parent HTML Element holding the main canvas of this application
131
- * @returns {HTMLElement}
134
+ * @returns {HTMLElement} the parent HTML element
132
135
  */
133
136
  getParentElement(): HTMLElement;
134
137
  /**
@@ -138,14 +141,12 @@ export default class Application {
138
141
  /**
139
142
  * update all objects related to this game active scene/stage
140
143
  * @param {number} time - current timestamp as provided by the RAF callback
141
- * @param {Stage} stage - the current stage
142
144
  */
143
- update(time: number, stage: Stage): void;
145
+ update(time: number): void;
144
146
  /**
145
147
  * draw the active scene/stage associated to this game
146
- * @param {Stage} stage - the current stage
147
148
  */
148
- draw(stage: Stage): void;
149
+ draw(): void;
149
150
  }
150
151
  import CanvasRenderer from "./../video/canvas/canvas_renderer.js";
151
152
  import World from "./../physics/world.js";
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * display information
3
- * @param {Application} game - the game application instance calling this function
3
+ * @param {Application} app - the game application instance calling this function
4
4
  */
5
- export function consoleHeader(app: any): void;
5
+ export function consoleHeader(app: Application): void;
@@ -1,18 +1,82 @@
1
1
  export namespace defaultSettings {
2
- const parent: undefined;
3
- const renderer: number;
4
- const autoScale: boolean;
5
- const scale: number;
6
- const scaleMethod: string;
7
- const transparent: boolean;
8
- const premultipliedAlpha: boolean;
9
- const blendMode: string;
10
- const antiAlias: boolean;
11
- const failIfMajorPerformanceCaveat: boolean;
12
- const subPixel: boolean;
13
- const preferWebGL1: boolean;
14
- const powerPreference: string;
15
- const verbose: boolean;
16
- const consoleHeader: boolean;
17
- const legacy: boolean;
2
+ let parent: undefined;
3
+ let renderer: number;
4
+ let autoScale: boolean;
5
+ let scale: number;
6
+ let scaleMethod: string;
7
+ let scaleTarget: undefined;
8
+ let transparent: boolean;
9
+ let premultipliedAlpha: boolean;
10
+ let blendMode: string;
11
+ let antiAlias: boolean;
12
+ let failIfMajorPerformanceCaveat: boolean;
13
+ let subPixel: boolean;
14
+ let preferWebGL1: boolean;
15
+ let powerPreference: string;
16
+ let verbose: boolean;
17
+ let consoleHeader: boolean;
18
+ let legacy: boolean;
18
19
  }
20
+ /**
21
+ * Application & Renderer Settings definition.
22
+ */
23
+ export type Settings = {
24
+ /**
25
+ * - the DOM parent element to hold the canvas in the HTML file
26
+ */
27
+ parent?: string | HTMLElement | undefined;
28
+ /**
29
+ * - renderer to use (CANVAS, WEBGL, AUTO), or a custom renderer class
30
+ */
31
+ renderer?: number | Renderer;
32
+ /**
33
+ * - enable scaling of the canvas ('auto' for automatic scaling)
34
+ */
35
+ scale?: string | number | undefined;
36
+ /**
37
+ * - screen scaling modes : <br>
38
+ * - <i><b>`fit`</b></i> : Letterboxed; content is scaled to design aspect ratio <br>
39
+ * <center><img src="images/scale-fit.png"/></center><br>
40
+ * - <i><b>`fill-min`</b></i> : Canvas is resized to fit minimum design resolution; content is scaled to design aspect ratio <br>
41
+ * <center><img src="images/scale-fill-min.png"/></center><br>
42
+ * - <i><b>`fill-max`</b></i> : Canvas is resized to fit maximum design resolution; content is scaled to design aspect ratio <br>
43
+ * <center><img src="images/scale-fill-max.png"/></center><br>
44
+ * - <i><b>`flex`</b><</i> : Canvas width & height is resized to fit; content is scaled to design aspect ratio <br>
45
+ * <center><img src="images/scale-flex.png"/></center><br>
46
+ * - <i><b>`flex-width`</b></i> : Canvas width is resized to fit; content is scaled to design aspect ratio <br>
47
+ * <center><img src="images/scale-flex-width.png"/></center><br>
48
+ * - <i><b>`flex-height`</b></i> : Canvas height is resized to fit; content is scaled to design aspect ratio <br>
49
+ * <center><img src="images/scale-flex-height.png"/></center><br>
50
+ * - <i><b>`stretch`</b></i> : Canvas is resized to fit; content is scaled to screen aspect ratio <br>
51
+ * <center><img src="images/scale-stretch.png"/></center>
52
+ */
53
+ scaleMethod?: "flex" | "fill-min" | "fill-max" | "flex-width" | "flex-height" | "stretch" | "fit" | undefined;
54
+ /**
55
+ * - the HTML Element to be used as the reference target when using automatic scaling (by default melonJS will use the parent container of the div element containing the canvas)
56
+ */
57
+ scaleTarget?: string | HTMLElement | undefined;
58
+ /**
59
+ * - if true the renderer will only use WebGL 1
60
+ */
61
+ preferWebGL1?: boolean | undefined;
62
+ /**
63
+ * - ~Experimental~ the default method to sort object on the z axis in WebGL
64
+ */
65
+ depthTest?: "sorting" | "z-buffer" | undefined;
66
+ /**
67
+ * - a hint to the user agent indicating what configuration of GPU is suitable for the WebGL context. To be noted that Safari and Chrome (since version 80) both default to "low-power" to save battery life and improve the user experience on these dual-GPU machines.
68
+ */
69
+ powerPreference?: "default" | "high-performance" | "low-power" | undefined;
70
+ /**
71
+ * - whether to allow transparent pixels in the front buffer (screen).
72
+ */
73
+ transparent?: boolean | undefined;
74
+ /**
75
+ * - whether to enable or not video scaling interpolation
76
+ */
77
+ antiAlias?: boolean | undefined;
78
+ /**
79
+ * - whether to display melonJS version and basic device information in the console
80
+ */
81
+ consoleHeader?: boolean | undefined;
82
+ };
@@ -1,14 +1,12 @@
1
1
  /**
2
2
  * Initialize and configure the audio support.<br>
3
- * melonJS supports a wide array of audio codecs that have varying browser support :
4
- * <i> ("mp3", "mpeg", opus", "ogg", "oga", "wav", "aac", "caf", "m4a", "m4b", "mp4", "weba", "webm", "dolby", "flac")</i>.<br>
5
3
  * For a maximum browser coverage the recommendation is to use at least two of them,
6
4
  * typically default to webm and then fallback to mp3 for the best balance of small filesize and high quality,
7
5
  * webm has nearly full browser coverage with a great combination of compression and quality, and mp3 will fallback gracefully for other browsers.
8
6
  * It is important to remember that melonJS selects the first compatible sound based on the list of extensions and given order passed here.
9
7
  * So if you want webm to be used before mp3, you need to put the audio format in that order.
10
8
  * @function audio.init
11
- * @param {string} [format="mp3"] - audio format to prioritize
9
+ * @param {"mp3"|"mpeg"|"opus"|"ogg"|"oga"|"wav"|"aac"|"caf"|"m4a"|"m4b"|"mp4"|"weba"|"webm"|"dolby"|"flac"} [format="mp3"] - audio format to prioritize
12
10
  * @returns {boolean} Indicates whether audio initialization was successful
13
11
  * @example
14
12
  * // initialize the "sound engine", giving "webm" as default desired audio format, and "mp3" as a fallback
@@ -17,14 +15,14 @@
17
15
  * return;
18
16
  * }
19
17
  */
20
- export function init(format?: string | undefined): boolean;
18
+ export function init(format?: "mp3" | "mpeg" | "opus" | "ogg" | "oga" | "wav" | "aac" | "caf" | "m4a" | "m4b" | "mp4" | "weba" | "webm" | "dolby" | "flac" | undefined): boolean;
21
19
  /**
22
20
  * check if the given audio format is supported
23
21
  * @function audio.hasFormat
24
- * @param {string} codec - audio format : "mp3", "mpeg", opus", "ogg", "oga", "wav", "aac", "caf", "m4a", "m4b", "mp4", "weba", "webm", "dolby", "flac"
22
+ * @param {"mp3"|"mpeg"|"opus"|"ogg"|"oga"|"wav"|"aac"|"caf"|"m4a"|"m4b"|"mp4"|"weba"|"webm"|"dolby"|"flac"} codec - the audio format to check for support
25
23
  * @returns {boolean} return true if the given audio format is supported
26
24
  */
27
- export function hasFormat(codec: string): boolean;
25
+ export function hasFormat(codec: "mp3" | "mpeg" | "opus" | "ogg" | "oga" | "wav" | "aac" | "caf" | "m4a" | "m4b" | "mp4" | "weba" | "webm" | "dolby" | "flac"): boolean;
28
26
  /**
29
27
  * check if audio (HTML5 or WebAudio) is supported
30
28
  * @function audio.hasAudio
@@ -81,7 +81,7 @@ export default class Camera2d extends Renderable {
81
81
  */
82
82
  invCurrentTransform: Matrix2d;
83
83
  offset: Vector2d;
84
- target: Vector2d | ObservableVector3d | null;
84
+ target: Vector2d | null;
85
85
  follow_axis: number;
86
86
  _shake: {
87
87
  intensity: number;
@@ -100,15 +100,15 @@ export default class Camera2d extends Renderable {
100
100
  /** @ignore */
101
101
  _updateProjectionMatrix(): void;
102
102
  /** @ignore */
103
- _followH(target: any): number;
103
+ _followH(target: any): any;
104
104
  /** @ignore */
105
- _followV(target: any): number;
105
+ _followV(target: any): any;
106
106
  /**
107
107
  * reset the camera position to specified coordinates
108
108
  * @name reset
109
109
  * @memberof Camera2d
110
- * @param {number} [x=0]
111
- * @param {number} [y=0]
110
+ * @param {number} [x=0] - initial position of the camera on the x axis
111
+ * @param {number} [y=0] - initial position of the camera on the y axis
112
112
  */
113
113
  reset(x?: number | undefined, y?: number | undefined): void;
114
114
  /**
@@ -167,8 +167,8 @@ export default class Camera2d extends Renderable {
167
167
  * @name move
168
168
  * @memberof Camera2d
169
169
  * @see Camera2d.focusOn
170
- * @param {number} x
171
- * @param {number} y
170
+ * @param {number} x - horizontal offset
171
+ * @param {number} y - vertical offset
172
172
  * @example
173
173
  * // Move the camera up by four pixels
174
174
  * me.game.viewport.move(0, -4);
@@ -245,17 +245,16 @@ export default class Camera2d extends Renderable {
245
245
  * @memberof Camera2d
246
246
  * @param {Renderable|Entity|Sprite|NineSliceSprite} obj - to be checked against
247
247
  * @param {boolean} [floating = obj.floating] - if visibility check should be done against screen coordinates
248
- * @returns {boolean}
248
+ * @returns {boolean} true if within the viewport
249
249
  */
250
250
  isVisible(obj: Renderable | Entity | Sprite | NineSliceSprite, floating?: boolean | undefined): boolean;
251
251
  /**
252
252
  * convert the given "local" (screen) coordinates into world coordinates
253
253
  * @name localToWorld
254
254
  * @memberof Camera2d
255
- * @param {number} x
256
- * @param {number} y
257
- * @param {number} [v] - an optional vector object where to set the
258
- * converted value
255
+ * @param {number} x - the x coordinate of the local point to be converted
256
+ * @param {number} y - the y coordinate of the local point to be converted
257
+ * @param {number} [v] - an optional vector object where to set the converted value
259
258
  * @returns {Vector2d}
260
259
  */
261
260
  localToWorld(x: number, y: number, v?: number | undefined): Vector2d;
@@ -265,9 +264,8 @@ export default class Camera2d extends Renderable {
265
264
  * @memberof Camera2d
266
265
  * @param {number} x
267
266
  * @param {number} y
268
- * @param {number} [v] - an optional vector object where to set the
269
- * converted value
270
- * @returns {Vector2d}
267
+ * @param {number} [v] - an optional vector object where to set the converted value
268
+ * @returns {Vector2d} a vector with the converted local coordinates
271
269
  */
272
270
  worldToLocal(x: number, y: number, v?: number | undefined): Vector2d;
273
271
  /**
@@ -285,5 +283,4 @@ import Renderable from "./../renderable/renderable.js";
285
283
  import Matrix3d from "./../math/matrix3.js";
286
284
  import Matrix2d from "./../math/matrix2.js";
287
285
  import Vector2d from "./../math/vector2.js";
288
- import ObservableVector3d from "./../math/observable_vector3.js";
289
286
  import Rect from "./../geometries/rectangle.js";
@@ -82,7 +82,6 @@ export default class Entity extends Renderable {
82
82
  * @ignore
83
83
  * @name onBodyUpdate
84
84
  * @memberof Entity
85
- * @param {Body} body - the body whose bounds to update
86
85
  */
87
86
  onBodyUpdate(): void;
88
87
  preDraw(renderer: any): void;
@@ -14,8 +14,6 @@ export default class Ellipse {
14
14
  * the center coordinates of the ellipse
15
15
  * @public
16
16
  * @type {Vector2d}
17
- * @name pos
18
- * @memberof Ellipse
19
17
  */
20
18
  public pos: Vector2d;
21
19
  /**
@@ -27,32 +25,24 @@ export default class Ellipse {
27
25
  * Maximum radius of the ellipse
28
26
  * @public
29
27
  * @type {number}
30
- * @name radius
31
- * @memberof Ellipse
32
28
  */
33
29
  public radius: number;
34
30
  /**
35
31
  * Pre-scaled radius vector for ellipse
36
32
  * @public
37
33
  * @type {Vector2d}
38
- * @name radiusV
39
- * @memberof Ellipse
40
34
  */
41
35
  public radiusV: Vector2d;
42
36
  /**
43
37
  * Radius squared, for pythagorean theorom
44
38
  * @public
45
39
  * @type {Vector2d}
46
- * @name radiusSq
47
- * @memberof Ellipse
48
40
  */
49
41
  public radiusSq: Vector2d;
50
42
  /**
51
43
  * x/y scaling ratio for ellipse
52
44
  * @public
53
45
  * @type {Vector2d}
54
- * @name ratio
55
- * @memberof Ellipse
56
46
  */
57
47
  public ratio: Vector2d;
58
48
  shapeType: string;
@@ -60,8 +50,6 @@ export default class Ellipse {
60
50
  onResetEvent(x: any, y: any, w: any, h: any): void;
61
51
  /**
62
52
  * set new value to the Ellipse shape
63
- * @name setShape
64
- * @memberof Ellipse
65
53
  * @param {number} x - the center x coordinate of the ellipse
66
54
  * @param {number} y - the center y coordinate of the ellipse
67
55
  * @param {number} w - width (diameter) of the ellipse
@@ -71,8 +59,6 @@ export default class Ellipse {
71
59
  setShape(x: number, y: number, w: number, h: number): Ellipse;
72
60
  /**
73
61
  * Rotate this Ellipse (counter-clockwise) by the specified angle (in radians).
74
- * @name rotate
75
- * @memberof Ellipse
76
62
  * @param {number} angle - The angle to rotate (in radians)
77
63
  * @param {Vector2d|ObservableVector2d} [v] - an optional point to rotate around
78
64
  * @returns {Ellipse} Reference to this object for method chaining
@@ -80,74 +66,56 @@ export default class Ellipse {
80
66
  rotate(angle: number, v?: Vector2d | ObservableVector2d): Ellipse;
81
67
  /**
82
68
  * Scale this Ellipse by the specified scalar.
83
- * @name scale
84
- * @memberof Ellipse
85
- * @param {number} x
86
- * @param {number} [y=x]
69
+ * @param {number} x - the scale factor along the x-axis
70
+ * @param {number} [y=x] - the scale factor along the y-axis
87
71
  * @returns {Ellipse} Reference to this object for method chaining
88
72
  */
89
73
  scale(x: number, y?: number | undefined): Ellipse;
90
74
  /**
91
75
  * Scale this Ellipse by the specified vector.
92
- * @name scale
93
- * @memberof Ellipse
94
76
  * @param {Vector2d} v
95
77
  * @returns {Ellipse} Reference to this object for method chaining
96
78
  */
97
79
  scaleV(v: Vector2d): Ellipse;
98
80
  /**
99
81
  * apply the given transformation matrix to this ellipse
100
- * @name transform
101
- * @memberof Ellipse
102
82
  * @param {Matrix2d} matrix - the transformation matrix
103
83
  * @returns {Polygon} Reference to this object for method chaining
104
84
  */
105
85
  transform(matrix: Matrix2d): Polygon;
106
86
  /**
107
87
  * translate the circle/ellipse by the specified offset
108
- * @name translate
109
- * @memberof Ellipse
110
- * @method
111
- * @param {number} x - x offset
112
- * @param {number} y - y offset
113
- * @returns {Ellipse} this ellipse
114
- */
115
- /**
116
- * translate the circle/ellipse by the specified vector
117
- * @name translate
118
- * @memberof Ellipse
119
- * @param {Vector2d} v - vector offset
88
+ * @param {number|Vector2d} x - x coordinate or a vector point to translate by
89
+ * @param {number} [y] - y offset
120
90
  * @returns {Ellipse} this ellipse
91
+ * @example
92
+ * ellipse.translate(10, 10);
93
+ * // or
94
+ * ellipse.translate(myVector2d);
121
95
  */
122
96
  translate(...args: any[]): Ellipse;
123
97
  /**
124
98
  * check if this circle/ellipse contains the specified point
125
- * @name contains
126
- * @method
127
- * @memberof Ellipse
128
- * @param {Vector2d} point
129
- * @returns {boolean} true if contains
130
- */
131
- /**
132
- * check if this circle/ellipse contains the specified point
133
- * @name contains
134
- * @memberof Ellipse
135
- * @param {number} x - x coordinate
136
- * @param {number} y - y coordinate
99
+ * @param {number|Vector2d} x - x coordinate or a vector point to check
100
+ * @param {number} [y] - y coordinate
137
101
  * @returns {boolean} true if contains
102
+ * @example
103
+ * if (circle.contains(10, 10)) {
104
+ * // do something
105
+ * }
106
+ * // or
107
+ * if (circle.contains(myVector2d)) {
108
+ * // do something
109
+ * }
138
110
  */
139
111
  contains(...args: any[]): boolean;
140
112
  /**
141
113
  * returns the bounding box for this shape, the smallest Rectangle object completely containing this shape.
142
- * @name getBounds
143
- * @memberof Ellipse
144
114
  * @returns {Bounds} this shape bounding box Rectangle object
145
115
  */
146
116
  getBounds(): Bounds;
147
117
  /**
148
118
  * clone this Ellipse
149
- * @name clone
150
- * @memberof Ellipse
151
119
  * @returns {Ellipse} new Ellipse
152
120
  */
153
121
  clone(): Ellipse;
@@ -27,7 +27,7 @@ export default class Path2D {
27
27
  closePath(): void;
28
28
  /**
29
29
  * triangulate the shape defined by this path into an array of triangles
30
- * @returns {Point[]}
30
+ * @returns {Point[]} an array of vertices representing the triangulated path or shape
31
31
  */
32
32
  triangulatePath(): Point[];
33
33
  /**
@@ -6,13 +6,13 @@ export default class Point {
6
6
  constructor(x?: number, y?: number);
7
7
  /**
8
8
  * the position of the point on the horizontal axis
9
- * @type {Number}
9
+ * @type {number}
10
10
  * @default 0
11
11
  */
12
12
  x: number;
13
13
  /**
14
14
  * the position of the point on the vertical axis
15
- * @type {Number}
15
+ * @type {number}
16
16
  * @default 0
17
17
  */
18
18
  y: number;
@@ -26,17 +26,9 @@ export default class Point {
26
26
  */
27
27
  set(x?: number, y?: number): Point;
28
28
  /**
29
- * return true if the two points are the same
30
- * @name equals
31
- * @memberof Point
32
- * @method
33
- * @param {Point} point
34
- * @returns {boolean}
35
- */
36
- /**
37
- * return true if this point is equal to the given values
38
- * @param {number} x
39
- * @param {number} y
29
+ * return true if this point is equal to the given point
30
+ * @param {number|Point|Vector2d} x
31
+ * @param {number} [y]
40
32
  * @returns {boolean}
41
33
  */
42
34
  equals(...args: any[]): boolean;