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
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v14.
|
|
2
|
+
* melonJS Game Engine - v14.2.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 Vector2d from '../math/vector2.js';
|
|
9
8
|
import WebGLRenderer from './webgl/webgl_renderer.js';
|
|
10
9
|
import CanvasRenderer from './canvas/canvas_renderer.js';
|
|
11
10
|
import utils from '../utils/utils.js';
|
|
12
11
|
import { emit, WINDOW_ONRESIZE, WINDOW_ONORIENTATION_CHANGE, WINDOW_ONSCROLL, on, VIDEO_INIT } from '../system/event.js';
|
|
13
|
-
import
|
|
14
|
-
import { offscreenCanvas, screenOrientation, getElement, platform, enableSwipe, devicePixelRatio, getScreenOrientation, language, isWebGLSupported, getParentBounds, hasWebAudio } from '../system/device.js';
|
|
12
|
+
import { offscreenCanvas, screenOrientation, getElement, platform, enableSwipe, devicePixelRatio, getScreenOrientation, language, isWebGLSupported, hasWebAudio } from '../system/device.js';
|
|
15
13
|
import { initialized, version } from '../index.js';
|
|
14
|
+
import game from '../game.js';
|
|
15
|
+
import { onresize } from './utils/resize.js';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
* video functions
|
|
19
18
|
* @namespace video
|
|
20
19
|
*/
|
|
21
20
|
|
|
22
|
-
var designRatio = 1;
|
|
23
|
-
var designWidth = 0;
|
|
24
|
-
var designHeight = 0;
|
|
25
|
-
|
|
26
21
|
// default video settings
|
|
27
22
|
var settings = {
|
|
28
23
|
parent : undefined,
|
|
@@ -57,84 +52,9 @@ function autoDetectRenderer(options) {
|
|
|
57
52
|
return new CanvasRenderer(options);
|
|
58
53
|
}
|
|
59
54
|
|
|
60
|
-
/**
|
|
61
|
-
* callback for window resize event
|
|
62
|
-
* @ignore
|
|
63
|
-
*/
|
|
64
|
-
function onresize() {
|
|
65
|
-
var settings = renderer.settings;
|
|
66
|
-
var scaleX = 1, scaleY = 1;
|
|
67
|
-
|
|
68
|
-
if (settings.autoScale) {
|
|
69
|
-
|
|
70
|
-
// set max the canvas max size if CSS values are defined
|
|
71
|
-
var canvasMaxWidth = Infinity;
|
|
72
|
-
var canvasMaxHeight = Infinity;
|
|
73
|
-
|
|
74
|
-
if (globalThis.getComputedStyle) {
|
|
75
|
-
var style = globalThis.getComputedStyle(renderer.getCanvas(), null);
|
|
76
|
-
canvasMaxWidth = parseInt(style.maxWidth, 10) || Infinity;
|
|
77
|
-
canvasMaxHeight = parseInt(style.maxHeight, 10) || Infinity;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// get the maximum canvas size within the parent div containing the canvas container
|
|
81
|
-
var nodeBounds = getParentBounds(getParent());
|
|
82
|
-
|
|
83
|
-
var _max_width = Math.min(canvasMaxWidth, nodeBounds.width);
|
|
84
|
-
var _max_height = Math.min(canvasMaxHeight, nodeBounds.height);
|
|
85
|
-
|
|
86
|
-
// calculate final canvas width & height
|
|
87
|
-
var screenRatio = _max_width / _max_height;
|
|
88
|
-
|
|
89
|
-
if ((settings.scaleMethod === "fill-min" && screenRatio > designRatio) ||
|
|
90
|
-
(settings.scaleMethod === "fill-max" && screenRatio < designRatio) ||
|
|
91
|
-
(settings.scaleMethod === "flex-width")
|
|
92
|
-
) {
|
|
93
|
-
// resize the display canvas to fill the parent container
|
|
94
|
-
var sWidth = Math.min(canvasMaxWidth, designHeight * screenRatio);
|
|
95
|
-
scaleX = scaleY = _max_width / sWidth;
|
|
96
|
-
renderer.resize(Math.floor(sWidth), designHeight);
|
|
97
|
-
}
|
|
98
|
-
else if ((settings.scaleMethod === "fill-min" && screenRatio < designRatio) ||
|
|
99
|
-
(settings.scaleMethod === "fill-max" && screenRatio > designRatio) ||
|
|
100
|
-
(settings.scaleMethod === "flex-height")
|
|
101
|
-
) {
|
|
102
|
-
// resize the display canvas to fill the parent container
|
|
103
|
-
var sHeight = Math.min(canvasMaxHeight, designWidth * (_max_height / _max_width));
|
|
104
|
-
scaleX = scaleY = _max_height / sHeight;
|
|
105
|
-
renderer.resize(designWidth, Math.floor(sHeight));
|
|
106
|
-
}
|
|
107
|
-
else if (settings.scaleMethod === "flex") {
|
|
108
|
-
// resize the display canvas to fill the parent container
|
|
109
|
-
renderer.resize(Math.floor(_max_width), Math.floor(_max_height));
|
|
110
|
-
}
|
|
111
|
-
else if (settings.scaleMethod === "stretch") {
|
|
112
|
-
// scale the display canvas to fit with the parent container
|
|
113
|
-
scaleX = _max_width / designWidth;
|
|
114
|
-
scaleY = _max_height / designHeight;
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
// scale the display canvas to fit the parent container
|
|
118
|
-
// make sure we maintain the original aspect ratio
|
|
119
|
-
if (screenRatio < designRatio) {
|
|
120
|
-
scaleX = scaleY = _max_width / designWidth;
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
scaleX = scaleY = _max_height / designHeight;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// adjust scaling ratio based on the new scaling ratio
|
|
128
|
-
scale(scaleX, scaleY);
|
|
129
|
-
} else {
|
|
130
|
-
// adjust scaling ratio based on the given settings
|
|
131
|
-
scale(settings.scale, settings.scale);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
55
|
|
|
135
56
|
/**
|
|
136
57
|
* Select the HTML5 Canvas renderer
|
|
137
|
-
* @name CANVAS
|
|
138
58
|
* @memberof video
|
|
139
59
|
* @constant
|
|
140
60
|
*/
|
|
@@ -142,7 +62,6 @@ const CANVAS = 0;
|
|
|
142
62
|
|
|
143
63
|
/**
|
|
144
64
|
* Select the WebGL renderer
|
|
145
|
-
* @name WEBGL
|
|
146
65
|
* @memberof video
|
|
147
66
|
* @constant
|
|
148
67
|
*/
|
|
@@ -150,36 +69,15 @@ const WEBGL = 1;
|
|
|
150
69
|
|
|
151
70
|
/**
|
|
152
71
|
* Auto-select the renderer (Attempt WebGL first, with fallback to Canvas)
|
|
153
|
-
* @name AUTO
|
|
154
72
|
* @memberof video
|
|
155
73
|
* @constant
|
|
156
74
|
*/
|
|
157
75
|
const AUTO = 2;
|
|
158
76
|
|
|
159
|
-
/**
|
|
160
|
-
* the parent container of the main canvas element
|
|
161
|
-
* @ignore
|
|
162
|
-
* @type {HTMLElement}
|
|
163
|
-
* @readonly
|
|
164
|
-
* @name parent
|
|
165
|
-
* @memberof video
|
|
166
|
-
*/
|
|
167
|
-
let parent = null;
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* the scaling ratio to be applied to the display canvas
|
|
171
|
-
* @name scaleRatio
|
|
172
|
-
* @type {Vector2d}
|
|
173
|
-
* @default <1,1>
|
|
174
|
-
* @memberof video
|
|
175
|
-
*/
|
|
176
|
-
let scaleRatio = new Vector2d(1, 1);
|
|
177
|
-
|
|
178
77
|
/**
|
|
179
78
|
* A reference to the active Canvas or WebGL active renderer renderer
|
|
180
|
-
* @name renderer
|
|
181
|
-
* @type {CanvasRenderer|WebGLRenderer}
|
|
182
79
|
* @memberof video
|
|
80
|
+
* @type {CanvasRenderer|WebGLRenderer}
|
|
183
81
|
*/
|
|
184
82
|
let renderer = null;
|
|
185
83
|
|
|
@@ -200,7 +98,7 @@ let renderer = null;
|
|
|
200
98
|
* <center><img src="images/scale-flex-height.png"/></center><br>
|
|
201
99
|
* - <i><b>`stretch`</b></i> : Canvas is resized to fit; content is scaled to screen aspect ratio
|
|
202
100
|
* <center><img src="images/scale-stretch.png"/></center><br>
|
|
203
|
-
* @
|
|
101
|
+
* @memberof video
|
|
204
102
|
* @param {number} width - The width of the canvas viewport
|
|
205
103
|
* @param {number} height - The height of the canvas viewport
|
|
206
104
|
* @param {object} [options] - The optional video/renderer parameters.<br> (see Renderer(s) documentation for further specific options)
|
|
@@ -268,16 +166,10 @@ function init(width, height, options) {
|
|
|
268
166
|
|
|
269
167
|
// normalize scale
|
|
270
168
|
settings.scale = (settings.autoScale) ? 1.0 : (+settings.scale || 1.0);
|
|
271
|
-
scaleRatio.set(settings.scale, settings.scale);
|
|
272
|
-
|
|
273
|
-
// hold the requested video size ratio
|
|
274
|
-
designRatio = width / height;
|
|
275
|
-
designWidth = width;
|
|
276
|
-
designHeight = height;
|
|
277
169
|
|
|
278
170
|
// default scaled size value
|
|
279
|
-
settings.zoomX = width *
|
|
280
|
-
settings.zoomY = height *
|
|
171
|
+
settings.zoomX = width * settings.scale;
|
|
172
|
+
settings.zoomY = height * settings.scale;
|
|
281
173
|
|
|
282
174
|
//add a channel for the onresize/onorientationchange event
|
|
283
175
|
globalThis.addEventListener(
|
|
@@ -317,10 +209,6 @@ function init(width, height, options) {
|
|
|
317
209
|
emit(WINDOW_ONSCROLL, e);
|
|
318
210
|
}, 100), false);
|
|
319
211
|
|
|
320
|
-
// register to the channel
|
|
321
|
-
on(WINDOW_ONRESIZE, onresize, this);
|
|
322
|
-
on(WINDOW_ONORIENTATION_CHANGE, onresize, this);
|
|
323
|
-
|
|
324
212
|
try {
|
|
325
213
|
switch (settings.renderer) {
|
|
326
214
|
case AUTO:
|
|
@@ -337,9 +225,13 @@ function init(width, height, options) {
|
|
|
337
225
|
return false;
|
|
338
226
|
}
|
|
339
227
|
|
|
228
|
+
// register to the channel
|
|
229
|
+
on(WINDOW_ONRESIZE, () => { onresize(renderer); }, this);
|
|
230
|
+
on(WINDOW_ONORIENTATION_CHANGE, () => { onresize(renderer); }, this);
|
|
231
|
+
|
|
340
232
|
// add our canvas (default to document.body if settings.parent is undefined)
|
|
341
|
-
|
|
342
|
-
|
|
233
|
+
game.parentElement = getElement(typeof settings.parent !== "undefined" ? settings.parent : document.body);
|
|
234
|
+
game.parentElement.appendChild(renderer.getCanvas());
|
|
343
235
|
|
|
344
236
|
// Mobile browser hacks
|
|
345
237
|
if (platform.isMobile) {
|
|
@@ -348,15 +240,15 @@ function init(width, height, options) {
|
|
|
348
240
|
}
|
|
349
241
|
|
|
350
242
|
// trigger an initial resize();
|
|
351
|
-
onresize();
|
|
243
|
+
onresize(renderer);
|
|
352
244
|
|
|
353
245
|
// add an observer to detect when the dom tree is modified
|
|
354
246
|
if ("MutationObserver" in globalThis) {
|
|
355
247
|
// Create an observer instance linked to the callback function
|
|
356
|
-
var observer = new MutationObserver(onresize.bind(this));
|
|
248
|
+
var observer = new MutationObserver(onresize.bind(this, renderer));
|
|
357
249
|
|
|
358
250
|
// Start observing the target node for configured mutations
|
|
359
|
-
observer.observe(
|
|
251
|
+
observer.observe(game.parentElement, {
|
|
360
252
|
attributes: false, childList: true, subtree: true
|
|
361
253
|
});
|
|
362
254
|
}
|
|
@@ -387,7 +279,7 @@ function init(width, height, options) {
|
|
|
387
279
|
|
|
388
280
|
/**
|
|
389
281
|
* Create and return a new Canvas element
|
|
390
|
-
* @
|
|
282
|
+
* @memberof video
|
|
391
283
|
* @param {number} width - width
|
|
392
284
|
* @param {number} height - height
|
|
393
285
|
* @param {boolean} [returnOffscreenCanvas=false] - will return an OffscreenCanvas if supported
|
|
@@ -419,44 +311,10 @@ function createCanvas(width, height, returnOffscreenCanvas = false) {
|
|
|
419
311
|
|
|
420
312
|
/**
|
|
421
313
|
* return a reference to the parent DOM element holding the main canvas
|
|
422
|
-
* @function video.getParent
|
|
423
314
|
* @returns {HTMLElement}
|
|
424
315
|
*/
|
|
425
316
|
function getParent() {
|
|
426
|
-
return
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
/**
|
|
430
|
-
* scale the "displayed" canvas by the given scalar.
|
|
431
|
-
* this will modify the size of canvas element directly.
|
|
432
|
-
* Only use this if you are not using the automatic scaling feature.
|
|
433
|
-
* @function video.scale
|
|
434
|
-
* @see video.init
|
|
435
|
-
* @param {number} x - x scaling multiplier
|
|
436
|
-
* @param {number} y - y scaling multiplier
|
|
437
|
-
*/
|
|
438
|
-
function scale(x, y) {
|
|
439
|
-
var canvas = renderer.getCanvas();
|
|
440
|
-
var context = renderer.getContext();
|
|
441
|
-
var settings = renderer.settings;
|
|
442
|
-
var pixelRatio = devicePixelRatio;
|
|
443
|
-
|
|
444
|
-
var w = settings.zoomX = canvas.width * x * pixelRatio;
|
|
445
|
-
var h = settings.zoomY = canvas.height * y * pixelRatio;
|
|
446
|
-
|
|
447
|
-
// update the global scale variable
|
|
448
|
-
scaleRatio.set(x * pixelRatio, y * pixelRatio);
|
|
449
|
-
|
|
450
|
-
// adjust CSS style based on device pixel ratio
|
|
451
|
-
canvas.style.width = (w / pixelRatio) + "px";
|
|
452
|
-
canvas.style.height = (h / pixelRatio) + "px";
|
|
453
|
-
|
|
454
|
-
// if anti-alias and blend mode were resetted (e.g. Canvas mode)
|
|
455
|
-
renderer.setAntiAlias(context, settings.antiAlias);
|
|
456
|
-
renderer.setBlendMode(settings.blendMode, context);
|
|
457
|
-
|
|
458
|
-
// force repaint
|
|
459
|
-
game.repaint();
|
|
317
|
+
return game.getParentElement();
|
|
460
318
|
}
|
|
461
319
|
|
|
462
|
-
export { AUTO, CANVAS, WEBGL, createCanvas, getParent, init,
|
|
320
|
+
export { AUTO, CANVAS, WEBGL, createCanvas, getParent, init, renderer };
|