melonjs 14.1.2 → 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/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 +173 -22
- package/dist/melonjs.mjs/application/header.js +34 -0
- package/dist/melonjs.mjs/application/resize.js +119 -0
- 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 +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 +41 -61
- 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 +7 -8
- 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 +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 +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 +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 +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/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 +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 +9 -29
- 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 +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 +4 -29
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +4 -1
- package/dist/melonjs.mjs/video/renderer.js +26 -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 +21 -1
- package/dist/melonjs.mjs/video/utils/autodetect.js +27 -0
- package/dist/melonjs.mjs/video/utils/resize.js +116 -0
- package/dist/melonjs.mjs/video/video.js +20 -294
- 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 +28551 -26959
- 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 +14 -14
- package/src/application/application.js +171 -20
- package/src/application/header.js +25 -0
- package/src/application/resize.js +110 -0
- 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 +6 -7
- 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/plugin/plugin.js +1 -1
- 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 +7 -27
- package/src/system/dom.js +2 -1
- package/src/tweens/tween.js +1 -1
- package/src/utils/utils.js +3 -28
- package/src/video/canvas/canvas_renderer.js +3 -0
- package/src/video/renderer.js +27 -7
- package/src/video/texture/canvas_texture.js +20 -0
- package/src/video/utils/autodetect.js +18 -0
- package/src/video/video.js +17 -291
- 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
package/README.md
CHANGED
|
@@ -3,7 +3,6 @@ melonJS 2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
5
|
[](https://travis-ci.org/melonjs/melonJS)
|
|
6
|
-
[](https://lgtm.com/projects/g/melonjs/melonJS/context:javascript)
|
|
7
6
|
[](https://bundlephobia.com/result?p=melonjs)
|
|
8
7
|
[](https://www.npmjs.com/package/melonjs)
|
|
9
8
|
[](https://www.jsdelivr.com/package/npm/melonjs)
|
|
@@ -107,7 +106,7 @@ A few demos of melonJS capabilities :
|
|
|
107
106
|
* [Platformer Demo](https://melonjs.github.io/examples/platformer/)
|
|
108
107
|
* [Isometric Demo](https://melonjs.github.io/examples/isometric_rpg/)
|
|
109
108
|
* [Sprite Demo](https://melonjs.github.io/examples/sprite/)
|
|
110
|
-
* [Masking Demo](https://melonjs.github.io/examples/masking/)
|
|
109
|
+
* [Masking Demo](https://melonjs.github.io/examples/masking/) (WARNING: may potentially trigger seizures for people with photosensitive epilepsy)
|
|
111
110
|
* [Primitive Drawing Demo](https://melonjs.github.io/examples/graphics/)
|
|
112
111
|
* [UI Demo](https://melonjs.github.io/examples/UI/)
|
|
113
112
|
|
|
@@ -178,10 +177,10 @@ Or can simply be added to your html, using [jsDeliver](https://www.jsdelivr.com/
|
|
|
178
177
|
|
|
179
178
|
```html
|
|
180
179
|
<!-- load the ES6 module bundle of melonJS v10.0 -->
|
|
181
|
-
<script src="https://esm.run/melonjs@10.0"></script>
|
|
180
|
+
<script type="module" src="https://esm.run/melonjs@10.0"></script>
|
|
182
181
|
<!-- omit the version completely to get the latest one -->
|
|
183
182
|
<!-- you should NOT use this in production -->
|
|
184
|
-
<script src="https://esm.run/melonjs"></script>
|
|
183
|
+
<script type="module" src="https://esm.run/melonjs"></script>
|
|
185
184
|
```
|
|
186
185
|
> Note: starting from the 10.0.0 version, the debug plugin is no longer provided as part of the melonJS library release, and has been moved to the official [boilerplate](https://github.com/melonjs/es6-boilerplate)
|
|
187
186
|
|
|
@@ -1,10 +1,14 @@
|
|
|
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
|
-
var
|
|
8
|
+
var earcutExports = {};
|
|
9
|
+
var earcut = {
|
|
10
|
+
get exports(){ return earcutExports; },
|
|
11
|
+
set exports(v){ earcutExports = v; },
|
|
12
|
+
};
|
|
9
13
|
|
|
10
|
-
export { earcut as
|
|
14
|
+
export { earcut as __module, earcutExports as exports };
|
|
@@ -1,10 +1,14 @@
|
|
|
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
|
-
var
|
|
8
|
+
var eventemitter3Exports = {};
|
|
9
|
+
var eventemitter3 = {
|
|
10
|
+
get exports(){ return eventemitter3Exports; },
|
|
11
|
+
set exports(v){ eventemitter3Exports = v; },
|
|
12
|
+
};
|
|
9
13
|
|
|
10
|
-
export { eventemitter3 as
|
|
14
|
+
export { eventemitter3 as __module, eventemitter3Exports as exports };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.3
|
|
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
|
+
var makeBuiltIn = {exports: {}};
|
|
9
|
+
|
|
10
|
+
export { makeBuiltIn as m };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.3
|
|
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
|
+
var objectDefineProperty = {};
|
|
9
|
+
|
|
10
|
+
export { objectDefineProperty as __exports };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.3
|
|
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
|
+
var objectGetOwnPropertyDescriptor = {};
|
|
9
|
+
|
|
10
|
+
export { objectGetOwnPropertyDescriptor as __exports };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.3
|
|
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
|
+
var objectGetOwnPropertyNames = {};
|
|
9
|
+
|
|
10
|
+
export { objectGetOwnPropertyNames as __exports };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.3
|
|
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
|
+
var objectGetOwnPropertySymbols = {};
|
|
9
|
+
|
|
10
|
+
export { objectGetOwnPropertySymbols as __exports };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.3
|
|
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
|
+
var objectPropertyIsEnumerable = {};
|
|
9
|
+
|
|
10
|
+
export { objectPropertyIsEnumerable as __exports };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.3
|
|
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
|
+
var shared = {exports: {}};
|
|
9
|
+
|
|
10
|
+
export { shared as s };
|
|
@@ -1,15 +1,39 @@
|
|
|
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 { autoDetectRenderer } from '../video/utils/autodetect.js';
|
|
9
|
+
import CanvasRenderer from '../video/canvas/canvas_renderer.js';
|
|
10
|
+
import { getElement, platform, enableSwipe } from '../system/device.js';
|
|
11
|
+
import { on, emit, GAME_AFTER_UPDATE, GAME_BEFORE_DRAW, GAME_AFTER_DRAW, WINDOW_ONRESIZE, WINDOW_ONORIENTATION_CHANGE, GAME_INIT, GAME_RESET, GAME_BEFORE_UPDATE, GAME_UPDATE } from '../system/event.js';
|
|
12
|
+
import utils from '../utils/utils.js';
|
|
10
13
|
import timer from '../system/timer.js';
|
|
11
14
|
import state from '../state/state.js';
|
|
12
15
|
import World from '../physics/world.js';
|
|
16
|
+
import { onresize } from './resize.js';
|
|
17
|
+
import { defaultSettings } from './settings.js';
|
|
18
|
+
import { consoleHeader } from './header.js';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Select the HTML5 Canvas renderer
|
|
22
|
+
* @constant
|
|
23
|
+
*/
|
|
24
|
+
const CANVAS = 0;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Select the WebGL renderer
|
|
28
|
+
* @constant
|
|
29
|
+
*/
|
|
30
|
+
const WEBGL = 1;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Auto-select the renderer (Attempt WebGL first, with fallback to Canvas)
|
|
34
|
+
* @constant
|
|
35
|
+
*/
|
|
36
|
+
const AUTO = 2;
|
|
13
37
|
|
|
14
38
|
/**
|
|
15
39
|
* @classdesc
|
|
@@ -18,10 +42,37 @@ import World from '../physics/world.js';
|
|
|
18
42
|
* @see game
|
|
19
43
|
*/
|
|
20
44
|
class Application {
|
|
21
|
-
|
|
45
|
+
/**
|
|
46
|
+
* @param {number} width - The width of the canvas viewport
|
|
47
|
+
* @param {number} height - The height of the canvas viewport
|
|
48
|
+
* @param {object} [options] - The optional video/renderer parameters.<br> (see Renderer(s) documentation for further specific options)
|
|
49
|
+
* @param {string|HTMLElement} [options.parent=document.body] - the DOM parent element to hold the canvas in the HTML file
|
|
50
|
+
* @param {number|Renderer} [options.renderer=video.AUTO] - renderer to use (me.video.CANVAS, me.video.WEBGL, me.video.AUTO), or a custom renderer class
|
|
51
|
+
* @param {number|string} [options.scale=1.0] - enable scaling of the canvas ('auto' for automatic scaling)
|
|
52
|
+
* @param {string} [options.scaleMethod="fit"] - screen scaling modes ('fit','fill-min','fill-max','flex','flex-width','flex-height','stretch')
|
|
53
|
+
* @param {boolean} [options.preferWebGL1=false] - if true the renderer will only use WebGL 1
|
|
54
|
+
* @param {string} [options.powerPreference="default"] - a hint to the user agent indicating what configuration of GPU is suitable for the WebGL context ("default", "high-performance", "low-power"). To be noted that Safari and Chrome (since version 80) both default to "low-power" to save battery life and improve the user experience on these dual-GPU machines.
|
|
55
|
+
* @param {boolean} [options.transparent=false] - whether to allow transparent pixels in the front buffer (screen).
|
|
56
|
+
* @param {boolean} [options.antiAlias=false] - whether to enable or not video scaling interpolation
|
|
57
|
+
* @param {boolean} [options.consoleHeader=true] - whether to display melonJS version and basic device information in the console
|
|
58
|
+
* @throws Will throw an exception if it fails to instantiate a renderer
|
|
59
|
+
*/
|
|
60
|
+
constructor(width, height, options) {
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* the parent HTML element holding the main canvas of this application
|
|
64
|
+
* @type {HTMLElement}
|
|
65
|
+
*/
|
|
66
|
+
this.parentElement = undefined;
|
|
67
|
+
|
|
22
68
|
/**
|
|
23
|
-
* a reference to the
|
|
24
|
-
* @
|
|
69
|
+
* a reference to the active Canvas or WebGL active renderer renderer
|
|
70
|
+
* @type {CanvasRenderer|WebGLRenderer}
|
|
71
|
+
*/
|
|
72
|
+
this.renderer = undefined;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* the active stage "default" camera
|
|
25
76
|
* @type {Camera2d}
|
|
26
77
|
*/
|
|
27
78
|
this.viewport = undefined;
|
|
@@ -29,7 +80,6 @@ import World from '../physics/world.js';
|
|
|
29
80
|
/**
|
|
30
81
|
* a reference to the game world, <br>
|
|
31
82
|
* a world is a virtual environment containing all the game objects
|
|
32
|
-
* @public
|
|
33
83
|
* @type {World}
|
|
34
84
|
*/
|
|
35
85
|
this.world = undefined;
|
|
@@ -37,7 +87,6 @@ import World from '../physics/world.js';
|
|
|
37
87
|
/**
|
|
38
88
|
* when true, all objects will be added under the root world container.<br>
|
|
39
89
|
* When false, a `me.Container` object will be created for each corresponding groups
|
|
40
|
-
* @public
|
|
41
90
|
* @type {boolean}
|
|
42
91
|
* @default true
|
|
43
92
|
*/
|
|
@@ -46,7 +95,6 @@ import World from '../physics/world.js';
|
|
|
46
95
|
/**
|
|
47
96
|
* Specify the property to be used when sorting renderables.
|
|
48
97
|
* Accepted values : "x", "y", "z"
|
|
49
|
-
* @public
|
|
50
98
|
* @type {string}
|
|
51
99
|
* @default "z"
|
|
52
100
|
*/
|
|
@@ -57,13 +105,23 @@ import World from '../physics/world.js';
|
|
|
57
105
|
* Use this value to implement frame prediction in drawing events,
|
|
58
106
|
* for creating smooth motion while running game update logic at
|
|
59
107
|
* a lower fps.
|
|
60
|
-
* @public
|
|
61
108
|
* @type {DOMHighResTimeStamp}
|
|
62
|
-
* @name lastUpdate
|
|
63
|
-
* @memberof Application
|
|
64
109
|
*/
|
|
65
110
|
this.lastUpdate = 0;
|
|
66
111
|
|
|
112
|
+
/**
|
|
113
|
+
* true when this app instance has been initialized
|
|
114
|
+
* @type {boolean}
|
|
115
|
+
* @default false
|
|
116
|
+
*/
|
|
117
|
+
this.isInitialized = false;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* the given settings used when creating this application
|
|
121
|
+
* @type {Object}
|
|
122
|
+
*/
|
|
123
|
+
this.settings = undefined;
|
|
124
|
+
|
|
67
125
|
// to know when we have to refresh the display
|
|
68
126
|
this.isDirty = true;
|
|
69
127
|
|
|
@@ -85,17 +143,111 @@ import World from '../physics/world.js';
|
|
|
85
143
|
this.updateDelta = 0;
|
|
86
144
|
this.lastUpdateStart = null;
|
|
87
145
|
this.updateAverageDelta = 0;
|
|
146
|
+
|
|
147
|
+
// when using the default game application, legacy is set to true
|
|
148
|
+
// and init is called through the legacy video.init() call
|
|
149
|
+
if (options.legacy !== true) {
|
|
150
|
+
this.init(width, height, options);
|
|
151
|
+
}
|
|
88
152
|
}
|
|
89
153
|
|
|
90
154
|
/**
|
|
91
155
|
* init the game instance (create a physic world, update starting time, etc..)
|
|
92
156
|
*/
|
|
93
|
-
init() {
|
|
157
|
+
init(width, height, options) {
|
|
158
|
+
|
|
159
|
+
this.settings = Object.assign(defaultSettings, options || {});
|
|
160
|
+
|
|
161
|
+
// sanitize potential given parameters
|
|
162
|
+
this.settings.width = width;
|
|
163
|
+
this.settings.height = height;
|
|
164
|
+
this.settings.transparent = !!(this.settings.transparent);
|
|
165
|
+
this.settings.antiAlias = !!(this.settings.antiAlias);
|
|
166
|
+
this.settings.failIfMajorPerformanceCaveat = !!(this.settings.failIfMajorPerformanceCaveat);
|
|
167
|
+
this.settings.subPixel = !!(this.settings.subPixel);
|
|
168
|
+
this.settings.verbose = !!(this.settings.verbose);
|
|
169
|
+
if (this.settings.scaleMethod.search(/^(fill-(min|max)|fit|flex(-(width|height))?|stretch)$/) !== -1) {
|
|
170
|
+
this.settings.autoScale = (this.settings.scale === "auto") || true;
|
|
171
|
+
} else {
|
|
172
|
+
// default scaling method
|
|
173
|
+
this.settings.scaleMethod = "fit";
|
|
174
|
+
this.settings.autoScale = (this.settings.scale === "auto") || false;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// override renderer settings if &webgl or &canvas is defined in the URL
|
|
178
|
+
var uriFragment = utils.getUriFragment();
|
|
179
|
+
if (uriFragment.webgl === true || uriFragment.webgl1 === true || uriFragment.webgl2 === true) {
|
|
180
|
+
this.settings.renderer = WEBGL;
|
|
181
|
+
if (uriFragment.webgl1 === true) {
|
|
182
|
+
this.settings.preferWebGL1 = true;
|
|
183
|
+
}
|
|
184
|
+
} else if (uriFragment.canvas === true) {
|
|
185
|
+
this.settings.renderer = CANVAS;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// normalize scale
|
|
189
|
+
this.settings.scale = (this.settings.autoScale) ? 1.0 : (+this.settings.scale || 1.0);
|
|
190
|
+
|
|
191
|
+
// default scaled size value
|
|
192
|
+
this.settings.zoomX = width * this.settings.scale;
|
|
193
|
+
this.settings.zoomY = height * this.settings.scale;
|
|
194
|
+
|
|
195
|
+
if (typeof this.settings.renderer === "number") {
|
|
196
|
+
switch (this.settings.renderer) {
|
|
197
|
+
case AUTO:
|
|
198
|
+
case WEBGL:
|
|
199
|
+
this.renderer = autoDetectRenderer(this.settings);
|
|
200
|
+
break;
|
|
201
|
+
default:
|
|
202
|
+
this.renderer = new CanvasRenderer(this.settings);
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
} else {
|
|
206
|
+
var CustomRenderer = this.settings.renderer;
|
|
207
|
+
// a renderer class
|
|
208
|
+
this.renderer = new CustomRenderer(this.settings);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// register to the channel
|
|
212
|
+
on(WINDOW_ONRESIZE, () => { onresize(this); }, this);
|
|
213
|
+
on(WINDOW_ONORIENTATION_CHANGE, () => { onresize(this); }, this);
|
|
214
|
+
|
|
215
|
+
// add our canvas (default to document.body if settings.parent is undefined)
|
|
216
|
+
this.parentElement = getElement(this.settings.parent);
|
|
217
|
+
this.parentElement.appendChild(this.renderer.getCanvas());
|
|
218
|
+
|
|
219
|
+
// Mobile browser hacks
|
|
220
|
+
if (platform.isMobile) {
|
|
221
|
+
// Prevent the webview from moving on a swipe
|
|
222
|
+
enableSwipe(false);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// trigger an initial resize();
|
|
226
|
+
onresize(this);
|
|
227
|
+
|
|
228
|
+
// add an observer to detect when the dom tree is modified
|
|
229
|
+
if ("MutationObserver" in globalThis) {
|
|
230
|
+
// Create an observer instance linked to the callback function
|
|
231
|
+
var observer = new MutationObserver(onresize.bind(this, this));
|
|
232
|
+
|
|
233
|
+
// Start observing the target node for configured mutations
|
|
234
|
+
observer.observe(this.parentElement, {
|
|
235
|
+
attributes: false, childList: true, subtree: true
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (this.settings.consoleHeader !== false) {
|
|
240
|
+
consoleHeader(this);
|
|
241
|
+
}
|
|
242
|
+
|
|
94
243
|
// create a new physic world
|
|
95
244
|
this.world = new World();
|
|
96
245
|
// set the reference to this application instance
|
|
97
246
|
this.world.app = this;
|
|
98
247
|
this.lastUpdate = globalThis.performance.now();
|
|
248
|
+
|
|
249
|
+
this.isInitialized = true;
|
|
250
|
+
|
|
99
251
|
emit(GAME_INIT, this);
|
|
100
252
|
}
|
|
101
253
|
|
|
@@ -147,12 +299,11 @@ import World from '../physics/world.js';
|
|
|
147
299
|
}
|
|
148
300
|
|
|
149
301
|
/**
|
|
150
|
-
* Returns the parent
|
|
151
|
-
* @
|
|
152
|
-
* @returns {Container}
|
|
302
|
+
* Returns the parent HTML Element holding the main canvas of this application
|
|
303
|
+
* @returns {HTMLElement}
|
|
153
304
|
*/
|
|
154
|
-
|
|
155
|
-
return
|
|
305
|
+
getParentElement() {
|
|
306
|
+
return this.parentElement;
|
|
156
307
|
}
|
|
157
308
|
|
|
158
309
|
/**
|
|
@@ -213,21 +364,21 @@ import World from '../physics/world.js';
|
|
|
213
364
|
* @param {Stage} stage - the current stage
|
|
214
365
|
*/
|
|
215
366
|
draw(stage) {
|
|
216
|
-
if (renderer.isContextValid === true && (this.isDirty || this.isAlwaysDirty)) {
|
|
367
|
+
if (this.renderer.isContextValid === true && (this.isDirty || this.isAlwaysDirty)) {
|
|
217
368
|
// publish notification
|
|
218
369
|
emit(GAME_BEFORE_DRAW, globalThis.performance.now());
|
|
219
370
|
|
|
220
371
|
// prepare renderer to draw a new frame
|
|
221
|
-
renderer.clear();
|
|
372
|
+
this.renderer.clear();
|
|
222
373
|
|
|
223
374
|
// render the stage
|
|
224
|
-
stage.draw(renderer);
|
|
375
|
+
stage.draw(this.renderer);
|
|
225
376
|
|
|
226
377
|
// set back to flag
|
|
227
378
|
this.isDirty = false;
|
|
228
379
|
|
|
229
380
|
// flush/render our frame
|
|
230
|
-
renderer.flush();
|
|
381
|
+
this.renderer.flush();
|
|
231
382
|
|
|
232
383
|
// publish notification
|
|
233
384
|
emit(GAME_AFTER_DRAW, globalThis.performance.now());
|
|
@@ -0,0 +1,34 @@
|
|
|
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 { devicePixelRatio, platform, getScreenOrientation, language, hasWebAudio } from '../system/device.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* display information
|
|
12
|
+
* @param {Application} game - the game application instance calling this function
|
|
13
|
+
*/
|
|
14
|
+
function consoleHeader(app) {
|
|
15
|
+
var renderType = app.renderer.type;
|
|
16
|
+
var gpu_renderer = (typeof app.renderer.GPURenderer === "string") ? " (" + app.renderer.GPURenderer + ")" : "";
|
|
17
|
+
var audioType = hasWebAudio ? "Web Audio" : "HTML5 Audio";
|
|
18
|
+
|
|
19
|
+
// output video information in the console
|
|
20
|
+
console.log(
|
|
21
|
+
renderType + " renderer" + gpu_renderer + " | " +
|
|
22
|
+
audioType + " | " +
|
|
23
|
+
"pixel ratio " + devicePixelRatio + " | " +
|
|
24
|
+
(platform.nodeJS ? "node.js" : platform.isMobile ? "mobile" : "desktop") + " | " +
|
|
25
|
+
getScreenOrientation() + " | " +
|
|
26
|
+
language
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
console.log( "resolution: " + "requested " + app.settings.width + "x" + app.settings.height +
|
|
30
|
+
", got " + app.renderer.getWidth() + "x" + app.renderer.getHeight()
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { consoleHeader };
|
|
@@ -0,0 +1,119 @@
|
|
|
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 { getParentBounds, devicePixelRatio } from '../system/device.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* scale the "displayed" canvas by the given scalar.
|
|
12
|
+
* this will modify the size of canvas element directly.
|
|
13
|
+
* Only use this if you are not using the automatic scaling feature.
|
|
14
|
+
* @param {Application} game - the game application instance triggering the resize
|
|
15
|
+
* @param {number} x - x scaling multiplier
|
|
16
|
+
* @param {number} y - y scaling multiplier
|
|
17
|
+
*/
|
|
18
|
+
function scale(game, x, y) {
|
|
19
|
+
var renderer = game.renderer;
|
|
20
|
+
var canvas = renderer.getCanvas();
|
|
21
|
+
var context = renderer.getContext();
|
|
22
|
+
var settings = renderer.settings;
|
|
23
|
+
var pixelRatio = devicePixelRatio;
|
|
24
|
+
|
|
25
|
+
var w = settings.zoomX = canvas.width * x * pixelRatio;
|
|
26
|
+
var h = settings.zoomY = canvas.height * y * pixelRatio;
|
|
27
|
+
|
|
28
|
+
// update the global scale variable
|
|
29
|
+
renderer.scaleRatio.set(x * pixelRatio, y * pixelRatio);
|
|
30
|
+
|
|
31
|
+
// adjust CSS style based on device pixel ratio
|
|
32
|
+
canvas.style.width = (w / pixelRatio) + "px";
|
|
33
|
+
canvas.style.height = (h / pixelRatio) + "px";
|
|
34
|
+
|
|
35
|
+
// if anti-alias and blend mode were resetted (e.g. Canvas mode)
|
|
36
|
+
renderer.setAntiAlias(context, settings.antiAlias);
|
|
37
|
+
renderer.setBlendMode(settings.blendMode, context);
|
|
38
|
+
|
|
39
|
+
// force repaint
|
|
40
|
+
game.repaint();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* callback for window resize event
|
|
45
|
+
* @param {Application} game - the game application instance triggering the resize
|
|
46
|
+
*/
|
|
47
|
+
function onresize(game) {
|
|
48
|
+
var renderer = game.renderer;
|
|
49
|
+
var settings = renderer.settings;
|
|
50
|
+
var scaleX = 1, scaleY = 1;
|
|
51
|
+
|
|
52
|
+
if (settings.autoScale) {
|
|
53
|
+
|
|
54
|
+
// set max the canvas max size if CSS values are defined
|
|
55
|
+
var canvasMaxWidth = Infinity;
|
|
56
|
+
var canvasMaxHeight = Infinity;
|
|
57
|
+
|
|
58
|
+
if (globalThis.getComputedStyle) {
|
|
59
|
+
var style = globalThis.getComputedStyle(renderer.getCanvas(), null);
|
|
60
|
+
canvasMaxWidth = parseInt(style.maxWidth, 10) || Infinity;
|
|
61
|
+
canvasMaxHeight = parseInt(style.maxHeight, 10) || Infinity;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// get the maximum canvas size within the parent div containing the canvas container
|
|
65
|
+
var nodeBounds = getParentBounds(game.getParentElement());
|
|
66
|
+
|
|
67
|
+
var _max_width = Math.min(canvasMaxWidth, nodeBounds.width);
|
|
68
|
+
var _max_height = Math.min(canvasMaxHeight, nodeBounds.height);
|
|
69
|
+
|
|
70
|
+
// calculate final canvas width & height
|
|
71
|
+
var screenRatio = _max_width / _max_height;
|
|
72
|
+
|
|
73
|
+
if ((settings.scaleMethod === "fill-min" && screenRatio > renderer.designRatio) ||
|
|
74
|
+
(settings.scaleMethod === "fill-max" && screenRatio < renderer.designRatio) ||
|
|
75
|
+
(settings.scaleMethod === "flex-width")
|
|
76
|
+
) {
|
|
77
|
+
// resize the display canvas to fill the parent container
|
|
78
|
+
var sWidth = Math.min(canvasMaxWidth, settings.height * screenRatio);
|
|
79
|
+
scaleX = scaleY = _max_width / sWidth;
|
|
80
|
+
renderer.resize(Math.floor(sWidth), settings.height);
|
|
81
|
+
}
|
|
82
|
+
else if ((settings.scaleMethod === "fill-min" && screenRatio < renderer.designRatio) ||
|
|
83
|
+
(settings.scaleMethod === "fill-max" && screenRatio > renderer.designRatio) ||
|
|
84
|
+
(settings.scaleMethod === "flex-height")
|
|
85
|
+
) {
|
|
86
|
+
// resize the display canvas to fill the parent container
|
|
87
|
+
var sHeight = Math.min(canvasMaxHeight, settings.width * (_max_height / _max_width));
|
|
88
|
+
scaleX = scaleY = _max_height / sHeight;
|
|
89
|
+
renderer.resize(settings.width, Math.floor(sHeight));
|
|
90
|
+
}
|
|
91
|
+
else if (settings.scaleMethod === "flex") {
|
|
92
|
+
// resize the display canvas to fill the parent container
|
|
93
|
+
renderer.resize(Math.floor(_max_width), Math.floor(_max_height));
|
|
94
|
+
}
|
|
95
|
+
else if (settings.scaleMethod === "stretch") {
|
|
96
|
+
// scale the display canvas to fit with the parent container
|
|
97
|
+
scaleX = _max_width / settings.width;
|
|
98
|
+
scaleY = _max_height / settings.height;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// scale the display canvas to fit the parent container
|
|
102
|
+
// make sure we maintain the original aspect ratio
|
|
103
|
+
if (screenRatio < renderer.designRatio) {
|
|
104
|
+
scaleX = scaleY = _max_width / settings.width;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
scaleX = scaleY = _max_height / settings.height;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// adjust scaling ratio based on the new scaling ratio
|
|
112
|
+
scale(game, scaleX, scaleY);
|
|
113
|
+
} else {
|
|
114
|
+
// adjust scaling ratio based on the given settings
|
|
115
|
+
scale(game, settings.scale, settings.scale);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export { onresize };
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
// default settings
|
|
9
|
+
const defaultSettings = {
|
|
10
|
+
parent : undefined,
|
|
11
|
+
renderer : 2, // AUTO
|
|
12
|
+
autoScale : false,
|
|
13
|
+
scale : 1.0,
|
|
14
|
+
scaleMethod : "manual",
|
|
15
|
+
transparent : false,
|
|
16
|
+
premultipliedAlpha: true,
|
|
17
|
+
blendMode : "normal",
|
|
18
|
+
antiAlias : false,
|
|
19
|
+
failIfMajorPerformanceCaveat : true,
|
|
20
|
+
subPixel : false,
|
|
21
|
+
preferWebGL1 : false,
|
|
22
|
+
powerPreference : "default",
|
|
23
|
+
verbose : false,
|
|
24
|
+
consoleHeader : true,
|
|
25
|
+
legacy : false
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { defaultSettings };
|