melonjs 14.1.2 → 14.2.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/README.md +3 -4
- 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 +7 -3
- 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 +7 -3
- package/dist/melonjs.mjs/_virtual/make-built-in.js +10 -0
- package/dist/melonjs.mjs/_virtual/multimap.js +1 -1
- package/dist/melonjs.mjs/_virtual/object-define-property.js +10 -0
- package/dist/melonjs.mjs/_virtual/object-get-own-property-descriptor.js +10 -0
- package/dist/melonjs.mjs/_virtual/object-get-own-property-names.js +10 -0
- package/dist/melonjs.mjs/_virtual/object-get-own-property-symbols.js +10 -0
- package/dist/melonjs.mjs/_virtual/object-property-is-enumerable.js +10 -0
- package/dist/melonjs.mjs/_virtual/setmultimap.js +1 -1
- package/dist/melonjs.mjs/_virtual/shared.js +10 -0
- package/dist/melonjs.mjs/application/application.js +21 -14
- package/dist/melonjs.mjs/application/resize.js +119 -0
- package/dist/melonjs.mjs/audio/audio.js +1 -1
- package/dist/melonjs.mjs/camera/camera2d.js +1 -1
- 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 +3 -3
- package/dist/melonjs.mjs/geometries/point.js +1 -1
- package/dist/melonjs.mjs/geometries/poly.js +3 -3
- package/dist/melonjs.mjs/geometries/rectangle.js +1 -1
- package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
- package/dist/melonjs.mjs/index.js +3 -34
- 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 +1 -1
- package/dist/melonjs.mjs/input/pointerevent.js +6 -7
- package/dist/melonjs.mjs/lang/deprecated.js +1 -1
- package/dist/melonjs.mjs/level/level.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +3 -2
- 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 +3 -2
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +3 -2
- package/dist/melonjs.mjs/node_modules/core-js/es/string/trim-end.js +13 -0
- package/dist/melonjs.mjs/node_modules/core-js/es/string/trim-start.js +13 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/a-callable.js +22 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/an-object.js +21 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/array-includes.js +45 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/classof-raw.js +19 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/classof.js +43 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/copy-constructor-properties.js +32 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/create-non-enumerable-property.js +24 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/create-property-descriptor.js +17 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/define-built-in.js +43 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/define-global-property.js +23 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/descriptors.js +18 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/document-all.js +18 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/document-create-element.js +22 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/engine-user-agent.js +14 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/engine-v8-version.js +39 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/entry-unbind.js +18 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/enum-bug-keys.js +19 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/export.js +72 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/fails.js +16 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/function-bind-native.js +19 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/function-call.js +18 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/function-name.js +29 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/function-uncurry-this.js +22 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/get-built-in.js +22 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/get-method.js +21 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/global.js +25 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/has-own-property.js +23 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/hidden-keys.js +10 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/ie8-dom-define.js +24 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/indexed-object.js +28 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/inspect-source.js +27 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/internal-state.js +88 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/is-callable.js +22 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/is-forced.js +34 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/is-null-or-undefined.js +14 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/is-object.js +22 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/is-symbol.js +27 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/length-of-array-like.js +18 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/make-built-in.js +68 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/math-trunc.js +19 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/object-define-property.js +58 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/object-get-own-property-descriptor.js +41 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/object-get-own-property-names.js +23 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/object-get-own-property-symbols.js +12 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/object-is-prototype-of.js +14 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/object-keys-internal.js +35 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/object-property-is-enumerable.js +23 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/ordinary-to-primitive.js +28 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/own-keys.js +31 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/require-object-coercible.js +21 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/shared-key.js +21 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/shared-store.js +19 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/shared.js +24 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/string-trim-end.js +22 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/string-trim-forced.js +28 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/string-trim-start.js +22 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/string-trim.js +45 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/symbol-constructor-detection.js +26 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/to-absolute-index.js +23 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/to-indexed-object.js +19 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/to-integer-or-infinity.js +20 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/to-length.js +20 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/to-object.js +20 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/to-primitive.js +41 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/to-property-key.js +21 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/to-string-tag-support.js +19 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/to-string.js +19 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/try-to-string.js +18 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/uid.js +20 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/use-symbol-as-uid.js +18 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/v8-prototype-define-bug.js +24 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/weak-map-basic-detection.js +18 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/well-known-symbol.js +41 -0
- package/dist/melonjs.mjs/node_modules/core-js/internals/whitespaces.js +12 -0
- package/dist/melonjs.mjs/node_modules/core-js/modules/es.global-this.js +18 -0
- package/dist/melonjs.mjs/node_modules/core-js/modules/es.string.trim-end.js +22 -0
- package/dist/melonjs.mjs/node_modules/core-js/modules/es.string.trim-left.js +19 -0
- package/dist/melonjs.mjs/node_modules/core-js/modules/es.string.trim-right.js +19 -0
- package/dist/melonjs.mjs/node_modules/core-js/modules/es.string.trim-start.js +22 -0
- package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +4 -5
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +3 -3
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.mjs.js +9 -0
- package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +5 -2
- package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +3 -2
- 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 +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 +4 -4
- package/dist/melonjs.mjs/polyfill/console.js +18 -0
- package/dist/melonjs.mjs/polyfill/performance.js +27 -0
- package/dist/melonjs.mjs/polyfill/requestAnimationFrame.js +46 -0
- package/dist/melonjs.mjs/polyfill/roundrect.js +242 -0
- 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 +1 -1
- package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
- package/dist/melonjs.mjs/renderable/imagelayer.js +1 -1
- package/dist/melonjs.mjs/renderable/light2d.js +1 -1
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +1 -1
- package/dist/melonjs.mjs/renderable/re_container.js +1016 -0
- 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 +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 -1
- package/dist/melonjs.mjs/state/stage.js +1 -1
- package/dist/melonjs.mjs/state/state.js +1 -1
- package/dist/melonjs.mjs/system/device.js +8 -8
- package/dist/melonjs.mjs/system/dom.js +3 -2
- 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 +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 +1 -1
- package/dist/melonjs.mjs/utils/utils.js +4 -29
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +1 -1
- package/dist/melonjs.mjs/video/renderer.js +19 -6
- 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 +20 -1
- package/dist/melonjs.mjs/video/utils/resize.js +116 -0
- package/dist/melonjs.mjs/video/video.js +20 -162
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +1 -1
- 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 +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 +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_compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +1 -1
- package/dist/melonjs.module.js +23849 -22258
- package/package.json +13 -13
- package/src/application/application.js +20 -13
- package/src/input/pointerevent.js +5 -6
- package/src/plugin/plugin.js +1 -1
- package/src/system/device.js +7 -7
- package/src/system/dom.js +2 -1
- package/src/utils/utils.js +3 -28
- package/src/video/renderer.js +20 -7
- package/src/video/texture/canvas_texture.js +19 -0
- package/src/video/utils/resize.js +107 -0
- package/src/video/video.js +17 -159
package/src/video/video.js
CHANGED
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
import Vector2d from "./../math/vector2.js";
|
|
2
1
|
import WebGLRenderer from "./webgl/webgl_renderer.js";
|
|
3
2
|
import CanvasRenderer from "./canvas/canvas_renderer.js";
|
|
4
3
|
import utils from "./../utils/utils.js";
|
|
5
4
|
import * as event from "./../system/event.js";
|
|
6
|
-
import game from "./../game.js";
|
|
7
5
|
import * as device from "./../system/device.js";
|
|
8
6
|
import { initialized, version } from "./../index.js";
|
|
7
|
+
import game from "./../game.js";
|
|
8
|
+
import { onresize } from "./utils/resize.js";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
* video functions
|
|
12
11
|
* @namespace video
|
|
13
12
|
*/
|
|
14
13
|
|
|
15
|
-
var designRatio = 1;
|
|
16
|
-
var designWidth = 0;
|
|
17
|
-
var designHeight = 0;
|
|
18
|
-
|
|
19
14
|
// default video settings
|
|
20
15
|
var settings = {
|
|
21
16
|
parent : undefined,
|
|
@@ -50,84 +45,9 @@ function autoDetectRenderer(options) {
|
|
|
50
45
|
return new CanvasRenderer(options);
|
|
51
46
|
}
|
|
52
47
|
|
|
53
|
-
/**
|
|
54
|
-
* callback for window resize event
|
|
55
|
-
* @ignore
|
|
56
|
-
*/
|
|
57
|
-
function onresize() {
|
|
58
|
-
var settings = renderer.settings;
|
|
59
|
-
var scaleX = 1, scaleY = 1;
|
|
60
|
-
|
|
61
|
-
if (settings.autoScale) {
|
|
62
|
-
|
|
63
|
-
// set max the canvas max size if CSS values are defined
|
|
64
|
-
var canvasMaxWidth = Infinity;
|
|
65
|
-
var canvasMaxHeight = Infinity;
|
|
66
|
-
|
|
67
|
-
if (globalThis.getComputedStyle) {
|
|
68
|
-
var style = globalThis.getComputedStyle(renderer.getCanvas(), null);
|
|
69
|
-
canvasMaxWidth = parseInt(style.maxWidth, 10) || Infinity;
|
|
70
|
-
canvasMaxHeight = parseInt(style.maxHeight, 10) || Infinity;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// get the maximum canvas size within the parent div containing the canvas container
|
|
74
|
-
var nodeBounds = device.getParentBounds(getParent());
|
|
75
|
-
|
|
76
|
-
var _max_width = Math.min(canvasMaxWidth, nodeBounds.width);
|
|
77
|
-
var _max_height = Math.min(canvasMaxHeight, nodeBounds.height);
|
|
78
|
-
|
|
79
|
-
// calculate final canvas width & height
|
|
80
|
-
var screenRatio = _max_width / _max_height;
|
|
81
|
-
|
|
82
|
-
if ((settings.scaleMethod === "fill-min" && screenRatio > designRatio) ||
|
|
83
|
-
(settings.scaleMethod === "fill-max" && screenRatio < designRatio) ||
|
|
84
|
-
(settings.scaleMethod === "flex-width")
|
|
85
|
-
) {
|
|
86
|
-
// resize the display canvas to fill the parent container
|
|
87
|
-
var sWidth = Math.min(canvasMaxWidth, designHeight * screenRatio);
|
|
88
|
-
scaleX = scaleY = _max_width / sWidth;
|
|
89
|
-
renderer.resize(Math.floor(sWidth), designHeight);
|
|
90
|
-
}
|
|
91
|
-
else if ((settings.scaleMethod === "fill-min" && screenRatio < designRatio) ||
|
|
92
|
-
(settings.scaleMethod === "fill-max" && screenRatio > designRatio) ||
|
|
93
|
-
(settings.scaleMethod === "flex-height")
|
|
94
|
-
) {
|
|
95
|
-
// resize the display canvas to fill the parent container
|
|
96
|
-
var sHeight = Math.min(canvasMaxHeight, designWidth * (_max_height / _max_width));
|
|
97
|
-
scaleX = scaleY = _max_height / sHeight;
|
|
98
|
-
renderer.resize(designWidth, Math.floor(sHeight));
|
|
99
|
-
}
|
|
100
|
-
else if (settings.scaleMethod === "flex") {
|
|
101
|
-
// resize the display canvas to fill the parent container
|
|
102
|
-
renderer.resize(Math.floor(_max_width), Math.floor(_max_height));
|
|
103
|
-
}
|
|
104
|
-
else if (settings.scaleMethod === "stretch") {
|
|
105
|
-
// scale the display canvas to fit with the parent container
|
|
106
|
-
scaleX = _max_width / designWidth;
|
|
107
|
-
scaleY = _max_height / designHeight;
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
// scale the display canvas to fit the parent container
|
|
111
|
-
// make sure we maintain the original aspect ratio
|
|
112
|
-
if (screenRatio < designRatio) {
|
|
113
|
-
scaleX = scaleY = _max_width / designWidth;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
scaleX = scaleY = _max_height / designHeight;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// adjust scaling ratio based on the new scaling ratio
|
|
121
|
-
scale(scaleX, scaleY);
|
|
122
|
-
} else {
|
|
123
|
-
// adjust scaling ratio based on the given settings
|
|
124
|
-
scale(settings.scale, settings.scale);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
48
|
|
|
128
49
|
/**
|
|
129
50
|
* Select the HTML5 Canvas renderer
|
|
130
|
-
* @name CANVAS
|
|
131
51
|
* @memberof video
|
|
132
52
|
* @constant
|
|
133
53
|
*/
|
|
@@ -135,7 +55,6 @@ export const CANVAS = 0;
|
|
|
135
55
|
|
|
136
56
|
/**
|
|
137
57
|
* Select the WebGL renderer
|
|
138
|
-
* @name WEBGL
|
|
139
58
|
* @memberof video
|
|
140
59
|
* @constant
|
|
141
60
|
*/
|
|
@@ -143,36 +62,15 @@ export const WEBGL = 1;
|
|
|
143
62
|
|
|
144
63
|
/**
|
|
145
64
|
* Auto-select the renderer (Attempt WebGL first, with fallback to Canvas)
|
|
146
|
-
* @name AUTO
|
|
147
65
|
* @memberof video
|
|
148
66
|
* @constant
|
|
149
67
|
*/
|
|
150
68
|
export const AUTO = 2;
|
|
151
69
|
|
|
152
|
-
/**
|
|
153
|
-
* the parent container of the main canvas element
|
|
154
|
-
* @ignore
|
|
155
|
-
* @type {HTMLElement}
|
|
156
|
-
* @readonly
|
|
157
|
-
* @name parent
|
|
158
|
-
* @memberof video
|
|
159
|
-
*/
|
|
160
|
-
export let parent = null;
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* the scaling ratio to be applied to the display canvas
|
|
164
|
-
* @name scaleRatio
|
|
165
|
-
* @type {Vector2d}
|
|
166
|
-
* @default <1,1>
|
|
167
|
-
* @memberof video
|
|
168
|
-
*/
|
|
169
|
-
export let scaleRatio = new Vector2d(1, 1);
|
|
170
|
-
|
|
171
70
|
/**
|
|
172
71
|
* A reference to the active Canvas or WebGL active renderer renderer
|
|
173
|
-
* @name renderer
|
|
174
|
-
* @type {CanvasRenderer|WebGLRenderer}
|
|
175
72
|
* @memberof video
|
|
73
|
+
* @type {CanvasRenderer|WebGLRenderer}
|
|
176
74
|
*/
|
|
177
75
|
export let renderer = null;
|
|
178
76
|
|
|
@@ -193,7 +91,7 @@ export let renderer = null;
|
|
|
193
91
|
* <center><img src="images/scale-flex-height.png"/></center><br>
|
|
194
92
|
* - <i><b>`stretch`</b></i> : Canvas is resized to fit; content is scaled to screen aspect ratio
|
|
195
93
|
* <center><img src="images/scale-stretch.png"/></center><br>
|
|
196
|
-
* @
|
|
94
|
+
* @memberof video
|
|
197
95
|
* @param {number} width - The width of the canvas viewport
|
|
198
96
|
* @param {number} height - The height of the canvas viewport
|
|
199
97
|
* @param {object} [options] - The optional video/renderer parameters.<br> (see Renderer(s) documentation for further specific options)
|
|
@@ -261,16 +159,10 @@ export function init(width, height, options) {
|
|
|
261
159
|
|
|
262
160
|
// normalize scale
|
|
263
161
|
settings.scale = (settings.autoScale) ? 1.0 : (+settings.scale || 1.0);
|
|
264
|
-
scaleRatio.set(settings.scale, settings.scale);
|
|
265
|
-
|
|
266
|
-
// hold the requested video size ratio
|
|
267
|
-
designRatio = width / height;
|
|
268
|
-
designWidth = width;
|
|
269
|
-
designHeight = height;
|
|
270
162
|
|
|
271
163
|
// default scaled size value
|
|
272
|
-
settings.zoomX = width *
|
|
273
|
-
settings.zoomY = height *
|
|
164
|
+
settings.zoomX = width * settings.scale;
|
|
165
|
+
settings.zoomY = height * settings.scale;
|
|
274
166
|
|
|
275
167
|
//add a channel for the onresize/onorientationchange event
|
|
276
168
|
globalThis.addEventListener(
|
|
@@ -310,10 +202,6 @@ export function init(width, height, options) {
|
|
|
310
202
|
event.emit(event.WINDOW_ONSCROLL, e);
|
|
311
203
|
}, 100), false);
|
|
312
204
|
|
|
313
|
-
// register to the channel
|
|
314
|
-
event.on(event.WINDOW_ONRESIZE, onresize, this);
|
|
315
|
-
event.on(event.WINDOW_ONORIENTATION_CHANGE, onresize, this);
|
|
316
|
-
|
|
317
205
|
try {
|
|
318
206
|
switch (settings.renderer) {
|
|
319
207
|
case AUTO:
|
|
@@ -330,9 +218,13 @@ export function init(width, height, options) {
|
|
|
330
218
|
return false;
|
|
331
219
|
}
|
|
332
220
|
|
|
221
|
+
// register to the channel
|
|
222
|
+
event.on(event.WINDOW_ONRESIZE, () => { onresize(renderer); }, this);
|
|
223
|
+
event.on(event.WINDOW_ONORIENTATION_CHANGE, () => { onresize(renderer); }, this);
|
|
224
|
+
|
|
333
225
|
// add our canvas (default to document.body if settings.parent is undefined)
|
|
334
|
-
|
|
335
|
-
|
|
226
|
+
game.parentElement = device.getElement(typeof settings.parent !== "undefined" ? settings.parent : document.body);
|
|
227
|
+
game.parentElement.appendChild(renderer.getCanvas());
|
|
336
228
|
|
|
337
229
|
// Mobile browser hacks
|
|
338
230
|
if (device.platform.isMobile) {
|
|
@@ -341,15 +233,15 @@ export function init(width, height, options) {
|
|
|
341
233
|
}
|
|
342
234
|
|
|
343
235
|
// trigger an initial resize();
|
|
344
|
-
onresize();
|
|
236
|
+
onresize(renderer);
|
|
345
237
|
|
|
346
238
|
// add an observer to detect when the dom tree is modified
|
|
347
239
|
if ("MutationObserver" in globalThis) {
|
|
348
240
|
// Create an observer instance linked to the callback function
|
|
349
|
-
var observer = new MutationObserver(onresize.bind(this));
|
|
241
|
+
var observer = new MutationObserver(onresize.bind(this, renderer));
|
|
350
242
|
|
|
351
243
|
// Start observing the target node for configured mutations
|
|
352
|
-
observer.observe(
|
|
244
|
+
observer.observe(game.parentElement, {
|
|
353
245
|
attributes: false, childList: true, subtree: true
|
|
354
246
|
});
|
|
355
247
|
}
|
|
@@ -380,7 +272,7 @@ export function init(width, height, options) {
|
|
|
380
272
|
|
|
381
273
|
/**
|
|
382
274
|
* Create and return a new Canvas element
|
|
383
|
-
* @
|
|
275
|
+
* @memberof video
|
|
384
276
|
* @param {number} width - width
|
|
385
277
|
* @param {number} height - height
|
|
386
278
|
* @param {boolean} [returnOffscreenCanvas=false] - will return an OffscreenCanvas if supported
|
|
@@ -412,42 +304,8 @@ export function createCanvas(width, height, returnOffscreenCanvas = false) {
|
|
|
412
304
|
|
|
413
305
|
/**
|
|
414
306
|
* return a reference to the parent DOM element holding the main canvas
|
|
415
|
-
* @function video.getParent
|
|
416
307
|
* @returns {HTMLElement}
|
|
417
308
|
*/
|
|
418
309
|
export function getParent() {
|
|
419
|
-
return
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
/**
|
|
423
|
-
* scale the "displayed" canvas by the given scalar.
|
|
424
|
-
* this will modify the size of canvas element directly.
|
|
425
|
-
* Only use this if you are not using the automatic scaling feature.
|
|
426
|
-
* @function video.scale
|
|
427
|
-
* @see video.init
|
|
428
|
-
* @param {number} x - x scaling multiplier
|
|
429
|
-
* @param {number} y - y scaling multiplier
|
|
430
|
-
*/
|
|
431
|
-
export function scale(x, y) {
|
|
432
|
-
var canvas = renderer.getCanvas();
|
|
433
|
-
var context = renderer.getContext();
|
|
434
|
-
var settings = renderer.settings;
|
|
435
|
-
var pixelRatio = device.devicePixelRatio;
|
|
436
|
-
|
|
437
|
-
var w = settings.zoomX = canvas.width * x * pixelRatio;
|
|
438
|
-
var h = settings.zoomY = canvas.height * y * pixelRatio;
|
|
439
|
-
|
|
440
|
-
// update the global scale variable
|
|
441
|
-
scaleRatio.set(x * pixelRatio, y * pixelRatio);
|
|
442
|
-
|
|
443
|
-
// adjust CSS style based on device pixel ratio
|
|
444
|
-
canvas.style.width = (w / pixelRatio) + "px";
|
|
445
|
-
canvas.style.height = (h / pixelRatio) + "px";
|
|
446
|
-
|
|
447
|
-
// if anti-alias and blend mode were resetted (e.g. Canvas mode)
|
|
448
|
-
renderer.setAntiAlias(context, settings.antiAlias);
|
|
449
|
-
renderer.setBlendMode(settings.blendMode, context);
|
|
450
|
-
|
|
451
|
-
// force repaint
|
|
452
|
-
game.repaint();
|
|
310
|
+
return game.getParentElement();
|
|
453
311
|
}
|