melonjs 14.4.0 → 14.5.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 (207) hide show
  1. package/README.md +11 -55
  2. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  3. package/dist/melonjs.mjs/_virtual/arraymultimap.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  5. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  6. package/dist/melonjs.mjs/_virtual/index.js +1 -1
  7. package/dist/melonjs.mjs/_virtual/index2.js +1 -1
  8. package/dist/melonjs.mjs/_virtual/multimap.js +1 -1
  9. package/dist/melonjs.mjs/_virtual/setmultimap.js +1 -1
  10. package/dist/melonjs.mjs/application/application.js +1 -1
  11. package/dist/melonjs.mjs/application/header.js +1 -1
  12. package/dist/melonjs.mjs/application/resize.js +1 -1
  13. package/dist/melonjs.mjs/application/settings.js +1 -1
  14. package/dist/melonjs.mjs/audio/audio.js +4 -4
  15. package/dist/melonjs.mjs/camera/camera2d.js +1 -1
  16. package/dist/melonjs.mjs/const.js +1 -1
  17. package/dist/melonjs.mjs/entity/entity.js +43 -9
  18. package/dist/melonjs.mjs/geometries/ellipse.js +2 -3
  19. package/dist/melonjs.mjs/geometries/line.js +1 -1
  20. package/dist/melonjs.mjs/geometries/path2d.js +18 -42
  21. package/dist/melonjs.mjs/geometries/point.js +1 -6
  22. package/dist/melonjs.mjs/geometries/poly.js +2 -5
  23. package/dist/melonjs.mjs/geometries/rectangle.js +13 -9
  24. package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
  25. package/dist/melonjs.mjs/index.js +8 -6
  26. package/dist/melonjs.mjs/input/gamepad.js +10 -16
  27. package/dist/melonjs.mjs/input/input.js +1 -1
  28. package/dist/melonjs.mjs/input/keyboard.js +1 -1
  29. package/dist/melonjs.mjs/input/pointer.js +1 -1
  30. package/dist/melonjs.mjs/input/pointerevent.js +2 -16
  31. package/dist/melonjs.mjs/lang/console.js +1 -1
  32. package/dist/melonjs.mjs/lang/deprecated.js +1 -1
  33. package/dist/melonjs.mjs/level/level.js +3 -3
  34. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
  35. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +1 -8
  36. package/dist/melonjs.mjs/level/tiled/TMXObject.js +1 -1
  37. package/dist/melonjs.mjs/level/tiled/TMXTile.js +1 -1
  38. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +8 -4
  39. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +5 -5
  40. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +1 -1
  41. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +1 -1
  42. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  43. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
  44. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  45. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  46. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +1 -1
  47. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  48. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  49. package/dist/melonjs.mjs/loader/cache.js +24 -0
  50. package/dist/melonjs.mjs/loader/loader.js +331 -716
  51. package/dist/melonjs.mjs/loader/loadingscreen.js +4 -4
  52. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  53. package/dist/melonjs.mjs/loader/parser.js +281 -0
  54. package/dist/melonjs.mjs/loader/settings.js +91 -0
  55. package/dist/melonjs.mjs/math/color.js +1 -1
  56. package/dist/melonjs.mjs/math/math.js +1 -1
  57. package/dist/melonjs.mjs/math/matrix2.js +7 -9
  58. package/dist/melonjs.mjs/math/matrix3.js +18 -21
  59. package/dist/melonjs.mjs/math/observable_vector2.js +3 -3
  60. package/dist/melonjs.mjs/math/observable_vector3.js +3 -4
  61. package/dist/melonjs.mjs/math/vector2.js +3 -3
  62. package/dist/melonjs.mjs/math/vector3.js +3 -4
  63. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +1 -1
  64. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +1 -1
  65. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +1 -1
  66. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +1 -1
  67. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  68. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
  69. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  70. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  71. package/dist/melonjs.mjs/particles/emitter.js +3 -3
  72. package/dist/melonjs.mjs/particles/particle.js +1 -1
  73. package/dist/melonjs.mjs/particles/settings.js +1 -1
  74. package/dist/melonjs.mjs/physics/body.js +18 -14
  75. package/dist/melonjs.mjs/physics/bounds.js +18 -70
  76. package/dist/melonjs.mjs/physics/collision.js +1 -1
  77. package/dist/melonjs.mjs/physics/detector.js +1 -1
  78. package/dist/melonjs.mjs/physics/quadtree.js +1 -1
  79. package/dist/melonjs.mjs/physics/response.js +1 -1
  80. package/dist/melonjs.mjs/physics/sat.js +1 -1
  81. package/dist/melonjs.mjs/physics/world.js +1 -1
  82. package/dist/melonjs.mjs/plugin/plugin.js +3 -3
  83. package/dist/melonjs.mjs/renderable/collectable.js +1 -1
  84. package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
  85. package/dist/melonjs.mjs/renderable/container.js +25 -19
  86. package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
  87. package/dist/melonjs.mjs/renderable/imagelayer.js +7 -1
  88. package/dist/melonjs.mjs/renderable/light2d.js +1 -1
  89. package/dist/melonjs.mjs/renderable/nineslicesprite.js +1 -1
  90. package/dist/melonjs.mjs/renderable/renderable.js +126 -105
  91. package/dist/melonjs.mjs/renderable/sprite.js +33 -54
  92. package/dist/melonjs.mjs/renderable/trigger.js +1 -1
  93. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +1 -1
  94. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +1 -1
  95. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +1 -1
  96. package/dist/melonjs.mjs/state/stage.js +1 -1
  97. package/dist/melonjs.mjs/state/state.js +2 -2
  98. package/dist/melonjs.mjs/system/device.js +1 -1
  99. package/dist/melonjs.mjs/system/dom.js +1 -1
  100. package/dist/melonjs.mjs/system/event.js +1 -1
  101. package/dist/melonjs.mjs/system/platform.js +1 -1
  102. package/dist/melonjs.mjs/system/pooling.js +8 -18
  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 +66 -8
  106. package/dist/melonjs.mjs/text/bitmaptextdata.js +1 -1
  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 +1 -1
  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 +1 -1
  118. package/dist/melonjs.mjs/utils/string.js +2 -2
  119. package/dist/melonjs.mjs/utils/utils.js +2 -4
  120. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +1 -1
  121. package/dist/melonjs.mjs/video/renderer.js +1 -1
  122. package/dist/melonjs.mjs/video/texture/atlas.js +10 -9
  123. package/dist/melonjs.mjs/video/texture/cache.js +3 -3
  124. package/dist/melonjs.mjs/video/texture/canvas_texture.js +1 -1
  125. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  126. package/dist/melonjs.mjs/video/video.js +2 -2
  127. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +1 -1
  128. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +235 -0
  129. package/{src/video/webgl → dist/melonjs.mjs/video/webgl/compositors}/webgl_compositor.js +28 -205
  130. package/dist/melonjs.mjs/video/webgl/glshader.js +1 -1
  131. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  132. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
  133. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  134. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
  136. package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
  137. package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
  138. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  139. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
  140. package/dist/melonjs.mjs/video/webgl/webgl_compositor.js +2 -2
  141. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +2 -2
  142. package/dist/melonjs.module.js +17844 -17809
  143. package/dist/types/entity/entity.d.ts +2 -2
  144. package/dist/types/geometries/path2d.d.ts +5 -31
  145. package/dist/types/geometries/point.d.ts +2 -7
  146. package/dist/types/geometries/poly.d.ts +0 -1
  147. package/dist/types/index.d.ts +2 -2
  148. package/dist/types/loader/cache.d.ts +7 -0
  149. package/dist/types/loader/loader.d.ts +166 -181
  150. package/dist/types/loader/parser.d.ts +41 -0
  151. package/dist/types/loader/settings.d.ts +57 -0
  152. package/dist/types/particles/emitter.d.ts +4 -4
  153. package/dist/types/physics/bounds.d.ts +29 -84
  154. package/dist/types/renderable/container.d.ts +0 -11
  155. package/dist/types/renderable/renderable.d.ts +37 -31
  156. package/dist/types/renderable/sprite.d.ts +3 -3
  157. package/dist/types/state/state.d.ts +1 -1
  158. package/dist/types/system/pooling.d.ts +2 -2
  159. package/dist/types/video/renderer.d.ts +1 -1
  160. package/dist/types/video/webgl/compositors/compositor.d.ts +101 -0
  161. package/dist/types/video/webgl/compositors/webgl_compositor.d.ts +86 -0
  162. package/dist/types/video/webgl/webgl_compositor.d.ts +2 -3
  163. package/dist/types/video/webgl/webgl_renderer.d.ts +1 -1
  164. package/package.json +16 -15
  165. package/src/audio/audio.js +3 -3
  166. package/src/entity/entity.js +42 -8
  167. package/src/geometries/ellipse.js +1 -2
  168. package/src/geometries/path2d.js +17 -41
  169. package/src/geometries/point.js +0 -5
  170. package/src/geometries/poly.js +1 -4
  171. package/src/geometries/rectangle.js +12 -8
  172. package/src/index.js +2 -2
  173. package/src/input/gamepad.js +9 -15
  174. package/src/input/pointerevent.js +1 -15
  175. package/src/level/level.js +2 -2
  176. package/src/level/tiled/TMXLayer.js +0 -7
  177. package/src/level/tiled/TMXTileMap.js +7 -3
  178. package/src/level/tiled/TMXTileset.js +4 -4
  179. package/src/loader/cache.js +16 -0
  180. package/src/loader/loader.js +339 -711
  181. package/src/loader/loadingscreen.js +3 -3
  182. package/src/loader/parser.js +279 -0
  183. package/src/loader/settings.js +85 -0
  184. package/src/math/matrix2.js +6 -8
  185. package/src/math/matrix3.js +17 -20
  186. package/src/math/observable_vector2.js +2 -2
  187. package/src/math/observable_vector3.js +2 -3
  188. package/src/math/vector2.js +2 -2
  189. package/src/math/vector3.js +2 -3
  190. package/src/particles/emitter.js +2 -2
  191. package/src/physics/body.js +17 -13
  192. package/src/physics/bounds.js +17 -69
  193. package/src/renderable/container.js +24 -18
  194. package/src/renderable/imagelayer.js +6 -0
  195. package/src/renderable/renderable.js +125 -104
  196. package/src/renderable/sprite.js +32 -53
  197. package/src/state/state.js +1 -1
  198. package/src/system/pooling.js +7 -17
  199. package/src/text/bitmaptext.js +65 -7
  200. package/src/utils/string.js +1 -1
  201. package/src/utils/utils.js +1 -3
  202. package/src/video/texture/atlas.js +9 -8
  203. package/src/video/texture/cache.js +2 -2
  204. package/src/video/video.js +1 -1
  205. package/src/video/webgl/compositors/compositor.js +227 -0
  206. package/src/video/webgl/compositors/webgl_compositor.js +300 -0
  207. package/src/video/webgl/webgl_renderer.js +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.4.0
