melonjs 14.2.0 → 14.3.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/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 +153 -9
- package/dist/melonjs.mjs/application/header.js +34 -0
- package/dist/melonjs.mjs/application/resize.js +1 -1
- package/dist/melonjs.mjs/application/settings.js +28 -0
- package/dist/melonjs.mjs/audio/audio.js +1 -1
- package/dist/melonjs.mjs/camera/camera2d.js +2 -2
- package/dist/melonjs.mjs/entity/entity.js +1 -1
- package/dist/melonjs.mjs/game.js +1 -1
- package/dist/melonjs.mjs/geometries/ellipse.js +1 -1
- package/dist/melonjs.mjs/geometries/line.js +1 -1
- package/dist/melonjs.mjs/geometries/path2d.js +1 -1
- package/dist/melonjs.mjs/geometries/point.js +1 -1
- package/dist/melonjs.mjs/geometries/poly.js +1 -1
- package/dist/melonjs.mjs/geometries/rectangle.js +1 -1
- package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
- package/dist/melonjs.mjs/index.js +41 -30
- package/dist/melonjs.mjs/input/gamepad.js +1 -1
- 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 +2 -2
- package/dist/melonjs.mjs/input/pointerevent.js +2 -2
- package/dist/melonjs.mjs/lang/deprecated.js +1 -1
- package/dist/melonjs.mjs/level/level.js +2 -2
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +2 -2
- 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 +2 -2
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +1 -1
- 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/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/loader/loader.js +1 -1
- package/dist/melonjs.mjs/loader/loadingscreen.js +2 -2
- package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
- package/dist/melonjs.mjs/math/color.js +1 -1
- package/dist/melonjs.mjs/math/math.js +1 -1
- package/dist/melonjs.mjs/math/matrix2.js +1 -1
- package/dist/melonjs.mjs/math/matrix3.js +1 -1
- package/dist/melonjs.mjs/math/observable_vector2.js +1 -1
- package/dist/melonjs.mjs/math/observable_vector3.js +1 -1
- package/dist/melonjs.mjs/math/vector2.js +1 -1
- package/dist/melonjs.mjs/math/vector3.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/melonjs.mjs/physics/bounds.js +1 -1
- package/dist/melonjs.mjs/physics/collision.js +3 -3
- package/dist/melonjs.mjs/physics/detector.js +174 -146
- 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 +10 -30
- 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 +3 -87
- package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
- package/dist/melonjs.mjs/renderable/imagelayer.js +2 -2
- 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 +1 -1
- package/dist/melonjs.mjs/renderable/sprite.js +1 -1
- package/dist/melonjs.mjs/renderable/trigger.js +2 -2
- 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 -1
- package/dist/melonjs.mjs/state/stage.js +2 -2
- package/dist/melonjs.mjs/state/state.js +2 -2
- package/dist/melonjs.mjs/system/device.js +2 -22
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/melonjs.mjs/text/textmetrics.js +1 -1
- package/dist/melonjs.mjs/text/textstyle.js +1 -1
- 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 +2 -2
- 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 +1 -1
- package/dist/melonjs.mjs/utils/utils.js +1 -1
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +4 -1
- package/dist/melonjs.mjs/video/renderer.js +8 -1
- package/dist/melonjs.mjs/video/texture/atlas.js +1 -1
- package/dist/melonjs.mjs/video/texture/cache.js +1 -1
- package/dist/melonjs.mjs/video/texture/canvas_texture.js +3 -2
- package/dist/melonjs.mjs/video/utils/autodetect.js +27 -0
- package/dist/melonjs.mjs/video/utils/resize.js +1 -1
- package/dist/melonjs.mjs/video/video.js +15 -147
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +1 -1
- package/dist/melonjs.mjs/video/webgl/glshader.js +2 -3
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/precision.js +20 -2
- 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_compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +4 -1
- package/dist/melonjs.module.js +20922 -20921
- package/dist/types/application/application.d.ts +144 -0
- package/dist/types/application/header.d.ts +5 -0
- package/dist/types/application/resize.d.ts +5 -0
- package/dist/types/application/settings.d.ts +18 -0
- package/dist/types/audio/audio.d.ts +267 -0
- package/dist/types/camera/camera2d.d.ts +289 -0
- package/dist/types/entity/entity.d.ts +98 -0
- package/{src/game.js → dist/types/game.d.ts} +3 -14
- package/dist/types/geometries/ellipse.d.ts +154 -0
- package/dist/types/geometries/line.d.ts +11 -0
- package/dist/types/geometries/path2d.d.ts +121 -0
- package/dist/types/geometries/point.d.ts +53 -0
- package/dist/types/geometries/poly.d.ts +222 -0
- package/dist/types/geometries/rectangle.d.ts +176 -0
- package/dist/types/geometries/roundrect.d.ts +52 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/input/gamepad.d.ts +95 -0
- package/dist/types/input/input.d.ts +15 -0
- package/dist/types/input/keyboard.d.ts +205 -0
- package/dist/types/input/pointer.d.ts +270 -0
- package/dist/types/input/pointerevent.d.ts +181 -0
- package/dist/types/lang/deprecated.d.ts +53 -0
- package/dist/types/level/level.d.ts +134 -0
- package/dist/types/level/tiled/TMXGroup.d.ts +82 -0
- package/dist/types/level/tiled/TMXLayer.d.ts +180 -0
- package/dist/types/level/tiled/TMXObject.d.ts +195 -0
- package/dist/types/level/tiled/TMXTile.d.ts +78 -0
- package/dist/types/level/tiled/TMXTileMap.d.ts +180 -0
- package/dist/types/level/tiled/TMXTileset.d.ts +94 -0
- package/dist/types/level/tiled/TMXTilesetGroup.d.ts +32 -0
- package/dist/types/level/tiled/TMXUtils.d.ts +47 -0
- package/dist/types/level/tiled/renderer/TMXHexagonalRenderer.d.ts +87 -0
- package/dist/types/level/tiled/renderer/TMXIsometricRenderer.d.ts +55 -0
- package/dist/types/level/tiled/renderer/TMXOrthogonalRenderer.d.ts +43 -0
- package/dist/types/level/tiled/renderer/TMXRenderer.d.ts +75 -0
- package/dist/types/level/tiled/renderer/TMXStaggeredRenderer.d.ts +8 -0
- package/dist/types/loader/loader.d.ts +181 -0
- package/dist/types/loader/loadingscreen.d.ts +18 -0
- package/dist/types/math/color.d.ts +170 -0
- package/dist/types/math/math.d.ts +165 -0
- package/dist/types/math/matrix2.d.ts +209 -0
- package/dist/types/math/matrix3.d.ts +236 -0
- package/dist/types/math/observable_vector2.d.ts +278 -0
- package/dist/types/math/observable_vector3.d.ts +277 -0
- package/dist/types/math/vector2.d.ts +327 -0
- package/dist/types/math/vector3.d.ts +332 -0
- package/dist/types/particles/emitter.d.ts +188 -0
- package/dist/types/particles/particle.d.ts +32 -0
- package/dist/types/particles/settings.d.ts +32 -0
- package/dist/types/physics/body.d.ts +330 -0
- package/dist/types/physics/bounds.d.ts +250 -0
- package/dist/types/physics/collision.d.ts +44 -0
- package/dist/types/physics/detector.d.ts +64 -0
- package/dist/types/physics/quadtree.d.ts +79 -0
- package/dist/types/physics/response.d.ts +37 -0
- package/dist/types/physics/sat.d.ts +48 -0
- package/dist/types/physics/world.d.ts +83 -0
- package/dist/types/plugin/plugin.d.ts +10 -0
- package/dist/types/polyfill/console.d.ts +0 -0
- package/dist/types/polyfill/index.d.ts +1 -0
- package/dist/types/polyfill/performance.d.ts +0 -0
- package/dist/types/polyfill/requestAnimationFrame.d.ts +1 -0
- package/dist/types/polyfill/roundrect.d.ts +0 -0
- package/dist/types/renderable/collectable.d.ts +19 -0
- package/dist/types/renderable/colorlayer.d.ts +28 -0
- package/dist/types/renderable/container.d.ts +302 -0
- package/dist/types/renderable/dragndrop.d.ts +118 -0
- package/dist/types/renderable/imagelayer.d.ts +106 -0
- package/dist/types/renderable/light2d.d.ts +58 -0
- package/dist/types/renderable/nineslicesprite.d.ts +59 -0
- package/dist/types/renderable/renderable.d.ts +402 -0
- package/dist/types/renderable/sprite.d.ts +268 -0
- package/dist/types/renderable/trigger.d.ts +61 -0
- package/dist/types/renderable/ui/uibaseelement.d.ts +95 -0
- package/dist/types/renderable/ui/uispriteelement.d.ts +127 -0
- package/dist/types/renderable/ui/uitextbutton.d.ts +54 -0
- package/dist/types/state/stage.d.ts +116 -0
- package/dist/types/state/state.d.ts +170 -0
- package/dist/types/system/device.d.ts +579 -0
- package/dist/types/system/dom.d.ts +1 -0
- package/dist/types/system/event.d.ts +473 -0
- package/dist/types/system/platform.d.ts +31 -0
- package/dist/types/system/pooling.d.ts +101 -0
- package/dist/types/system/save.d.ts +25 -0
- package/dist/types/system/timer.d.ts +126 -0
- package/dist/types/text/bitmaptext.d.ts +151 -0
- package/dist/types/text/bitmaptextdata.d.ts +35 -0
- package/dist/types/text/glyph.d.ts +28 -0
- package/dist/types/text/text.d.ts +173 -0
- package/dist/types/text/textmetrics.d.ts +47 -0
- package/dist/types/text/textstyle.d.ts +5 -0
- package/dist/types/tweens/easing.d.ts +46 -0
- package/dist/types/tweens/interpolation.d.ts +18 -0
- package/dist/types/tweens/tween.d.ts +195 -0
- package/dist/types/utils/agent.d.ts +21 -0
- package/dist/types/utils/array.d.ts +39 -0
- package/dist/types/utils/file.d.ts +18 -0
- package/dist/types/utils/function.d.ts +32 -0
- package/dist/types/utils/string.d.ts +50 -0
- package/dist/types/utils/utils.d.ts +17 -0
- package/dist/types/video/canvas/canvas_renderer.d.ts +380 -0
- package/dist/types/video/renderer.d.ts +222 -0
- package/dist/types/video/texture/atlas.d.ts +201 -0
- package/dist/types/video/texture/cache.d.ts +45 -0
- package/dist/types/video/texture/canvas_texture.d.ts +78 -0
- package/dist/types/video/utils/autodetect.d.ts +7 -0
- package/dist/types/video/utils/resize.d.ts +4 -0
- package/dist/types/video/video.d.ts +92 -0
- package/dist/types/video/webgl/buffer/vertex.d.ts +56 -0
- package/dist/types/video/webgl/glshader.d.ts +93 -0
- package/dist/types/video/webgl/utils/attributes.d.ts +4 -0
- package/dist/types/video/webgl/utils/precision.d.ts +13 -0
- package/dist/types/video/webgl/utils/program.d.ts +5 -0
- package/dist/types/video/webgl/utils/string.d.ts +5 -0
- package/dist/types/video/webgl/utils/uniforms.d.ts +4 -0
- package/dist/types/video/webgl/webgl_compositor.d.ts +174 -0
- package/dist/types/video/webgl/webgl_renderer.d.ts +429 -0
- package/package.json +4 -4
- package/src/application/application.js +151 -7
- package/src/application/header.js +25 -0
- package/src/{video/utils → application}/resize.js +9 -6
- package/src/application/settings.js +19 -0
- package/src/camera/camera2d.js +1 -1
- package/src/index.js +34 -23
- package/src/input/pointer.js +1 -1
- package/src/input/pointerevent.js +1 -1
- package/src/level/level.js +1 -1
- package/src/level/tiled/TMXLayer.js +1 -1
- package/src/level/tiled/TMXTileMap.js +2 -2
- package/src/loader/loadingscreen.js +1 -1
- package/src/physics/collision.js +2 -2
- package/src/physics/detector.js +172 -145
- package/src/physics/world.js +10 -30
- package/src/renderable/container.js +7 -91
- package/src/renderable/imagelayer.js +1 -1
- package/src/renderable/trigger.js +1 -1
- package/src/renderable/ui/uibaseelement.js +1 -1
- package/src/state/stage.js +1 -1
- package/src/state/state.js +1 -1
- package/src/system/device.js +0 -20
- package/src/tweens/tween.js +1 -1
- package/src/video/canvas/canvas_renderer.js +3 -0
- package/src/video/renderer.js +7 -0
- package/src/video/texture/canvas_texture.js +2 -1
- package/src/video/utils/autodetect.js +18 -0
- package/src/video/video.js +13 -145
- package/src/video/webgl/glshader.js +3 -4
- package/src/video/webgl/utils/precision.js +18 -0
- package/src/video/webgl/webgl_renderer.js +3 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v14.
|
|
2
|
+
* melonJS Game Engine - v14.3.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
|
|
@@ -52,6 +52,9 @@ import { emit, ONCONTEXT_LOST, ONCONTEXT_RESTORED } from '../../system/event.js'
|
|
|
52
52
|
this.uvOffset = 1;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
// set the renderer type
|
|
56
|
+
this.type = "CANVAS";
|
|
57
|
+
|
|
55
58
|
// context lost & restore event for canvas
|
|
56
59
|
this.getCanvas().addEventListener("contextlost", (e) => {
|
|
57
60
|
e.preventDefault();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v14.
|
|
2
|
+
* melonJS Game Engine - v14.3.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
|
|
@@ -76,6 +76,13 @@ import Point from '../geometries/point.js';
|
|
|
76
76
|
*/
|
|
77
77
|
this.path2D = new Path2D();
|
|
78
78
|
|
|
79
|
+
/**
|
|
80
|
+
* The renderer type : Canvas, WebGL, etc...
|
|
81
|
+
* (override this property with a specific value when implementing a custom renderer)
|
|
82
|
+
* @type {string}
|
|
83
|
+
*/
|
|
84
|
+
this.type = "Generic";
|
|
85
|
+
|
|
79
86
|
/**
|
|
80
87
|
* @ignore
|
|
81
88
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v14.
|
|
2
|
+
* melonJS Game Engine - v14.3.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
|
|
@@ -106,7 +106,8 @@ class CanvasTexture {
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
/**
|
|
109
|
-
* Returns an ImageData object representing the underlying pixel data for a specified portion of this canvas texture
|
|
109
|
+
* Returns an ImageData object representing the underlying pixel data for a specified portion of this canvas texture.
|
|
110
|
+
* (Note: when using getImageData(), it is highly recommended to use the `willReadFrequently` attribute when creatimg the corresponding canvas texture)
|
|
110
111
|
* @param {number} x - The x-axis coordinate of the top-left corner of the rectangle from which the ImageData will be extracted
|
|
111
112
|
* @param {number} y - The y-axis coordinate of the top-left corner of the rectangle from which the ImageData will be extracted
|
|
112
113
|
* @param {number} width - The width of the rectangle from which the ImageData will be extracted. Positive values are to the right, and negative to the left
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.3.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 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
import { isWebGLSupported } from '../../system/device.js';
|
|
9
|
+
import WebGLRenderer from '../webgl/webgl_renderer.js';
|
|
10
|
+
import CanvasRenderer from '../canvas/canvas_renderer.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Auto-detect the best renderer to use
|
|
14
|
+
* @ignore
|
|
15
|
+
*/
|
|
16
|
+
function autoDetectRenderer(options) {
|
|
17
|
+
try {
|
|
18
|
+
if (isWebGLSupported(options)) {
|
|
19
|
+
return new WebGLRenderer(options);
|
|
20
|
+
}
|
|
21
|
+
} catch (e) {
|
|
22
|
+
console.log("Error creating WebGL renderer :" + e.message);
|
|
23
|
+
}
|
|
24
|
+
return new CanvasRenderer(options);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { autoDetectRenderer };
|
|
@@ -1,58 +1,19 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v14.
|
|
2
|
+
* melonJS Game Engine - v14.3.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
|
|
6
6
|
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
7
|
*/
|
|
8
|
-
import
|
|
9
|
-
import
|
|
8
|
+
import { emit, WINDOW_ONRESIZE, WINDOW_ONORIENTATION_CHANGE, WINDOW_ONSCROLL, VIDEO_INIT } from '../system/event.js';
|
|
9
|
+
import { game, initialized } from '../index.js';
|
|
10
|
+
import { offscreenCanvas, screenOrientation } from '../system/device.js';
|
|
10
11
|
import utils from '../utils/utils.js';
|
|
11
|
-
import { emit, WINDOW_ONRESIZE, WINDOW_ONORIENTATION_CHANGE, WINDOW_ONSCROLL, on, VIDEO_INIT } from '../system/event.js';
|
|
12
|
-
import { offscreenCanvas, screenOrientation, getElement, platform, enableSwipe, devicePixelRatio, getScreenOrientation, language, isWebGLSupported, hasWebAudio } from '../system/device.js';
|
|
13
|
-
import { initialized, version } from '../index.js';
|
|
14
|
-
import game from '../game.js';
|
|
15
|
-
import { onresize } from './utils/resize.js';
|
|
16
12
|
|
|
17
13
|
/**
|
|
18
14
|
* @namespace video
|
|
19
15
|
*/
|
|
20
16
|
|
|
21
|
-
// default video settings
|
|
22
|
-
var settings = {
|
|
23
|
-
parent : undefined,
|
|
24
|
-
renderer : 2, // AUTO
|
|
25
|
-
autoScale : false,
|
|
26
|
-
scale : 1.0,
|
|
27
|
-
scaleMethod : "manual",
|
|
28
|
-
transparent : false,
|
|
29
|
-
premultipliedAlpha: true,
|
|
30
|
-
blendMode : "normal",
|
|
31
|
-
antiAlias : false,
|
|
32
|
-
failIfMajorPerformanceCaveat : true,
|
|
33
|
-
subPixel : false,
|
|
34
|
-
preferWebGL1 : false,
|
|
35
|
-
powerPreference : "default",
|
|
36
|
-
verbose : false,
|
|
37
|
-
consoleHeader : true
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Auto-detect the best renderer to use
|
|
42
|
-
* @ignore
|
|
43
|
-
*/
|
|
44
|
-
function autoDetectRenderer(options) {
|
|
45
|
-
try {
|
|
46
|
-
if (isWebGLSupported(options)) {
|
|
47
|
-
return new WebGLRenderer(options);
|
|
48
|
-
}
|
|
49
|
-
} catch (e) {
|
|
50
|
-
console.log("Error creating WebGL renderer :" + e.message);
|
|
51
|
-
}
|
|
52
|
-
return new CanvasRenderer(options);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
56
17
|
/**
|
|
57
18
|
* Select the HTML5 Canvas renderer
|
|
58
19
|
* @memberof video
|
|
@@ -103,7 +64,7 @@ let renderer = null;
|
|
|
103
64
|
* @param {number} height - The height of the canvas viewport
|
|
104
65
|
* @param {object} [options] - The optional video/renderer parameters.<br> (see Renderer(s) documentation for further specific options)
|
|
105
66
|
* @param {string|HTMLElement} [options.parent=document.body] - the DOM parent element to hold the canvas in the HTML file
|
|
106
|
-
* @param {number} [options.renderer=video.AUTO] - renderer to use (me.video.CANVAS, me.video.WEBGL, me.video.AUTO)
|
|
67
|
+
* @param {number|Renderer} [options.renderer=video.AUTO] - renderer to use (me.video.CANVAS, me.video.WEBGL, me.video.AUTO), or a custom renderer class
|
|
107
68
|
* @param {number|string} [options.scale=1.0] - enable scaling of the canvas ('auto' for automatic scaling)
|
|
108
69
|
* @param {string} [options.scaleMethod="fit"] - screen scaling modes ('fit','fill-min','fill-max','flex','flex-width','flex-height','stretch')
|
|
109
70
|
* @param {boolean} [options.preferWebGL1=false] - if true the renderer will only use WebGL 1
|
|
@@ -122,54 +83,22 @@ let renderer = null;
|
|
|
122
83
|
* });
|
|
123
84
|
*/
|
|
124
85
|
function init(width, height, options) {
|
|
125
|
-
|
|
126
86
|
// ensure melonjs has been properly initialized
|
|
127
87
|
if (!initialized) {
|
|
128
88
|
throw new Error("me.video.init() called before engine initialization.");
|
|
129
89
|
}
|
|
130
90
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
settings.antiAlias = !!(settings.antiAlias);
|
|
139
|
-
settings.failIfMajorPerformanceCaveat = !!(settings.failIfMajorPerformanceCaveat);
|
|
140
|
-
settings.subPixel = !!(settings.subPixel);
|
|
141
|
-
settings.verbose = !!(settings.verbose);
|
|
142
|
-
if (settings.scaleMethod.search(/^(fill-(min|max)|fit|flex(-(width|height))?|stretch)$/) !== -1) {
|
|
143
|
-
settings.autoScale = (settings.scale === "auto") || true;
|
|
144
|
-
} else {
|
|
145
|
-
// default scaling method
|
|
146
|
-
settings.scaleMethod = "fit";
|
|
147
|
-
settings.autoScale = (settings.scale === "auto") || false;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// display melonJS version
|
|
151
|
-
if (settings.consoleHeader !== false) {
|
|
152
|
-
// output video information in the console
|
|
153
|
-
console.log("melonJS 2 (v" + version + ") | http://melonjs.org" );
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// override renderer settings if &webgl or &canvas is defined in the URL
|
|
157
|
-
var uriFragment = utils.getUriFragment();
|
|
158
|
-
if (uriFragment.webgl === true || uriFragment.webgl1 === true || uriFragment.webgl2 === true) {
|
|
159
|
-
settings.renderer = WEBGL;
|
|
160
|
-
if (uriFragment.webgl1 === true) {
|
|
161
|
-
settings.preferWebGL1 = true;
|
|
162
|
-
}
|
|
163
|
-
} else if (uriFragment.canvas === true) {
|
|
164
|
-
settings.renderer = CANVAS;
|
|
91
|
+
try {
|
|
92
|
+
// initialize the default game Application with the given options
|
|
93
|
+
game.init(width, height, options);
|
|
94
|
+
} catch (e) {
|
|
95
|
+
console(e.message);
|
|
96
|
+
// me.video.init() historically returns false if failing at creating/using a HTML5 canvas
|
|
97
|
+
return false;
|
|
165
98
|
}
|
|
166
99
|
|
|
167
|
-
//
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
// default scaled size value
|
|
171
|
-
settings.zoomX = width * settings.scale;
|
|
172
|
-
settings.zoomY = height * settings.scale;
|
|
100
|
+
// assign the default renderer
|
|
101
|
+
renderer = game.renderer;
|
|
173
102
|
|
|
174
103
|
//add a channel for the onresize/onorientationchange event
|
|
175
104
|
globalThis.addEventListener(
|
|
@@ -189,6 +118,7 @@ function init(width, height, options) {
|
|
|
189
118
|
},
|
|
190
119
|
false
|
|
191
120
|
);
|
|
121
|
+
|
|
192
122
|
// pre-fixed implementation on mozzila
|
|
193
123
|
globalThis.addEventListener(
|
|
194
124
|
"onmozorientationchange",
|
|
@@ -209,68 +139,6 @@ function init(width, height, options) {
|
|
|
209
139
|
emit(WINDOW_ONSCROLL, e);
|
|
210
140
|
}, 100), false);
|
|
211
141
|
|
|
212
|
-
try {
|
|
213
|
-
switch (settings.renderer) {
|
|
214
|
-
case AUTO:
|
|
215
|
-
case WEBGL:
|
|
216
|
-
renderer = autoDetectRenderer(settings);
|
|
217
|
-
break;
|
|
218
|
-
default:
|
|
219
|
-
renderer = new CanvasRenderer(settings);
|
|
220
|
-
break;
|
|
221
|
-
}
|
|
222
|
-
} catch (e) {
|
|
223
|
-
console(e.message);
|
|
224
|
-
// me.video.init() returns false if failing at creating/using a HTML5 canvas
|
|
225
|
-
return false;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// register to the channel
|
|
229
|
-
on(WINDOW_ONRESIZE, () => { onresize(renderer); }, this);
|
|
230
|
-
on(WINDOW_ONORIENTATION_CHANGE, () => { onresize(renderer); }, this);
|
|
231
|
-
|
|
232
|
-
// add our canvas (default to document.body if settings.parent is undefined)
|
|
233
|
-
game.parentElement = getElement(typeof settings.parent !== "undefined" ? settings.parent : document.body);
|
|
234
|
-
game.parentElement.appendChild(renderer.getCanvas());
|
|
235
|
-
|
|
236
|
-
// Mobile browser hacks
|
|
237
|
-
if (platform.isMobile) {
|
|
238
|
-
// Prevent the webview from moving on a swipe
|
|
239
|
-
enableSwipe(false);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
// trigger an initial resize();
|
|
243
|
-
onresize(renderer);
|
|
244
|
-
|
|
245
|
-
// add an observer to detect when the dom tree is modified
|
|
246
|
-
if ("MutationObserver" in globalThis) {
|
|
247
|
-
// Create an observer instance linked to the callback function
|
|
248
|
-
var observer = new MutationObserver(onresize.bind(this, renderer));
|
|
249
|
-
|
|
250
|
-
// Start observing the target node for configured mutations
|
|
251
|
-
observer.observe(game.parentElement, {
|
|
252
|
-
attributes: false, childList: true, subtree: true
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
if (settings.consoleHeader !== false) {
|
|
257
|
-
var renderType = (renderer instanceof CanvasRenderer) ? "CANVAS" : "WebGL" + renderer.WebGLVersion;
|
|
258
|
-
var audioType = hasWebAudio ? "Web Audio" : "HTML5 Audio";
|
|
259
|
-
var gpu_renderer = (typeof renderer.GPURenderer === "string") ? " (" + renderer.GPURenderer + ")" : "";
|
|
260
|
-
// output video information in the console
|
|
261
|
-
console.log(
|
|
262
|
-
renderType + " renderer" + gpu_renderer + " | " +
|
|
263
|
-
audioType + " | " +
|
|
264
|
-
"pixel ratio " + devicePixelRatio + " | " +
|
|
265
|
-
(platform.nodeJS ? "node.js" : platform.isMobile ? "mobile" : "desktop") + " | " +
|
|
266
|
-
getScreenOrientation() + " | " +
|
|
267
|
-
language
|
|
268
|
-
);
|
|
269
|
-
console.log( "resolution: " + "requested " + width + "x" + height +
|
|
270
|
-
", got " + renderer.getWidth() + "x" + renderer.getHeight()
|
|
271
|
-
);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
142
|
// notify the video has been initialized
|
|
275
143
|
emit(VIDEO_INIT);
|
|
276
144
|
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v14.
|
|
2
|
+
* melonJS Game Engine - v14.3.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
|
|
6
6
|
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
7
|
*/
|
|
8
8
|
import { on, ONCONTEXT_LOST } from '../../system/event.js';
|
|
9
|
-
import { getMaxShaderPrecision } from '../../system/device.js';
|
|
10
9
|
import { extractUniforms } from './utils/uniforms.js';
|
|
11
10
|
import { extractAttributes } from './utils/attributes.js';
|
|
12
11
|
import { compileProgram } from './utils/program.js';
|
|
13
|
-
import { setPrecision } from './utils/precision.js';
|
|
12
|
+
import { setPrecision, getMaxShaderPrecision } from './utils/precision.js';
|
|
14
13
|
import { minify } from './utils/string.js';
|
|
15
14
|
|
|
16
15
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v14.
|
|
2
|
+
* melonJS Game Engine - v14.3.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
|
|
@@ -17,4 +17,22 @@ function setPrecision(src, precision) {
|
|
|
17
17
|
return src;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* return the highest precision format supported by this device for GL Shaders
|
|
22
|
+
* @ignore
|
|
23
|
+
* @param {WebGLRenderingContext} gl
|
|
24
|
+
* @returns {boolean} "lowp", "mediump", or "highp"
|
|
25
|
+
*/
|
|
26
|
+
function getMaxShaderPrecision(gl) {
|
|
27
|
+
if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&
|
|
28
|
+
gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0) {
|
|
29
|
+
return "highp";
|
|
30
|
+
}
|
|
31
|
+
if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&
|
|
32
|
+
gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0) {
|
|
33
|
+
return "mediump";
|
|
34
|
+
}
|
|
35
|
+
return "lowp";
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { getMaxShaderPrecision, setPrecision };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v14.
|
|
2
|
+
* melonJS Game Engine - v14.3.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
|
|
@@ -143,6 +143,9 @@ import { isPowerOfTwo, nextPowerOfTwo } from '../../math/math.js';
|
|
|
143
143
|
// Create a texture cache
|
|
144
144
|
this.cache = new TextureCache(this.maxTextures);
|
|
145
145
|
|
|
146
|
+
// set the renderer type
|
|
147
|
+
this.type = "WebGL" + this.WebGLVersion;
|
|
148
|
+
|
|
146
149
|
// to simulate context lost and restore in WebGL:
|
|
147
150
|
// var ctx = me.video.renderer.context.getExtension('WEBGL_lose_context');
|
|
148
151
|
// ctx.loseContext()
|