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
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -39,11 +39,8 @@ class RoundRect extends Rect {
39
39
 
40
40
  /**
41
41
  * the radius of the rounded corner
42
- * @public
43
42
  * @type {number}
44
43
  * @default 20
45
- * @name radius
46
- * @memberof RoundRect
47
44
  */
48
45
  get radius() {
49
46
  return this._radius;
@@ -61,8 +58,6 @@ class RoundRect extends Rect {
61
58
 
62
59
  /**
63
60
  * copy the position, size and radius of the given rounded rectangle into this one
64
- * @name copy
65
- * @memberof RoundRect
66
61
  * @param {RoundRect} rrect - source rounded rectangle
67
62
  * @returns {RoundRect} new rectangle
68
63
  */
@@ -73,38 +68,38 @@ class RoundRect extends Rect {
73
68
  }
74
69
 
75
70
  /**
76
- * Returns true if the rounded rectangle contains the given point
77
- * @name contains
78
- * @memberof RoundRect
79
- * @method
80
- * @param {number} x - x coordinate
81
- * @param {number} y - y coordinate
82
- * @returns {boolean} true if contains
83
- */
84
-
85
- /**
86
- * Returns true if the rounded rectangle contains the given point
87
- * @name contains
88
- * @memberof RoundRect
89
- * @param {Vector2d} point
90
- * @returns {boolean} true if contains
71
+ * Returns true if the rounded rectangle contains the given point or rectangle
72
+ * @param {number|Vector2d|Rect} x - x coordinate or a vector point, or a Rect to test
73
+ * @param {number} [y] - y coordinate
74
+ * @returns {boolean} True if the rounded rectangle contain the given point or rectangle, otherwise false
75
+ * @example
76
+ * if (rect.contains(10, 10)) {
77
+ * // do something
78
+ * }
79
+ * // or
80
+ * if (rect.contains(myVector2d)) {
81
+ * // do something
82
+ * }
83
+ * if (rect.contains(myRect)) {
84
+ * // do something
85
+ * }
91
86
  */
92
87
  contains() {
93
88
  let arg0 = arguments[0];
94
89
  let _x, _y;
95
90
  if (arguments.length === 2) {
96
- // x, y
97
- _x = arg0;
98
- _y = arguments[1];
99
- } else {
100
- if (arg0 instanceof Rect) {
101
- // good enough
102
- return super.contains(arg0);
103
- } else {
104
- // vector
91
+ // x, y
92
+ _x = arg0;
93
+ _y = arguments[1];
94
+ } else {
95
+ if ((typeof arg0.radius === "undefined") && (typeof arg0.bottom === "number")) {
96
+ // it's a rect
97
+ return super.contains(arg0);
98
+ } else {
99
+ // else a vector or point
105
100
  _x = arg0.x;
106
101
  _y = arg0.y;
107
- }
102
+ }
108
103
  }
109
104
 
110
105
  // check whether point is outside the bounding box
@@ -144,8 +139,6 @@ class RoundRect extends Rect {
144
139
 
145
140
  /**
146
141
  * check if this RoundRect is identical to the specified one
147
- * @name equals
148
- * @memberof RoundRect
149
142
  * @param {RoundRect} rrect
150
143
  * @returns {boolean} true if equals
151
144
  */
@@ -155,8 +148,6 @@ class RoundRect extends Rect {
155
148
 
156
149
  /**
157
150
  * clone this RoundRect
158
- * @name clone
159
- * @memberof RoundRect
160
151
  * @returns {RoundRect} new RoundRect
161
152
  */
162
153
  clone() {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -42,9 +42,9 @@ export { default as UISpriteElement } from './renderable/ui/uispriteelement.js';
42
42
  import Collectable from './renderable/collectable.js';
43
43
  import Trigger from './renderable/trigger.js';
44
44
  import Light2d from './renderable/light2d.js';
45
- import Text from './text/text.js';
46
- import BitmapText from './text/bitmaptext.js';
47
- import BitmapTextData from './text/bitmaptextdata.js';
45
+ import Text from './renderable/text/text.js';
46
+ import BitmapText from './renderable/text/bitmaptext.js';
47
+ import BitmapTextData from './renderable/text/bitmaptextdata.js';
48
48
  export { Draggable } from './renderable/draggable.js';
49
49
  export { DropTarget } from './renderable/dragndrop.js';
50
50
  export { default as TMXRenderer } from './level/tiled/renderer/TMXRenderer.js';
@@ -112,7 +112,7 @@ import { initKeyboardEvent } from './input/keyboard.js';
112
112
  * @name version
113
113
  * @type {string}
114
114
  */
115
- const version = "15.2.1";
115
+ const version = "15.4.0";
116
116
 
117
117
  /**
118
118
  * a flag indicating that melonJS is fully initialized
@@ -232,7 +232,7 @@ function boot() {
232
232
  // call the library init function when ready
233
233
  onReady(() => {
234
234
  {
235
- boot();
235
+ boot();
236
236
  }
237
237
  });
238
238
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -102,14 +102,14 @@ let keyUpEvent = function (e, keyCode, mouseButton) {
102
102
  * PUBLIC STUFF
103
103
  */
104
104
 
105
- /**
105
+ /**
106
106
  * the default target element for keyboard events (usually the window element in which the game is running)
107
107
  * @public
108
108
  * @type {EventTarget}
109
109
  * @name keyBoardEventTarget
110
110
  * @memberof input
111
111
  */
112
- let keyBoardEventTarget = null;
112
+ let keyBoardEventTarget = null;
113
113
 
114
114
  /**
115
115
  * standard keyboard constants
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -135,7 +135,7 @@ class Pointer extends Bounds {
135
135
  */
136
136
  this.clientX = 0;
137
137
 
138
- /**
138
+ /**
139
139
  * the vertical coordinate within the application's client area at which the event occurred
140
140
  * @public
141
141
  * @type {number}
@@ -155,7 +155,7 @@ class Pointer extends Bounds {
155
155
  */
156
156
  this.movementX = 0;
157
157
 
158
- /**
158
+ /**
159
159
  * the difference in the Y coordinate of the pointer since the previous move event
160
160
  * @public
161
161
  * @type {number}
@@ -279,7 +279,7 @@ class Pointer extends Bounds {
279
279
  */
280
280
  this.gameLocalY = 0;
281
281
 
282
- /**
282
+ /**
283
283
  * The unique identifier of the contact for a touch, mouse or pen
284
284
  * @public
285
285
  * @type {number}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -165,10 +165,9 @@ function enablePointerEvent() {
165
165
  }
166
166
 
167
167
  // if time interval <= 16, disable the feature
168
- let i;
169
168
  let events = findAllActiveEvents(activeEventList, POINTER_MOVE);
170
169
  if (throttlingInterval < 17) {
171
- for (i = 0; i < events.length; i++) {
170
+ for (let i = 0; i < events.length; i++) {
172
171
  if (activeEventList.indexOf(events[i]) !== -1) {
173
172
  pointerEventTarget.addEventListener(
174
173
  events[i],
@@ -180,7 +179,7 @@ function enablePointerEvent() {
180
179
  }
181
180
  }
182
181
  else {
183
- for (i = 0; i < events.length; i++) {
182
+ for (let i = 0; i < events.length; i++) {
184
183
  if (activeEventList.indexOf(events[i]) !== -1) {
185
184
  pointerEventTarget.addEventListener(
186
185
  events[i],
@@ -490,14 +489,14 @@ function onPointerEvent(e) {
490
489
  * PUBLIC STUFF
491
490
  */
492
491
 
493
- /**
492
+ /**
494
493
  * the default target element for pointer events (usually the canvas element in which the game is rendered)
495
494
  * @public
496
495
  * @type {EventTarget}
497
496
  * @name pointerEventTarget
498
497
  * @memberof input
499
498
  */
500
- let pointerEventTarget = null;
499
+ let pointerEventTarget = null;
501
500
 
502
501
  /**
503
502
  * Pointer information (current position and size)
@@ -620,7 +619,7 @@ function unbindPointer(button) {
620
619
  // clear the event status
621
620
  pointer.bind[
622
621
  typeof(button) === "undefined" ?
623
- pointer.LEFT : button
622
+ pointer.LEFT : button
624
623
  ] = null;
625
624
  }
626
625
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -107,7 +107,7 @@ Renderer.prototype.getScreenContext = function() {
107
107
  * @deprecated since 14.0.0
108
108
  * @see UISpriteElement
109
109
  */
110
- class GUI_Object extends UISpriteElement {
110
+ class GUI_Object extends UISpriteElement {
111
111
  /**
112
112
  * @param {number} x - the x coordinate of the GUI Object
113
113
  * @param {number} y - the y coordinate of the GUI Object
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -11,7 +11,6 @@ import { applyTMXProperties, decode } from './TMXUtils.js';
11
11
  import Tile from './TMXTile.js';
12
12
  import Renderable from '../../renderable/renderable.js';
13
13
  import CanvasRenderer from '../../video/canvas/canvas_renderer.js';
14
- import { game } from '../../index.js';
15
14
 
16
15
  /**
17
16
  * Create required arrays for the given layer object
@@ -59,32 +58,13 @@ function setLayerData(layer, bounds, data) {
59
58
  }
60
59
  }
61
60
 
62
- /**
63
- * preRender a tile layer using the given renderer
64
- * @ignore
65
- */
66
- function preRenderLayer(layer, renderer) {
67
- // set everything
68
- for (let y = 0; y < layer.rows; y++) {
69
- for (let x = 0; x < layer.cols; x++) {
70
- // get the value of the gid
71
- const tile = layer.layerData[x][y];
72
- // draw the tile if defined
73
- if (tile instanceof Tile) {
74
- // add a new tile to the layer
75
- layer.getRenderer().drawTile(renderer, x, y, tile);
76
- }
77
- }
78
- }
79
- }
80
-
81
61
  /**
82
62
  * @classdesc
83
63
  * a TMX Tile Layer Object
84
64
  * Tiled QT 0.7.x format
85
65
  * @augments Renderable
86
66
  */
87
- class TMXLayer extends Renderable {
67
+ class TMXLayer extends Renderable {
88
68
  /**
89
69
  * @param {object} map - layer data in JSON format ({@link http://docs.mapeditor.org/en/stable/reference/tmx-map-format/#layer})
90
70
  * @param {object} data - layer data in JSON format ({@link http://docs.mapeditor.org/en/stable/reference/tmx-map-format/#layer})
@@ -199,11 +179,6 @@ function preRenderLayer(layer, renderer) {
199
179
  // check if we have any user-defined properties
200
180
  applyTMXProperties(this, data);
201
181
 
202
- // check for the correct rendering method
203
- if (typeof (this.preRender) === "undefined") {
204
- this.preRender = game.world.preRender;
205
- }
206
-
207
182
  // set a renderer
208
183
  this.setRenderer(map.getRenderer());
209
184
 
@@ -258,8 +233,11 @@ function preRenderLayer(layer, renderer) {
258
233
 
259
234
  this.isAnimated = this.animatedTilesets.length > 0;
260
235
 
261
- // Force pre-render off when tileset animation is used
262
- if (this.isAnimated) {
236
+ // check for the correct rendering method
237
+ if (typeof this.preRender === "undefined" && this.isAnimated === false) {
238
+ this.preRender = this.ancestor.getRootAncestor().preRender;
239
+ } else {
240
+ // Force pre-render off when tileset animation is used
263
241
  this.preRender = false;
264
242
  }
265
243
 
@@ -271,8 +249,11 @@ function preRenderLayer(layer, renderer) {
271
249
  heigth : this.height,
272
250
  transparent : true
273
251
  });
274
- preRenderLayer(this, this.canvasRenderer);
252
+ // pre render the layer on the canvas
253
+ this.getRenderer().drawTileLayer(this.canvasRenderer, this, this);
275
254
  }
255
+
256
+ this.isDirty = true;
276
257
  }
277
258
 
278
259
  // called when the layer is removed from the game world or a container
@@ -292,6 +273,7 @@ function preRenderLayer(layer, renderer) {
292
273
  */
293
274
  setRenderer(renderer) {
294
275
  this.renderer = renderer;
276
+ this.isDirty = true;
295
277
  }
296
278
 
297
279
  /**
@@ -344,6 +326,7 @@ function preRenderLayer(layer, renderer) {
344
326
  */
345
327
  setTile(tile, x, y) {
346
328
  this.layerData[x][y] = tile;
329
+ this.isDirty = true;
347
330
  return tile;
348
331
  }
349
332
 
@@ -402,6 +385,7 @@ function preRenderLayer(layer, renderer) {
402
385
  if (this.preRender) {
403
386
  this.canvasRenderer.clearRect(x * this.tilewidth, y * this.tileheight, this.tilewidth, this.tileheight);
404
387
  }
388
+ this.isDirty = true;
405
389
  }
406
390
 
407
391
  /**
@@ -409,14 +393,13 @@ function preRenderLayer(layer, renderer) {
409
393
  * @ignore
410
394
  */
411
395
  update(dt) {
396
+ let result = this.isDirty;
412
397
  if (this.isAnimated) {
413
- let result = false;
414
398
  for (let i = 0; i < this.animatedTilesets.length; i++) {
415
399
  result = this.animatedTilesets[i].update(dt) || result;
416
400
  }
417
- return result;
418
401
  }
419
- return false;
402
+ return result;
420
403
  }
421
404
 
422
405
  /**
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -216,7 +216,6 @@ class TMXObject {
216
216
  * @returns {Polygon[]|Line[]|Ellipse[]} an array of shape objects
217
217
  */
218
218
  parseTMXShapes() {
219
- let i = 0;
220
219
  let shapes = [];
221
220
 
222
221
  // add an ellipse shape
@@ -244,7 +243,7 @@ class TMXObject {
244
243
  let p = this.points;
245
244
  let p1, p2;
246
245
  let segments = p.length - 1;
247
- for (i = 0; i < segments; i++) {
246
+ for (let i = 0; i < segments; i++) {
248
247
  // clone the value before, as [i + 1]
249
248
  // is reused later by the next segment
250
249
  p1 = pool.pull("Vector2d", p[i].x, p[i].y);
@@ -271,7 +270,7 @@ class TMXObject {
271
270
 
272
271
  // Apply isometric projection
273
272
  if (this.orientation === "isometric") {
274
- for (i = 0; i < shapes.length; i++) {
273
+ for (let i = 0; i < shapes.length; i++) {
275
274
  if (typeof shapes[i].toIso === "function") {
276
275
  shapes[i].toIso();
277
276
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -15,7 +15,7 @@ import { TMX_CLEAR_BIT_MASK, TMX_FLIP_H, TMX_FLIP_V, TMX_FLIP_AD } from './const
15
15
  * a basic tile object
16
16
  * @augments Bounds
17
17
  */
18
- class Tile extends Bounds {
18
+ class Tile extends Bounds {
19
19
  /**
20
20
  * @param {number} x - x index of the Tile in the map
21
21
  * @param {number} y - y index of the Tile in the map
@@ -115,8 +115,8 @@ import { TMX_CLEAR_BIT_MASK, TMX_FLIP_H, TMX_FLIP_V, TMX_FLIP_AD } from './const
115
115
  }
116
116
  if (this.flippedY) {
117
117
  transform.scale(
118
- this.flippedAD ? -1 : 1, this.flippedAD ? 1 : -1
119
- );
118
+ this.flippedAD ? -1 : 1, this.flippedAD ? 1 : -1
119
+ );
120
120
  }
121
121
  transform.translate(-this.width / 2, -this.height / 2);
122
122
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -81,7 +81,7 @@ function readObjectGroup(map, data, z) {
81
81
  * a TMX Tile Map Object
82
82
  * Tiled QT +0.7.x format
83
83
  */
84
- class TMXTileMap {
84
+ class TMXTileMap {
85
85
  /**
86
86
  * @param {string} levelId - name of TMX map
87
87
  * @param {object} data - TMX map in JSON format
@@ -276,7 +276,7 @@ function readObjectGroup(map, data, z) {
276
276
  image : this.background_image,
277
277
  z : zOrder++
278
278
  }
279
- ));
279
+ ));
280
280
  }
281
281
 
282
282
  data.layers.forEach((layer) => {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -15,14 +15,11 @@ import { getTMX, getImage } from '../../loader/loader.js';
15
15
  * @classdesc
16
16
  * a TMX Tile Set Object
17
17
  */
18
- class TMXTileset {
18
+ class TMXTileset {
19
19
  /**
20
20
  * @param {object} tileset - tileset data in JSON format ({@link http://docs.mapeditor.org/en/stable/reference/tmx-map-format/#tileset})
21
21
  */
22
22
  constructor(tileset) {
23
- let i = 0;
24
- // first gid
25
-
26
23
  // tile properties (collidable, etc..)
27
24
  this.TileProperties = [];
28
25
 
@@ -84,7 +81,7 @@ import { getTMX, getImage } from '../../loader/loader.js';
84
81
  this._lastUpdate = 0;
85
82
 
86
83
  let tiles = tileset.tiles;
87
- for (i in tiles) {
84
+ for (let i in tiles) {
88
85
  if (tiles.hasOwnProperty(i)) {
89
86
  if ("animation" in tiles[i]) {
90
87
  this.isAnimated = true;
@@ -128,7 +125,7 @@ import { getTMX, getImage } from '../../loader/loader.js';
128
125
  // set tile properties, if any (JSON old format)
129
126
  let tileInfo = tileset.tileproperties;
130
127
  if (tileInfo) {
131
- for (i in tileInfo) {
128
+ for (let i in tileInfo) {
132
129
  if (tileInfo.hasOwnProperty(i)) {
133
130
  this.setTileProperty(+i + this.firstgid, tileInfo[i]);
134
131
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -11,7 +11,7 @@ import { TMX_CLEAR_BIT_MASK } from './constants.js';
11
11
  * @classdesc
12
12
  * an object containing all tileset
13
13
  */
14
- class TMXTilesetGroup {
14
+ class TMXTilesetGroup {
15
15
 
16
16
  constructor() {
17
17
  this.tilesets = [];