2
+ * melonJS Game Engine - v14.5.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 { on, LOADER_PROGRESS, VIEWPORT_ONRESIZE, off } from '../system/event.js'
11
11
  import Sprite from '../renderable/sprite.js';
12
12
  import Renderable from '../renderable/renderable.js';
13
13
  import Stage from '../state/stage.js';
14
- import loader from './loader.js';
14
+ import { load, unload } from './loader.js';
15
15
  import logo_url from './melonjs_logo.png.js';
16
16
 
17
17
  // a basic progress bar object
@@ -92,7 +92,7 @@ class DefaultLoadingScreen extends Stage {
92
92
  ), 1);
93
93
 
94
94
  // load the melonJS logo
95
- loader.load({name: "melonjs_logo", type: "image", src: logo_url}, () => {
95
+ load({name: "melonjs_logo", type: "image", src: logo_url}, () => {
96
96
  // melonJS logo
97
97
  game.world.addChild(new Sprite(
98
98
  renderer.getWidth() / 2,
@@ -111,7 +111,7 @@ class DefaultLoadingScreen extends Stage {
111
111
  */
112
112
  onDestroyEvent() {
113
113
  // cancel the callback
114
- loader.unload({name: "melonjs_logo", type:"image"});
114
+ unload({name: "melonjs_logo", type:"image"});
115
115
  }
116
116
  }
117
117
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.4.0
2
+ * melonJS Game Engine - v14.5.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
@@ -0,0 +1,281 @@
1
+ /*!
2
+ * melonJS Game Engine - v14.5.0
3
+ * http://www.melonjs.org
4
+ * melonjs is licensed under the MIT License.
5
+ * http://www.opensource.org/licenses/mit-license
6
+ * @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
7
+ */
8
+ import { getExtension } from '../utils/file.js';
9
+ import { ua } from '../system/platform.js';
10
+ import level from '../level/level.js';
11
+ import { parse } from '../level/tiled/TMXUtils.js';
12
+ import { isDataUrl } from '../utils/string.js';
13
+ import { imgList, jsonList, binList, tmxList } from './cache.js';
14
+ import { nocache, withCredentials } from './settings.js';
15
+
16
+ /**
17
+ * load Images
18
+ * @example
19
+ * preloadImages([
20
+ * { name : 'image1', src : 'images/image1.png'},
21
+ * { name : 'image2', src : 'images/image2.png'},
22
+ * { name : 'image3', src : 'images/image3.png'},
23
+ * { name : 'image4', src : 'images/image4.png'}
24
+ * ]);
25
+ * @ignore
26
+ */
27
+ function preloadImage(img, onload, onerror) {
28
+ // create new Image object and add to list
29
+ imgList[img.name] = new Image();
30
+ if (typeof onload === "function") {
31
+ imgList[img.name].onload = onload;
32
+ }
33
+ if (typeof onerror === "function") {
34
+ imgList[img.name].onerror = onerror;
35
+ }
36
+ imgList[img.name].src = img.src + nocache;
37
+ }
38
+
39
+ /**
40
+ * load a font face
41
+ * @example
42
+ * preloadFontFace(
43
+ * name: "'kenpixel'", type: "fontface", src: "url('data/font/kenvector_future.woff2')"
44
+ * ]);
45
+ * @ignore
46
+ */
47
+ function preloadFontFace(data, onload, onerror) {
48
+
49
+ if (isDataUrl(data.src) === true) {
50
+ // make sure it in the `url(data:[<mediatype>][;base64],<data>)` format as expected by FontFace
51
+ if (!data.src.startsWith("url(")) {
52
+ data.src = "url(" + data.src + ")";
53
+ }
54
+ }
55
+
56
+ var font = new FontFace(data.name, data.src);
57
+
58
+ // loading promise
59
+ font.load().then(() => {
60
+ // apply the font after the font has finished downloading
61
+ document.fonts.add(font);
62
+ document.body.style.fontFamily = data.name;
63
+ if (typeof onload === "function") {
64
+ // onloaded callback
65
+ onload();
66
+ }
67
+ }, () => {
68
+ if (typeof onerror === "function") {
69
+ // rejected
70
+ onerror(data.name);
71
+ }
72
+ });
73
+ }
74
+
75
+ /**
76
+ * preload TMX files
77
+ * @ignore
78
+ */
79
+ function preloadTMX(tmxData, onload, onerror) {
80
+ /**
81
+ * @ignore
82
+ */
83
+ function addToTMXList(data) {
84
+ // set the TMX content
85
+ tmxList[tmxData.name] = data;
86
+
87
+ // add the tmx to the level manager
88
+ if (tmxData.type === "tmx") {
89
+ level.add(tmxData.type, tmxData.name);
90
+ }
91
+ }
92
+
93
+
94
+ //if the data is in the tmxData object, don't get it via a XMLHTTPRequest
95
+ if (tmxData.data) {
96
+ addToTMXList(tmxData.data);
97
+ if (typeof onload === "function") {
98
+ onload();
99
+ }
100
+ return;
101
+ }
102
+
103
+ var xmlhttp = new XMLHttpRequest();
104
+ // check the data format ('tmx', 'json')
105
+ var format = getExtension(tmxData.src);
106
+
107
+ if (xmlhttp.overrideMimeType) {
108
+ if (format === "json") {
109
+ xmlhttp.overrideMimeType("application/json");
110
+ }
111
+ else {
112
+ xmlhttp.overrideMimeType("text/xml");
113
+ }
114
+ }
115
+
116
+ xmlhttp.open("GET", tmxData.src + nocache, true);
117
+ xmlhttp.withCredentials = withCredentials;
118
+ // set the callbacks
119
+ xmlhttp.ontimeout = onerror;
120
+ xmlhttp.onreadystatechange = function () {
121
+ if (xmlhttp.readyState === 4) {
122
+ // status = 0 when file protocol is used, or cross-domain origin,
123
+ // (With Chrome use "--allow-file-access-from-files --disable-web-security")
124
+ if ((xmlhttp.status === 200) || ((xmlhttp.status === 0) && xmlhttp.responseText)) {
125
+ var result = null;
126
+
127
+ // parse response
128
+ switch (format) {
129
+ case "xml":
130
+ case "tmx":
131
+ case "tsx":
132
+ // ie9 does not fully implement the responseXML
133
+ if (ua.match(/msie/i) || !xmlhttp.responseXML) {
134
+ if (globalThis.DOMParser) {
135
+ // manually create the XML DOM
136
+ result = (new DOMParser()).parseFromString(xmlhttp.responseText, "text/xml");
137
+ } else {
138
+ throw new Error("XML file format loading not supported, use the JSON file format instead");
139
+ }
140
+ }
141
+ else {
142
+ result = xmlhttp.responseXML;
143
+ }
144
+ // converts to a JS object
145
+ var data = parse(result);
146
+ switch (format) {
147
+ case "tmx":
148
+ result = data.map;
149
+ break;
150
+
151
+ case "tsx":
152
+ result = data.tilesets[0];
153
+ break;
154
+ }
155
+
156
+ break;
157
+
158
+ case "json":
159
+ case "tmj":
160
+ case "tsj":
161
+ result = JSON.parse(xmlhttp.responseText);
162
+ break;
163
+
164
+ default:
165
+ throw new Error("TMX file format " + format + " not supported !");
166
+ }
167
+
168
+ //set the TMX content
169
+ addToTMXList(result);
170
+
171
+ // fire the callback
172
+ if (typeof onload === "function") {
173
+ onload();
174
+ }
175
+ }
176
+ else if (typeof onerror === "function") {
177
+ onerror(tmxData.name);
178
+ }
179
+ }
180
+ };
181
+ // send the request
182
+ xmlhttp.send();
183
+ }
184
+
185
+ /**
186
+ * preload JSON files
187
+ * @ignore
188
+ */
189
+ function preloadJSON(data, onload, onerror) {
190
+ var xmlhttp = new XMLHttpRequest();
191
+
192
+ if (xmlhttp.overrideMimeType) {
193
+ xmlhttp.overrideMimeType("application/json");
194
+ }
195
+
196
+ xmlhttp.open("GET", data.src + nocache, true);
197
+ xmlhttp.withCredentials = withCredentials;
198
+
199
+ // set the callbacks
200
+ xmlhttp.ontimeout = onerror;
201
+ xmlhttp.onreadystatechange = function () {
202
+ if (xmlhttp.readyState === 4) {
203
+ // status = 0 when file protocol is used, or cross-domain origin,
204
+ // (With Chrome use "--allow-file-access-from-files --disable-web-security")
205
+ if ((xmlhttp.status === 200) || ((xmlhttp.status === 0) && xmlhttp.responseText)) {
206
+ // get the Texture Packer Atlas content
207
+ jsonList[data.name] = JSON.parse(xmlhttp.responseText);
208
+ if (typeof onload === "function") {
209
+ // fire the callback
210
+ onload();
211
+ }
212
+ }
213
+ else if (typeof onerror === "function") {
214
+ onerror(data.name);
215
+ }
216
+ }
217
+ };
218
+ // send the request
219
+ xmlhttp.send();
220
+ }
221
+
222
+ /**
223
+ * preload Binary files
224
+ * @ignore
225
+ */
226
+ function preloadBinary(data, onload, onerror) {
227
+ var httpReq = new XMLHttpRequest();
228
+
229
+ // load our file
230
+ httpReq.open("GET", data.src + nocache, true);
231
+ httpReq.withCredentials = withCredentials;
232
+ httpReq.responseType = "arraybuffer";
233
+ httpReq.onerror = onerror;
234
+ httpReq.onload = function () {
235
+ var arrayBuffer = httpReq.response;
236
+ if (arrayBuffer) {
237
+ var byteArray = new Uint8Array(arrayBuffer);
238
+ var buffer = [];
239
+ for (var i = 0; i < byteArray.byteLength; i++) {
240
+ buffer[i] = String.fromCharCode(byteArray[i]);
241
+ }
242
+ binList[data.name] = buffer.join("");
243
+ if (typeof onload === "function") {
244
+ // callback
245
+ onload();
246
+ }
247
+
248
+ }
249
+ };
250
+ httpReq.send();
251
+ }
252
+
253
+ /**
254
+ * preload Binary files
255
+ * @ignore
256
+ */
257
+ function preloadJavascript(data, onload, onerror) {
258
+ var script = document.createElement("script");
259
+
260
+ script.src = data.src;
261
+ script.type = "text/javascript";
262
+ script.defer = true;
263
+
264
+ if (typeof onload === "function") {
265
+ script.onload = () => {
266
+ // callback
267
+ onload();
268
+ };
269
+ }
270
+
271
+ if (typeof onerror === "function") {
272
+ script.onerror = () => {
273
+ // callback
274
+ onerror(data.name);
275
+ };
276
+ }
277
+
278
+ document.getElementsByTagName("body")[0].appendChild(script);
279
+ }
280
+
281
+ export { preloadBinary, preloadFontFace, preloadImage, preloadJSON, preloadJavascript, preloadTMX };
@@ -0,0 +1,91 @@
1
+ /*!
2
+ * melonJS Game Engine - v14.5.0
3
+ * http://www.melonjs.org
4
+ * melonjs is licensed under the MIT License.
5
+ * http://www.opensource.org/licenses/mit-license
6
+ * @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
7
+ */
8
+ // to enable/disable caching
9
+ let nocache = "";
10
+
11
+ // baseURL
12
+ let baseURL = {};
13
+
14
+
15
+ /**
16
+ * crossOrigin attribute to configure the CORS requests for Image data element.
17
+ * By default (that is, when the attribute is not specified), CORS is not used at all.
18
+ * The "anonymous" keyword means that there will be no exchange of user credentials via cookies,
19
+ * client-side SSL certificates or HTTP authentication as described in the Terminology section of the CORS specification.<br>
20
+ * @type {string}
21
+ * @name crossOrigin
22
+ * @default undefined
23
+ * @memberof loader
24
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes
25
+ * @example
26
+ * // allow for cross-origin texture loading in WebGL
27
+ * me.loader.crossOrigin = "anonymous";
28
+ *
29
+ * // set all ressources to be loaded
30
+ * me.loader.preload(game.resources, this.loaded.bind(this));
31
+ */
32
+ let crossOrigin;
33
+
34
+ /**
35
+ * indicates whether or not cross-site Access-Control requests should be made using credentials such as cookies,
36
+ * authorization headers or TLS client certificates. Setting withCredentials has no effect on same-site requests.
37
+ * @public
38
+ * @type {boolean}
39
+ * @name withCredentials
40
+ * @default false
41
+ * @memberof loader
42
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials
43
+ * @example
44
+ * // enable withCredentials
45
+ * me.loader.withCredentials = true;
46
+ *
47
+ * // set all ressources to be loaded
48
+ * me.loader.preload(game.resources, this.loaded.bind(this));
49
+ */
50
+ let withCredentials = false;
51
+
52
+ /**
53
+ * enable the nocache mechanism
54
+ * @ignore
55
+ */
56
+ function setNocache(enable = false) {
57
+ nocache = enable ? "?" + ~~(Math.random() * 10000000) : "";
58
+ }
59
+
60
+ /**
61
+ * change the default baseURL for the given asset type.<br>
62
+ * (this will prepend the asset URL and must finish with a '/')
63
+ * @name setBaseURL
64
+ * @memberof loader
65
+ * @public
66
+ * @param {string} type - "*", "audio", binary", "image", "json", "js", "tmx", "tsx"
67
+ * @param {string} [url="./"] - default base URL
68
+ * @example
69
+ * // change the base URL relative address for audio assets
70
+ * me.loader.setBaseURL("audio", "data/audio/");
71
+ * // change the base URL absolute address for all object types
72
+ * me.loader.setBaseURL("*", "http://myurl.com/")
73
+ */
74
+ function setBaseURL(type, url) {
75
+ if (type !== "*") {
76
+ baseURL[type] = url;
77
+ } else {
78
+ // "wildcards"
79
+ baseURL["audio"] = url;
80
+ baseURL["binary"] = url;
81
+ baseURL["image"] = url;
82
+ baseURL["json"] = url;
83
+ baseURL["js"] = url;
84
+ baseURL["tmx"] = url;
85
+ baseURL["tsx"] = url;
86
+ // XXX ?
87
+ //baseURL["fontface"] = url;
88
+ }
89
+ }
90
+
91
+ export { baseURL, crossOrigin, nocache, setBaseURL, setNocache, withCredentials };
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.4.0
2
+ * melonJS Game Engine - v14.5.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 - v14.4.0
2
+ * melonJS Game Engine - v14.5.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 - v14.4.0
2
+ * melonJS Game Engine - v14.5.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
@@ -303,15 +303,13 @@ import Matrix3d from './matrix3.js';
303
303
  * @param {number} [y=x] - a number representing the ordinate of the scaling vector.
304
304
  * @returns {Matrix2d} Reference to this object for method chaining
305
305
  */
306
- scale(x, y) {
307
- var a = this.val,
308
- _x = x,
309
- _y = typeof(y) === "undefined" ? _x : y;
306
+ scale(x, y = x) {
307
+ var a = this.val;
310
308
 
311
- a[0] *= _x;
312
- a[1] *= _x;
313
- a[3] *= _y;
314
- a[4] *= _y;
309
+ a[0] *= x;
310
+ a[1] *= x;
311
+ a[3] *= y;
312
+ a[4] *= y;
315
313
 
316
314
  return this;
317
315
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.4.0
2
+ * melonJS Game Engine - v14.5.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
@@ -401,26 +401,23 @@ import { EPSILON } from './math.js';
401
401
  * @param {number} [z=0] - a number representing the depth vector
402
402
  * @returns {Matrix3d} Reference to this object for method chaining
403
403
  */
404
- scale(x, y, z) {
405
- var a = this.val,
406
- _x = x,
407
- _y = typeof(y) === "undefined" ? _x : y,
408
- _z = typeof(z) === "undefined" ? 0 : z;
409
-
410
- a[0] = a[0] * _x;
411
- a[1] = a[1] * _x;
412
- a[2] = a[2] * _x;
413
- a[3] = a[3] * _x;
414
-
415
- a[4] = a[4] * _y;
416
- a[5] = a[5] * _y;
417
- a[6] = a[6] * _y;
418
- a[7] = a[7] * _y;
419
-
420
- a[8] = a[8] * _z;
421
- a[9] = a[9] * _z;
422
- a[10] = a[10] * _z;
423
- a[11] = a[11] * _z;
404
+ scale(x, y = x, z = 0) {
405
+ var a = this.val;
406
+
407
+ a[0] = a[0] * x;
408
+ a[1] = a[1] * x;
409
+ a[2] = a[2] * x;
410
+ a[3] = a[3] * x;
411
+
412
+ a[4] = a[4] * y;
413
+ a[5] = a[5] * y;
414
+ a[6] = a[6] * y;
415
+ a[7] = a[7] * y;
416
+
417
+ a[8] = a[8] * z;
418
+ a[9] = a[9] * z;
419
+ a[10] = a[10] * z;
420
+ a[11] = a[11] * z;
424
421
 
425
422
  return this;
426
423
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.4.0
2
+ * melonJS Game Engine - v14.5.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
@@ -163,8 +163,8 @@ import { clamp } from './math.js';
163
163
  * @param {number} [y=x]
164
164
  * @returns {ObservableVector2d} Reference to this object for method chaining
165
165
  */
166
- scale(x, y) {
167
- return this._set(this._x * x, this._y * (typeof (y) !== "undefined" ? y : x));
166
+ scale(x, y = x) {
167
+ return this._set(this._x * x, this._y * y);
168
168
  }
169
169
 
170
170
  /**
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.4.0
2
+ * melonJS Game Engine - v14.5.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
@@ -193,9 +193,8 @@ import pool from '../system/pooling.js';
193
193
  * @param {number} [z=1]
194
194
  * @returns {ObservableVector3d} Reference to this object for method chaining
195
195
  */
196
- scale(x, y, z) {
197
- y = (typeof (y) !== "undefined" ? y : x);
198
- return this._set(this._x * x, this._y * y, this._z * (z || 1));
196
+ scale(x, y = x, z = 1) {
197
+ return this._set(this._x * x, this._y * y, this._z * z);
199
198
  }
200
199
 
201
200
  /**
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.4.0
2
+ * melonJS Game Engine - v14.5.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
@@ -127,8 +127,8 @@ import pool from '../system/pooling.js';
127
127
  * @param {number} [y=x]
128
128
  * @returns {Vector2d} Reference to this object for method chaining
129
129
  */
130
- scale(x, y) {
131
- return this._set(this.x * x, this.y * (typeof (y) !== "undefined" ? y : x));
130
+ scale(x, y = x) {
131
+ return this._set(this.x * x, this.y * y);
132
132
  }
133
133
 
134
134
  /**
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.4.0
2
+ * melonJS Game Engine - v14.5.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
@@ -141,9 +141,8 @@ import pool from '../system/pooling.js';
141
141
  * @param {number} [z=1]
142
142
  * @returns {Vector3d} Reference to this object for method chaining
143
143
  */
144
- scale(x, y, z) {
145
- y = (typeof (y) !== "undefined" ? y : x);
146
- return this._set(this.x * x, this.y * y, this.z * (z || 1));
144
+ scale(x, y = x, z = 1) {
145
+ return this._set(this.x * x, this.y * y, this.z * z);
147
146
  }
148
147
 
149
148
  /**
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.4.0
2
+ * melonJS Game Engine - v14.5.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 - v14.4.0
2
+ * melonJS Game Engine - v14.5.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 - v14.4.0
2
+ * melonJS Game Engine - v14.5.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 - v14.4.0
2
+ * melonJS Game Engine - v14.5.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 - v14.4.0
2
+ * melonJS Game Engine - v14.5.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 - v14.4.0
2
+ * melonJS Game Engine - v14.5.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 - v14.4.0
2
+ * melonJS Game Engine - v14.5.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 - v14.4.0
2
+ * melonJS Game Engine - v14.5.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 - v14.4.0
2
+ * melonJS Game Engine - v14.5.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
@@ -167,7 +167,7 @@ function createDefaultParticleTexture(w = 8, h = 8) {
167
167
 
168
168
  /**
169
169
  * Launch particles from emitter constantly (e.g. for stream)
170
- * @param {number} duration - [optional] time that the emitter releases particles in ms
170
+ * @param {number} [duration] - time that the emitter releases particles in ms
171
171
  */
172
172
  streamParticles(duration) {
173
173
  this._enabled = true;
@@ -185,7 +185,7 @@ function createDefaultParticleTexture(w = 8, h = 8) {
185
185
 
186
186
  /**
187
187
  * Launch all particles from emitter and stop (e.g. for explosion)
188
- * @param {number} total - [optional] number of particles to launch
188
+ * @param {number} [total] - number of particles to launch
189
189
  */
190
190
  burstParticles(total) {
191
191
  this._enabled = true;