melonjs 14.4.0 → 15.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- package/README.md +13 -57
- package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
- package/dist/melonjs.mjs/_virtual/arraymultimap.js +1 -1
- package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
- package/dist/melonjs.mjs/_virtual/howler.js +1 -1
- package/dist/melonjs.mjs/_virtual/index.js +1 -1
- package/dist/melonjs.mjs/_virtual/index2.js +1 -1
- package/dist/melonjs.mjs/_virtual/multimap.js +1 -1
- package/dist/melonjs.mjs/_virtual/setmultimap.js +1 -1
- package/dist/melonjs.mjs/application/application.js +1 -1
- package/dist/melonjs.mjs/application/header.js +1 -1
- package/dist/melonjs.mjs/application/resize.js +1 -1
- package/dist/melonjs.mjs/application/settings.js +1 -1
- package/dist/melonjs.mjs/audio/audio.js +5 -7
- package/dist/melonjs.mjs/camera/camera2d.js +1 -1
- package/dist/melonjs.mjs/const.js +1 -1
- package/dist/melonjs.mjs/entity/entity.js +43 -9
- package/dist/melonjs.mjs/geometries/ellipse.js +2 -3
- package/dist/melonjs.mjs/geometries/line.js +1 -1
- package/dist/melonjs.mjs/geometries/path2d.js +20 -44
- package/dist/melonjs.mjs/geometries/point.js +1 -6
- package/dist/melonjs.mjs/geometries/poly.js +2 -5
- package/dist/melonjs.mjs/geometries/rectangle.js +13 -9
- package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
- package/dist/melonjs.mjs/index.js +10 -6
- package/dist/melonjs.mjs/input/gamepad.js +10 -16
- package/dist/melonjs.mjs/input/input.js +1 -1
- package/dist/melonjs.mjs/input/keyboard.js +1 -1
- package/dist/melonjs.mjs/input/pointer.js +1 -1
- package/dist/melonjs.mjs/input/pointerevent.js +3 -17
- package/dist/melonjs.mjs/lang/console.js +1 -1
- package/dist/melonjs.mjs/lang/deprecated.js +1 -1
- package/dist/melonjs.mjs/level/level.js +3 -3
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +1 -8
- package/dist/melonjs.mjs/level/tiled/TMXObject.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTile.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +8 -4
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +5 -5
- package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXUtils.js +1 -1
- package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
- package/dist/melonjs.mjs/loader/cache.js +24 -0
- package/dist/melonjs.mjs/loader/loader.js +331 -716
- package/dist/melonjs.mjs/loader/loadingscreen.js +4 -4
- package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
- package/dist/melonjs.mjs/loader/parser.js +281 -0
- package/dist/melonjs.mjs/loader/settings.js +91 -0
- package/dist/melonjs.mjs/math/color.js +9 -8
- package/dist/melonjs.mjs/math/math.js +1 -1
- package/dist/melonjs.mjs/math/matrix2.js +7 -9
- package/dist/melonjs.mjs/math/matrix3.js +18 -21
- package/dist/melonjs.mjs/math/observable_vector2.js +3 -3
- package/dist/melonjs.mjs/math/observable_vector3.js +3 -4
- package/dist/melonjs.mjs/math/vector2.js +3 -3
- package/dist/melonjs.mjs/math/vector3.js +3 -4
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
- package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
- package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
- package/dist/melonjs.mjs/particles/emitter.js +3 -3
- package/dist/melonjs.mjs/particles/particle.js +1 -1
- package/dist/melonjs.mjs/particles/settings.js +1 -1
- package/dist/melonjs.mjs/physics/body.js +18 -14
- package/dist/melonjs.mjs/physics/bounds.js +18 -70
- package/dist/melonjs.mjs/physics/collision.js +1 -1
- package/dist/melonjs.mjs/physics/detector.js +1 -1
- package/dist/melonjs.mjs/physics/quadtree.js +1 -1
- package/dist/melonjs.mjs/physics/response.js +1 -1
- package/dist/melonjs.mjs/physics/sat.js +1 -1
- package/dist/melonjs.mjs/physics/world.js +1 -1
- package/dist/melonjs.mjs/plugin/plugin.js +3 -3
- package/dist/melonjs.mjs/renderable/collectable.js +1 -1
- package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
- package/dist/melonjs.mjs/renderable/container.js +25 -19
- package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
- package/dist/melonjs.mjs/renderable/imagelayer.js +7 -1
- package/dist/melonjs.mjs/renderable/light2d.js +1 -1
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +1 -1
- package/dist/melonjs.mjs/renderable/renderable.js +148 -105
- package/dist/melonjs.mjs/renderable/sprite.js +33 -54
- package/dist/melonjs.mjs/renderable/trigger.js +1 -1
- package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +1 -1
- package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +1 -1
- package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +1 -3
- package/dist/melonjs.mjs/state/stage.js +1 -1
- package/dist/melonjs.mjs/state/state.js +2 -2
- package/dist/melonjs.mjs/system/device.js +2 -2
- package/dist/melonjs.mjs/system/dom.js +1 -1
- package/dist/melonjs.mjs/system/event.js +1 -1
- package/dist/melonjs.mjs/system/platform.js +1 -1
- package/dist/melonjs.mjs/system/pooling.js +8 -18
- package/dist/melonjs.mjs/system/save.js +1 -1
- package/dist/melonjs.mjs/system/timer.js +1 -1
- package/dist/melonjs.mjs/text/bitmaptext.js +66 -8
- package/dist/melonjs.mjs/text/bitmaptextdata.js +1 -1
- package/dist/melonjs.mjs/text/glyph.js +1 -1
- package/dist/melonjs.mjs/text/text.js +56 -86
- package/dist/melonjs.mjs/text/textmetrics.js +1 -1
- package/dist/melonjs.mjs/text/textstyle.js +4 -6
- package/dist/melonjs.mjs/tweens/easing.js +1 -1
- package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
- package/dist/melonjs.mjs/tweens/tween.js +1 -1
- package/dist/melonjs.mjs/utils/agent.js +1 -1
- package/dist/melonjs.mjs/utils/array.js +1 -1
- package/dist/melonjs.mjs/utils/file.js +1 -1
- package/dist/melonjs.mjs/utils/function.js +1 -1
- package/dist/melonjs.mjs/utils/string.js +2 -2
- package/dist/melonjs.mjs/utils/utils.js +2 -4
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +7 -11
- package/dist/melonjs.mjs/video/renderer.js +2 -13
- package/dist/melonjs.mjs/video/texture/atlas.js +12 -17
- package/dist/melonjs.mjs/video/texture/cache.js +3 -3
- package/dist/melonjs.mjs/video/texture/canvas_texture.js +1 -1
- package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
- package/dist/melonjs.mjs/video/video.js +2 -2
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +21 -17
- package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +235 -0
- package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +77 -0
- package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +249 -0
- package/dist/melonjs.mjs/video/webgl/{webgl_compositor.js → compositors/webgl_compositor.js} +20 -205
- package/dist/melonjs.mjs/video/webgl/glshader.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +2 -2
- package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +2 -2
- package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +139 -149
- package/dist/melonjs.module.js +26320 -26376
- package/dist/types/entity/entity.d.ts +3 -3
- package/dist/types/geometries/path2d.d.ts +5 -31
- package/dist/types/geometries/point.d.ts +2 -7
- package/dist/types/geometries/poly.d.ts +0 -1
- package/dist/types/index.d.ts +5 -3
- package/dist/types/loader/cache.d.ts +7 -0
- package/dist/types/loader/loader.d.ts +166 -181
- package/dist/types/loader/parser.d.ts +41 -0
- package/dist/types/loader/settings.d.ts +57 -0
- package/dist/types/particles/emitter.d.ts +4 -4
- package/dist/types/physics/bounds.d.ts +29 -84
- package/dist/types/renderable/container.d.ts +0 -11
- package/dist/types/renderable/renderable.d.ts +43 -31
- package/dist/types/renderable/sprite.d.ts +3 -3
- package/dist/types/renderable/ui/uitextbutton.d.ts +0 -1
- package/dist/types/state/state.d.ts +1 -1
- package/dist/types/system/pooling.d.ts +2 -2
- package/dist/types/text/text.d.ts +6 -20
- package/dist/types/text/textstyle.d.ts +1 -1
- package/dist/types/video/canvas/canvas_renderer.d.ts +0 -5
- package/dist/types/video/renderer.d.ts +1 -5
- package/dist/types/video/webgl/buffer/vertex.d.ts +3 -3
- package/dist/types/video/webgl/compositors/compositor.d.ts +107 -0
- package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +22 -0
- package/dist/types/video/webgl/compositors/quad_compositor.d.ts +72 -0
- package/dist/types/video/webgl/compositors/webgl_compositor.d.ts +86 -0
- package/dist/types/video/webgl/webgl_compositor.d.ts +2 -3
- package/dist/types/video/webgl/webgl_renderer.d.ts +34 -28
- package/package.json +18 -18
- package/src/audio/audio.js +4 -6
- package/src/entity/entity.js +42 -8
- package/src/geometries/ellipse.js +1 -2
- package/src/geometries/path2d.js +19 -43
- package/src/geometries/point.js +0 -5
- package/src/geometries/poly.js +1 -4
- package/src/geometries/rectangle.js +12 -8
- package/src/index.js +7 -3
- package/src/input/gamepad.js +9 -15
- package/src/input/pointerevent.js +1 -15
- package/src/level/level.js +2 -2
- package/src/level/tiled/TMXLayer.js +0 -7
- package/src/level/tiled/TMXTileMap.js +7 -3
- package/src/level/tiled/TMXTileset.js +4 -4
- package/src/loader/cache.js +16 -0
- package/src/loader/loader.js +339 -711
- package/src/loader/loadingscreen.js +3 -3
- package/src/loader/parser.js +279 -0
- package/src/loader/settings.js +85 -0
- package/src/math/color.js +8 -7
- package/src/math/matrix2.js +6 -8
- package/src/math/matrix3.js +17 -20
- package/src/math/observable_vector2.js +2 -2
- package/src/math/observable_vector3.js +2 -3
- package/src/math/vector2.js +2 -2
- package/src/math/vector3.js +2 -3
- package/src/particles/emitter.js +2 -2
- package/src/physics/body.js +17 -13
- package/src/physics/bounds.js +17 -69
- package/src/polyfill/index.js +0 -2
- package/src/renderable/container.js +24 -18
- package/src/renderable/imagelayer.js +6 -0
- package/src/renderable/renderable.js +147 -104
- package/src/renderable/sprite.js +32 -53
- package/src/renderable/ui/uitextbutton.js +0 -2
- package/src/state/state.js +1 -1
- package/src/system/device.js +1 -1
- package/src/system/pooling.js +7 -17
- package/src/text/bitmaptext.js +65 -7
- package/src/text/text.js +55 -85
- package/src/text/textstyle.js +3 -5
- package/src/utils/string.js +1 -1
- package/src/utils/utils.js +1 -3
- package/src/video/canvas/canvas_renderer.js +5 -9
- package/src/video/renderer.js +0 -11
- package/src/video/texture/atlas.js +11 -16
- package/src/video/texture/cache.js +2 -2
- package/src/video/video.js +1 -1
- package/src/video/webgl/buffer/vertex.js +20 -16
- package/src/video/webgl/compositors/compositor.js +226 -0
- package/src/video/webgl/compositors/primitive_compositor.js +68 -0
- package/src/video/webgl/compositors/quad_compositor.js +240 -0
- package/src/video/webgl/shaders/primitive.vert +2 -5
- package/src/video/webgl/shaders/quad.vert +3 -1
- package/src/video/webgl/webgl_renderer.js +137 -147
- package/dist/melonjs.mjs/_virtual/make-built-in.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-define-property.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-get-own-property-descriptor.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-get-own-property-names.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-get-own-property-symbols.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-property-is-enumerable.js +0 -10
- package/dist/melonjs.mjs/_virtual/shared.js +0 -10
- package/dist/melonjs.mjs/game.js +0 -29
- package/dist/melonjs.mjs/polyfill/console.js +0 -18
- package/dist/melonjs.mjs/polyfill/performance.js +0 -27
- package/dist/melonjs.mjs/polyfill/requestAnimationFrame.js +0 -46
- package/dist/melonjs.mjs/polyfill/roundrect.js +0 -242
- package/dist/melonjs.mjs/renderable/re_container.js +0 -1016
- package/dist/melonjs.mjs/video/utils/resize.js +0 -116
- package/src/polyfill/performance.js +0 -20
- package/src/polyfill/requestAnimationFrame.js +0 -39
- package/src/video/webgl/webgl_compositor.js +0 -486
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.0.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
|
|
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
|
-
|
|
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
|
-
|
|
114
|
+
unload({name: "melonjs_logo", type:"image"});
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v15.0.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 - v15.0.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 -
|
|
2
|
+
* melonJS Game Engine - v15.0.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
|
|
@@ -257,8 +257,8 @@ var cssToRGB = new Map();
|
|
|
257
257
|
return this.glArray[3];
|
|
258
258
|
}
|
|
259
259
|
|
|
260
|
-
set alpha(value) {
|
|
261
|
-
this.glArray[3] =
|
|
260
|
+
set alpha(value = 1.0) {
|
|
261
|
+
this.glArray[3] = clamp(+value, 0, 1.0);
|
|
262
262
|
}
|
|
263
263
|
|
|
264
264
|
|
|
@@ -541,12 +541,13 @@ var cssToRGB = new Map();
|
|
|
541
541
|
* @returns {number}
|
|
542
542
|
*/
|
|
543
543
|
toUint32(alpha = 1.0) {
|
|
544
|
-
var
|
|
545
|
-
var ug = this.g & 0xff;
|
|
546
|
-
var ub = this.b & 0xff;
|
|
547
|
-
var ua = (alpha * 255) & 0xff;
|
|
544
|
+
var a = this.glArray;
|
|
548
545
|
|
|
549
|
-
|
|
546
|
+
var ur = (a[0] * 255) & 0xff;
|
|
547
|
+
var ug = (a[1] * 255) & 0xff;
|
|
548
|
+
var ub = (a[2] * 255) & 0xff;
|
|
549
|
+
|
|
550
|
+
return (((alpha * 255) & 0xff) << 24) + (ur << 16) + (ug << 8) + ub;
|
|
550
551
|
}
|
|
551
552
|
|
|
552
553
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.0.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] *=
|
|
312
|
-
a[1] *=
|
|
313
|
-
a[3] *=
|
|
314
|
-
a[4] *=
|
|
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 -
|
|
2
|
+
* melonJS Game Engine - v15.0.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
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
a[
|
|
411
|
-
|
|
412
|
-
a[
|
|
413
|
-
a[
|
|
414
|
-
|
|
415
|
-
a[
|
|
416
|
-
|
|
417
|
-
a[
|
|
418
|
-
a[
|
|
419
|
-
|
|
420
|
-
a[
|
|
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 -
|
|
2
|
+
* melonJS Game Engine - v15.0.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 *
|
|
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 -
|
|
2
|
+
* melonJS Game Engine - v15.0.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
|
-
|
|
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 -
|
|
2
|
+
* melonJS Game Engine - v15.0.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 *
|
|
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 -
|
|
2
|
+
* melonJS Game Engine - v15.0.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
|
-
|
|
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
|
/**
|