melonjs 15.3.0 → 15.4.1

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 (287) hide show
  1. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  2. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  3. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/index.js +1 -1
  5. package/dist/melonjs.mjs/application/application.js +53 -5
  6. package/dist/melonjs.mjs/application/header.js +2 -2
  7. package/dist/melonjs.mjs/application/resize.js +4 -8
  8. package/dist/melonjs.mjs/application/settings.js +5 -5
  9. package/dist/melonjs.mjs/audio/audio.js +4 -6
  10. package/dist/melonjs.mjs/camera/camera2d.js +12 -14
  11. package/dist/melonjs.mjs/const.js +1 -1
  12. package/dist/melonjs.mjs/entity/entity.js +3 -4
  13. package/dist/melonjs.mjs/geometries/ellipse.js +26 -59
  14. package/dist/melonjs.mjs/geometries/line.js +18 -25
  15. package/dist/melonjs.mjs/geometries/path2d.js +16 -13
  16. package/dist/melonjs.mjs/geometries/point.js +8 -16
  17. package/dist/melonjs.mjs/geometries/poly.js +40 -97
  18. package/dist/melonjs.mjs/geometries/rectangle.js +37 -91
  19. package/dist/melonjs.mjs/geometries/roundrect.js +26 -35
  20. package/dist/melonjs.mjs/index.js +6 -6
  21. package/dist/melonjs.mjs/input/gamepad.js +1 -1
  22. package/dist/melonjs.mjs/input/input.js +1 -1
  23. package/dist/melonjs.mjs/input/keyboard.js +3 -3
  24. package/dist/melonjs.mjs/input/pointer.js +4 -4
  25. package/dist/melonjs.mjs/input/pointerevent.js +6 -7
  26. package/dist/melonjs.mjs/lang/console.js +1 -1
  27. package/dist/melonjs.mjs/lang/deprecated.js +2 -2
  28. package/dist/melonjs.mjs/level/level.js +1 -1
  29. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
  30. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +16 -33
  31. package/dist/melonjs.mjs/level/tiled/TMXObject.js +3 -4
  32. package/dist/melonjs.mjs/level/tiled/TMXTile.js +4 -4
  33. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +3 -3
  34. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +4 -7
  35. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +2 -2
  36. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +26 -29
  37. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  38. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +3 -3
  39. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +2 -2
  40. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +2 -2
  41. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
  42. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +2 -2
  43. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  44. package/dist/melonjs.mjs/loader/cache.js +1 -1
  45. package/dist/melonjs.mjs/loader/loader.js +1 -1
  46. package/dist/melonjs.mjs/loader/loadingscreen.js +1 -1
  47. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  48. package/dist/melonjs.mjs/loader/parser.js +4 -5
  49. package/dist/melonjs.mjs/loader/settings.js +1 -1
  50. package/dist/melonjs.mjs/math/color.js +2 -2
  51. package/dist/melonjs.mjs/math/math.js +1 -1
  52. package/dist/melonjs.mjs/math/matrix2.js +5 -59
  53. package/dist/melonjs.mjs/math/matrix3.js +82 -141
  54. package/dist/melonjs.mjs/math/observable_vector2.js +7 -7
  55. package/dist/melonjs.mjs/math/observable_vector3.js +5 -5
  56. package/dist/melonjs.mjs/math/vector2.js +7 -91
  57. package/dist/melonjs.mjs/math/vector3.js +6 -90
  58. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +1 -1
  59. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +1 -1
  60. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  61. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
  62. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  63. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  64. package/dist/melonjs.mjs/particles/emitter.js +2 -2
  65. package/dist/melonjs.mjs/particles/particle.js +2 -2
  66. package/dist/melonjs.mjs/particles/settings.js +1 -1
  67. package/dist/melonjs.mjs/physics/body.js +22 -20
  68. package/dist/melonjs.mjs/physics/bounds.js +27 -33
  69. package/dist/melonjs.mjs/physics/collision.js +5 -5
  70. package/dist/melonjs.mjs/physics/detector.js +10 -10
  71. package/dist/melonjs.mjs/physics/quadtree.js +5 -5
  72. package/dist/melonjs.mjs/physics/response.js +1 -1
  73. package/dist/melonjs.mjs/physics/sat.js +3 -4
  74. package/dist/melonjs.mjs/physics/world.js +6 -9
  75. package/dist/melonjs.mjs/plugin/plugin.js +3 -3
  76. package/dist/melonjs.mjs/renderable/collectable.js +2 -2
  77. package/dist/melonjs.mjs/renderable/colorlayer.js +4 -4
  78. package/dist/melonjs.mjs/renderable/container.js +25 -25
  79. package/dist/melonjs.mjs/renderable/draggable.js +1 -1
  80. package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
  81. package/dist/melonjs.mjs/renderable/imagelayer.js +4 -4
  82. package/dist/melonjs.mjs/renderable/light2d.js +3 -3
  83. package/dist/melonjs.mjs/renderable/nineslicesprite.js +2 -2
  84. package/dist/melonjs.mjs/renderable/renderable.js +26 -26
  85. package/dist/melonjs.mjs/renderable/sprite.js +3 -3
  86. package/dist/melonjs.mjs/renderable/text/bitmaptext.js +421 -0
  87. package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +195 -0
  88. package/dist/melonjs.mjs/renderable/text/glyph.js +65 -0
  89. package/dist/melonjs.mjs/renderable/text/text.js +422 -0
  90. package/dist/melonjs.mjs/renderable/text/textmetrics.js +175 -0
  91. package/dist/melonjs.mjs/renderable/text/textstyle.js +21 -0
  92. package/dist/melonjs.mjs/renderable/trigger.js +10 -10
  93. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +7 -7
  94. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +7 -7
  95. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +3 -3
  96. package/dist/melonjs.mjs/state/stage.js +2 -2
  97. package/dist/melonjs.mjs/state/state.js +1 -38
  98. package/dist/melonjs.mjs/system/device.js +49 -10
  99. package/dist/melonjs.mjs/system/dom.js +1 -1
  100. package/dist/melonjs.mjs/system/event.js +24 -2
  101. package/dist/melonjs.mjs/system/platform.js +18 -18
  102. package/dist/melonjs.mjs/system/pooling.js +10 -10
  103. package/dist/melonjs.mjs/system/save.js +1 -1
  104. package/dist/melonjs.mjs/system/timer.js +1 -1
  105. package/dist/melonjs.mjs/text/bitmaptext.js +1 -1
  106. package/dist/melonjs.mjs/text/bitmaptextdata.js +3 -6
  107. package/dist/melonjs.mjs/text/glyph.js +1 -1
  108. package/dist/melonjs.mjs/text/text.js +1 -1
  109. package/dist/melonjs.mjs/text/textmetrics.js +1 -1
  110. package/dist/melonjs.mjs/text/textstyle.js +1 -1
  111. package/dist/melonjs.mjs/tweens/easing.js +1 -1
  112. package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
  113. package/dist/melonjs.mjs/tweens/tween.js +2 -2
  114. package/dist/melonjs.mjs/utils/agent.js +1 -1
  115. package/dist/melonjs.mjs/utils/array.js +1 -1
  116. package/dist/melonjs.mjs/utils/file.js +1 -1
  117. package/dist/melonjs.mjs/utils/function.js +2 -3
  118. package/dist/melonjs.mjs/utils/string.js +1 -1
  119. package/dist/melonjs.mjs/utils/utils.js +1 -1
  120. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +3 -7
  121. package/dist/melonjs.mjs/video/renderer.js +16 -16
  122. package/dist/melonjs.mjs/video/texture/atlas.js +13 -13
  123. package/dist/melonjs.mjs/video/texture/cache.js +1 -1
  124. package/dist/melonjs.mjs/video/texture/canvas_texture.js +15 -15
  125. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  126. package/dist/melonjs.mjs/video/video.js +4 -4
  127. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +3 -3
  128. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +13 -14
  129. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +5 -5
  130. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +2 -3
  131. package/dist/melonjs.mjs/video/webgl/glshader.js +2 -2
  132. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  133. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
  134. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
  136. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
  137. package/dist/melonjs.mjs/video/webgl/utils/precision.js +4 -4
  138. package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
  139. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  140. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
  141. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +50 -52
  142. package/dist/melonjs.module.js +1137 -1576
  143. package/dist/types/application/application.d.ts +28 -4
  144. package/dist/types/application/header.d.ts +2 -2
  145. package/dist/types/application/settings.d.ts +23 -23
  146. package/dist/types/audio/audio.d.ts +3 -5
  147. package/dist/types/camera/camera2d.d.ts +13 -16
  148. package/dist/types/entity/entity.d.ts +0 -1
  149. package/dist/types/geometries/ellipse.d.ts +18 -50
  150. package/dist/types/geometries/path2d.d.ts +1 -1
  151. package/dist/types/geometries/point.d.ts +5 -13
  152. package/dist/types/geometries/poly.d.ts +26 -75
  153. package/dist/types/geometries/rectangle.d.ts +12 -58
  154. package/dist/types/geometries/roundrect.d.ts +2 -11
  155. package/dist/types/index.d.ts +3 -3
  156. package/dist/types/input/gamepad.d.ts +31 -31
  157. package/dist/types/input/keyboard.d.ts +105 -105
  158. package/dist/types/input/pointer.d.ts +21 -21
  159. package/dist/types/input/pointerevent.d.ts +6 -6
  160. package/dist/types/level/tiled/TMXLayer.d.ts +1 -1
  161. package/dist/types/math/matrix2.d.ts +9 -63
  162. package/dist/types/math/matrix3.d.ts +9 -68
  163. package/dist/types/math/observable_vector2.d.ts +2 -2
  164. package/dist/types/math/observable_vector3.d.ts +2 -2
  165. package/dist/types/math/vector2.d.ts +8 -92
  166. package/dist/types/math/vector3.d.ts +8 -92
  167. package/dist/types/particles/settings.d.ts +29 -29
  168. package/dist/types/physics/body.d.ts +10 -8
  169. package/dist/types/physics/bounds.d.ts +24 -30
  170. package/dist/types/physics/collision.d.ts +12 -12
  171. package/dist/types/physics/detector.d.ts +1 -1
  172. package/dist/types/physics/world.d.ts +4 -7
  173. package/dist/types/renderable/container.d.ts +19 -19
  174. package/dist/types/renderable/imagelayer.d.ts +6 -6
  175. package/dist/types/renderable/light2d.d.ts +7 -7
  176. package/dist/types/renderable/renderable.d.ts +9 -16
  177. package/dist/types/renderable/text/bitmaptext.d.ts +151 -0
  178. package/dist/types/renderable/text/bitmaptextdata.d.ts +35 -0
  179. package/dist/types/renderable/text/glyph.d.ts +28 -0
  180. package/dist/types/renderable/text/text.d.ts +159 -0
  181. package/dist/types/renderable/text/textmetrics.d.ts +47 -0
  182. package/dist/types/renderable/text/textstyle.d.ts +5 -0
  183. package/dist/types/renderable/ui/uibaseelement.d.ts +0 -1
  184. package/dist/types/renderable/ui/uispriteelement.d.ts +0 -1
  185. package/dist/types/renderable/ui/uitextbutton.d.ts +2 -7
  186. package/dist/types/state/state.d.ts +11 -11
  187. package/dist/types/system/device.d.ts +15 -9
  188. package/dist/types/system/event.d.ts +20 -0
  189. package/dist/types/system/platform.d.ts +17 -17
  190. package/dist/types/utils/function.d.ts +1 -2
  191. package/dist/types/video/renderer.d.ts +13 -13
  192. package/dist/types/video/texture/canvas_texture.d.ts +14 -14
  193. package/dist/types/video/video.d.ts +2 -2
  194. package/dist/types/video/webgl/buffer/vertex.d.ts +2 -2
  195. package/dist/types/video/webgl/compositors/compositor.d.ts +24 -13
  196. package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +0 -1
  197. package/dist/types/video/webgl/compositors/quad_compositor.d.ts +0 -1
  198. package/dist/types/video/webgl/utils/precision.d.ts +1 -1
  199. package/dist/types/video/webgl/webgl_renderer.d.ts +47 -50
  200. package/package.json +15 -15
  201. package/src/application/application.js +51 -3
  202. package/src/application/header.js +1 -1
  203. package/src/application/resize.js +3 -7
  204. package/src/application/settings.js +4 -4
  205. package/src/audio/audio.js +3 -5
  206. package/src/camera/camera2d.js +11 -13
  207. package/src/entity/entity.js +2 -3
  208. package/src/geometries/ellipse.js +25 -58
  209. package/src/geometries/line.js +17 -24
  210. package/src/geometries/path2d.js +15 -12
  211. package/src/geometries/point.js +7 -15
  212. package/src/geometries/poly.js +39 -96
  213. package/src/geometries/rectangle.js +36 -90
  214. package/src/geometries/roundrect.js +25 -34
  215. package/src/index.js +4 -4
  216. package/src/input/keyboard.js +2 -2
  217. package/src/input/pointer.js +3 -3
  218. package/src/input/pointerevent.js +5 -6
  219. package/src/lang/deprecated.js +1 -1
  220. package/src/level/tiled/TMXLayer.js +15 -32
  221. package/src/level/tiled/TMXObject.js +2 -3
  222. package/src/level/tiled/TMXTile.js +3 -3
  223. package/src/level/tiled/TMXTileMap.js +2 -2
  224. package/src/level/tiled/TMXTileset.js +3 -6
  225. package/src/level/tiled/TMXTilesetGroup.js +1 -1
  226. package/src/level/tiled/TMXUtils.js +25 -28
  227. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -2
  228. package/src/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  229. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  230. package/src/level/tiled/renderer/TMXRenderer.js +1 -1
  231. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  232. package/src/loader/parser.js +3 -4
  233. package/src/math/color.js +1 -1
  234. package/src/math/matrix2.js +4 -58
  235. package/src/math/matrix3.js +81 -140
  236. package/src/math/observable_vector2.js +6 -6
  237. package/src/math/observable_vector3.js +4 -4
  238. package/src/math/vector2.js +6 -90
  239. package/src/math/vector3.js +5 -89
  240. package/src/particles/emitter.js +1 -1
  241. package/src/particles/particle.js +1 -1
  242. package/src/physics/body.js +21 -19
  243. package/src/physics/bounds.js +26 -32
  244. package/src/physics/collision.js +4 -4
  245. package/src/physics/detector.js +9 -9
  246. package/src/physics/quadtree.js +4 -4
  247. package/src/physics/sat.js +2 -3
  248. package/src/physics/world.js +5 -8
  249. package/src/polyfill/roundrect.js +163 -163
  250. package/src/renderable/collectable.js +1 -1
  251. package/src/renderable/colorlayer.js +3 -3
  252. package/src/renderable/container.js +24 -24
  253. package/src/renderable/imagelayer.js +3 -3
  254. package/src/renderable/light2d.js +2 -2
  255. package/src/renderable/nineslicesprite.js +1 -1
  256. package/src/renderable/renderable.js +25 -25
  257. package/src/renderable/sprite.js +2 -2
  258. package/src/{text → renderable/text}/bitmaptext.js +8 -8
  259. package/src/{text → renderable/text}/bitmaptextdata.js +4 -7
  260. package/src/{text → renderable/text}/glyph.js +1 -1
  261. package/src/{text → renderable/text}/text.js +16 -17
  262. package/src/{text → renderable/text}/textmetrics.js +2 -2
  263. package/src/renderable/trigger.js +9 -9
  264. package/src/renderable/ui/uibaseelement.js +6 -6
  265. package/src/renderable/ui/uispriteelement.js +6 -6
  266. package/src/renderable/ui/uitextbutton.js +2 -2
  267. package/src/state/stage.js +1 -1
  268. package/src/state/state.js +0 -49
  269. package/src/system/device.js +48 -9
  270. package/src/system/event.js +22 -0
  271. package/src/system/platform.js +18 -18
  272. package/src/system/pooling.js +9 -9
  273. package/src/tweens/tween.js +1 -1
  274. package/src/utils/function.js +1 -2
  275. package/src/video/canvas/canvas_renderer.js +2 -6
  276. package/src/video/renderer.js +15 -15
  277. package/src/video/texture/atlas.js +12 -12
  278. package/src/video/texture/canvas_texture.js +14 -14
  279. package/src/video/video.js +3 -3
  280. package/src/video/webgl/buffer/vertex.js +2 -2
  281. package/src/video/webgl/compositors/compositor.js +12 -13
  282. package/src/video/webgl/compositors/primitive_compositor.js +4 -4
  283. package/src/video/webgl/compositors/quad_compositor.js +1 -2
  284. package/src/video/webgl/glshader.js +1 -1
  285. package/src/video/webgl/utils/precision.js +3 -3
  286. package/src/video/webgl/webgl_renderer.js +49 -51
  287. /package/src/{text → renderable/text}/textstyle.js +0 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
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 = [];
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.3.0
2
+ * melonJS Game Engine - v15.4.1
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -116,8 +116,8 @@ function normalize(obj, item) {
116
116
  let nodeName = item.nodeName;
117
117
 
118
118
  switch (nodeName) {
119
- case "data":
120
- var data = parse(item); // <= "Unexpected lexical declaration in case block" if using let
119
+ case "data": {
120
+ let data = parse(item);
121
121
 
122
122
  data.encoding = data.encoding || "xml";
123
123
 
@@ -145,7 +145,7 @@ function normalize(obj, item) {
145
145
  obj.encoding = "none";
146
146
  }
147
147
  break;
148
-
148
+ }
149
149
  case "chunk":
150
150
  obj.chunks = obj.chunks || [];
151
151
  obj.chunks.push(parse(item));
@@ -154,8 +154,8 @@ function normalize(obj, item) {
154
154
  case "imagelayer":
155
155
  case "layer":
156
156
  case "objectgroup":
157
- case "group":
158
- var layer = parse(item); // // <= "Unexpected lexical declaration in case block" if using let
157
+ case "group": {
158
+ let layer = parse(item);
159
159
  layer.type = (nodeName === "layer" ? "tilelayer" : nodeName);
160
160
  if (layer.image) {
161
161
  layer.image = layer.image.source;
@@ -164,20 +164,20 @@ function normalize(obj, item) {
164
164
  obj.layers = obj.layers || [];
165
165
  obj.layers.push(layer);
166
166
  break;
167
-
167
+ }
168
168
  case "animation":
169
169
  obj.animation = parse(item).frames;
170
170
  break;
171
171
 
172
172
  case "frame":
173
- case "object":
174
- var name = nodeName + "s"; // <= "Unexpected lexical declaration in case block" if using let
173
+ case "object": {
174
+ const name = nodeName + "s";
175
175
  obj[name] = obj[name] || [];
176
176
  obj[name].push(parse(item));
177
177
  break;
178
-
179
- case "tile":
180
- var tile = parse(item); // <= "Unexpected lexical declaration in case block" if using let
178
+ }
179
+ case "tile": {
180
+ let tile = parse(item);
181
181
  if (tile.image) {
182
182
  tile.imagewidth = tile.image.width;
183
183
  tile.imageheight = tile.image.height;
@@ -186,9 +186,9 @@ function normalize(obj, item) {
186
186
  obj.tiles = obj.tiles || {};
187
187
  obj.tiles[tile.id] = tile;
188
188
  break;
189
-
190
- case "tileset":
191
- var tileset = parse(item); // <= "Unexpected lexical declaration in case block" if using let
189
+ }
190
+ case "tileset": {
191
+ let tileset = parse(item);
192
192
  if (tileset.image) {
193
193
  tileset.imagewidth = tileset.image.width;
194
194
  tileset.imageheight = tileset.image.height;
@@ -198,13 +198,13 @@ function normalize(obj, item) {
198
198
  obj.tilesets = obj.tilesets || [];
199
199
  obj.tilesets.push(tileset);
200
200
  break;
201
-
201
+ }
202
202
  case "polygon":
203
- case "polyline":
203
+ case "polyline": {
204
204
  obj[nodeName] = [];
205
205
 
206
206
  // Get a point array
207
- var points = parse(item).points.split(" "); // <= "Unexpected lexical declaration in case block" if using let
207
+ let points = parse(item).points.split(" ");
208
208
 
209
209
  // And normalize them into an array of vectors
210
210
  for (let i = 0; i < points.length; i++) {
@@ -216,15 +216,15 @@ function normalize(obj, item) {
216
216
  }
217
217
 
218
218
  break;
219
-
219
+ }
220
220
  case "properties":
221
221
  obj.properties = parse(item);
222
222
  break;
223
223
 
224
- case "property":
225
- var property = parse(item); // <= "Unexpected lexical declaration in case block" if using let
224
+ case "property": {
225
+ const property = parse(item);
226
226
  // for custom properties, text is used
227
- var value = (typeof property.value !== "undefined") ? property.value : property.text;
227
+ const value = (typeof property.value !== "undefined") ? property.value : property.text;
228
228
 
229
229
  obj[property.name] = setTMXValue(
230
230
  property.name,
@@ -233,7 +233,7 @@ function normalize(obj, item) {
233
233
  value
234
234
  );
235
235
  break;
236
-
236
+ }
237
237
  default:
238
238
  obj[nodeName] = parse(item);
239
239
  break;
@@ -283,16 +283,13 @@ function decodeCSV(input) {
283
283
  * @param {number} [bytes] - number of bytes per array entry
284
284
  * @returns {Uint32Array} Decoded data
285
285
  */
286
- function decodeBase64AsArray(input, bytes) {
287
- bytes = bytes || 1;
288
-
289
- let i, j, len;
286
+ function decodeBase64AsArray(input, bytes = 1) {
290
287
  let dec = globalThis.atob(input.replace(/[^A-Za-z0-9\+\/\=]/g, ""));
291
288
  let ar = new Uint32Array(dec.length / bytes);
292
289
 
293
- for (i = 0, len = dec.length / bytes; i < len; i++) {
290
+ for (let i = 0, len = dec.length / bytes; i < len; i++) {
294
291
  ar[i] = 0;
295
- for (j = bytes - 1; j >= 0; --j) {
292
+ for (let j = bytes - 1; j >= 0; --j) {
296
293
  ar[i] += dec.charCodeAt((i * bytes) + j) << (j << 3);
297
294
  }
298
295
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -29,7 +29,7 @@ const offsetsStaggerY = [
29
29
  * an Hexagonal Map Renderder
30
30
  * @augments TMXRenderer
31
31
  */
32
- class TMXHexagonalRenderer extends TMXRenderer {
32
+ class TMXHexagonalRenderer extends TMXRenderer {
33
33
  /**
34
34
  * @param {TMXTileMap} map - the TMX map
35
35
  */
@@ -395,7 +395,7 @@ const offsetsStaggerY = [
395
395
  let rowTile = startTile.clone();
396
396
  let rowPos = startPos.clone();
397
397
 
398
- /* Determine in which half of the tile the top-left corner of the area we
398
+ /* Determine in which half of the tile the top-left corner of the area we
399
399
  * need to draw is. If we're in the upper half, we need to start one row
400
400
  * up due to those tiles being visible as well. How we go up one row
401
401
  * depends on whether we're in the left or right half of the tile.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.3.0
2
+ * melonJS Game Engine - v15.4.1
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 TMXLayer from '../TMXLayer.js';
15
15
  * an Isometric Map Renderder
16
16
  * @augments TMXRenderer
17
17
  */
18
- class TMXIsometricRenderer extends TMXRenderer {
18
+ class TMXIsometricRenderer extends TMXRenderer {
19
19
  /**
20
20
  * @param {TMXTileMap} map - the TMX map
21
21
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.3.0
2
+ * melonJS Game Engine - v15.4.1
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -14,7 +14,7 @@ import TMXRenderer from './TMXRenderer.js';
14
14
  * an Orthogonal Map Renderder
15
15
  * @augments TMXRenderer
16
16
  */
17
- class TMXOrthogonalRenderer extends TMXRenderer {
17
+ class TMXOrthogonalRenderer extends TMXRenderer {
18
18
  /**
19
19
  * @param {TMXTileMap} map - the TMX map
20
20
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.3.0
2
+ * melonJS Game Engine - v15.4.1
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -16,7 +16,7 @@ import Bounds from '../../../physics/bounds.js';
16
16
  * @classdesc
17
17
  * The map renderer base class
18
18
  */
19
- class TMXRenderer {
19
+ class TMXRenderer {
20
20
  /**
21
21
  * @param {number} cols - width of the tilemap in tiles
22
22
  * @param {number} rows - height of the tilemap in tiles
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.3.0
2
+ * melonJS Game Engine - v15.4.1
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 { degToRad } from '../../../math/math.js';
15
15
  * a Staggered Map Renderder
16
16
  * @augments TMXHexagonalRenderer
17
17
  */
18
- class TMXStaggeredRenderer extends TMXHexagonalRenderer {
18
+ class TMXStaggeredRenderer extends TMXHexagonalRenderer {
19
19
 
20
20
  /**
21
21
  * return true if the renderer can render the specified layer
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -128,7 +128,7 @@ function preloadTMX(tmxData, onload, onerror) {
128
128
  switch (format) {
129
129
  case "xml":
130
130
  case "tmx":
131
- case "tsx":
131
+ case "tsx": {
132
132
  // ie9 does not fully implement the responseXML
133
133
  if (ua.match(/msie/i) || !xmlhttp.responseXML) {
134
134
  if (globalThis.DOMParser) {
@@ -142,7 +142,7 @@ function preloadTMX(tmxData, onload, onerror) {
142
142
  result = xmlhttp.responseXML;
143
143
  }
144
144
  // converts to a JS object
145
- var data = parse(result); // <= "Unexpected lexical declaration in case block" if using let
145
+ const data = parse(result);
146
146
  switch (format) {
147
147
  case "tmx":
148
148
  result = data.map;
@@ -152,9 +152,8 @@ function preloadTMX(tmxData, onload, onerror) {
152
152
  result = data.tilesets[0];
153
153
  break;
154
154
  }
155
-
156
155
  break;
157
-
156
+ }
158
157
  case "json":
159
158
  case "tmj":
160
159
  case "tsj":
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.3.0
2
+ * melonJS Game Engine - v15.4.1
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.3.0
2
+ * melonJS Game Engine - v15.4.1
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -189,7 +189,7 @@ let cssToRGB = new Map();
189
189
  * @classdesc
190
190
  * A color manipulation object.
191
191
  */
192
- class Color {
192
+ class Color {
193
193
  /**
194
194
  * @param {number} [r=0] - red component or array of color components
195
195
  * @param {number} [g=0] - green component
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.3.0
2
+ * melonJS Game Engine - v15.4.1
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license