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
|
@@ -1,8 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { autoDetectRenderer } from "../video/utils/autodetect.js";
|
|
2
|
+
import CanvasRenderer from "./../video/canvas/canvas_renderer.js";
|
|
3
|
+
import * as device from "./../system/device.js";
|
|
2
4
|
import * as event from "./../system/event.js";
|
|
5
|
+
import utils from "./../utils/utils.js";
|
|
3
6
|
import timer from "./../system/timer.js";
|
|
4
7
|
import state from "./../state/state.js";
|
|
5
8
|
import World from "./../physics/world.js";
|
|
9
|
+
import { onresize } from "./resize.js";
|
|
10
|
+
import { defaultSettings } from "./settings.js";
|
|
11
|
+
import { consoleHeader } from "./header.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Select the HTML5 Canvas renderer
|
|
15
|
+
* @constant
|
|
16
|
+
*/
|
|
17
|
+
const CANVAS = 0;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Select the WebGL renderer
|
|
21
|
+
* @constant
|
|
22
|
+
*/
|
|
23
|
+
const WEBGL = 1;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Auto-select the renderer (Attempt WebGL first, with fallback to Canvas)
|
|
27
|
+
* @constant
|
|
28
|
+
*/
|
|
29
|
+
const AUTO = 2;
|
|
6
30
|
|
|
7
31
|
/**
|
|
8
32
|
* @classdesc
|
|
@@ -11,10 +35,37 @@ import World from "./../physics/world.js";
|
|
|
11
35
|
* @see game
|
|
12
36
|
*/
|
|
13
37
|
export default class Application {
|
|
14
|
-
|
|
38
|
+
/**
|
|
39
|
+
* @param {number} width - The width of the canvas viewport
|
|
40
|
+
* @param {number} height - The height of the canvas viewport
|
|
41
|
+
* @param {object} [options] - The optional video/renderer parameters.<br> (see Renderer(s) documentation for further specific options)
|
|
42
|
+
* @param {string|HTMLElement} [options.parent=document.body] - the DOM parent element to hold the canvas in the HTML file
|
|
43
|
+
* @param {number|Renderer} [options.renderer=video.AUTO] - renderer to use (me.video.CANVAS, me.video.WEBGL, me.video.AUTO), or a custom renderer class
|
|
44
|
+
* @param {number|string} [options.scale=1.0] - enable scaling of the canvas ('auto' for automatic scaling)
|
|
45
|
+
* @param {string} [options.scaleMethod="fit"] - screen scaling modes ('fit','fill-min','fill-max','flex','flex-width','flex-height','stretch')
|
|
46
|
+
* @param {boolean} [options.preferWebGL1=false] - if true the renderer will only use WebGL 1
|
|
47
|
+
* @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.
|
|
48
|
+
* @param {boolean} [options.transparent=false] - whether to allow transparent pixels in the front buffer (screen).
|
|
49
|
+
* @param {boolean} [options.antiAlias=false] - whether to enable or not video scaling interpolation
|
|
50
|
+
* @param {boolean} [options.consoleHeader=true] - whether to display melonJS version and basic device information in the console
|
|
51
|
+
* @throws Will throw an exception if it fails to instantiate a renderer
|
|
52
|
+
*/
|
|
53
|
+
constructor(width, height, options) {
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* the parent HTML element holding the main canvas of this application
|
|
57
|
+
* @type {HTMLElement}
|
|
58
|
+
*/
|
|
59
|
+
this.parentElement = undefined;
|
|
60
|
+
|
|
15
61
|
/**
|
|
16
|
-
* a reference to the
|
|
17
|
-
* @
|
|
62
|
+
* a reference to the active Canvas or WebGL active renderer renderer
|
|
63
|
+
* @type {CanvasRenderer|WebGLRenderer}
|
|
64
|
+
*/
|
|
65
|
+
this.renderer = undefined;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* the active stage "default" camera
|
|
18
69
|
* @type {Camera2d}
|
|
19
70
|
*/
|
|
20
71
|
this.viewport = undefined;
|
|
@@ -22,7 +73,6 @@ import World from "./../physics/world.js";
|
|
|
22
73
|
/**
|
|
23
74
|
* a reference to the game world, <br>
|
|
24
75
|
* a world is a virtual environment containing all the game objects
|
|
25
|
-
* @public
|
|
26
76
|
* @type {World}
|
|
27
77
|
*/
|
|
28
78
|
this.world = undefined;
|
|
@@ -30,7 +80,6 @@ import World from "./../physics/world.js";
|
|
|
30
80
|
/**
|
|
31
81
|
* when true, all objects will be added under the root world container.<br>
|
|
32
82
|
* When false, a `me.Container` object will be created for each corresponding groups
|
|
33
|
-
* @public
|
|
34
83
|
* @type {boolean}
|
|
35
84
|
* @default true
|
|
36
85
|
*/
|
|
@@ -39,7 +88,6 @@ import World from "./../physics/world.js";
|
|
|
39
88
|
/**
|
|
40
89
|
* Specify the property to be used when sorting renderables.
|
|
41
90
|
* Accepted values : "x", "y", "z"
|
|
42
|
-
* @public
|
|
43
91
|
* @type {string}
|
|
44
92
|
* @default "z"
|
|
45
93
|
*/
|
|
@@ -50,13 +98,23 @@ import World from "./../physics/world.js";
|
|
|
50
98
|
* Use this value to implement frame prediction in drawing events,
|
|
51
99
|
* for creating smooth motion while running game update logic at
|
|
52
100
|
* a lower fps.
|
|
53
|
-
* @public
|
|
54
101
|
* @type {DOMHighResTimeStamp}
|
|
55
|
-
* @name lastUpdate
|
|
56
|
-
* @memberof Application
|
|
57
102
|
*/
|
|
58
103
|
this.lastUpdate = 0;
|
|
59
104
|
|
|
105
|
+
/**
|
|
106
|
+
* true when this app instance has been initialized
|
|
107
|
+
* @type {boolean}
|
|
108
|
+
* @default false
|
|
109
|
+
*/
|
|
110
|
+
this.isInitialized = false;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* the given settings used when creating this application
|
|
114
|
+
* @type {Object}
|
|
115
|
+
*/
|
|
116
|
+
this.settings = undefined;
|
|
117
|
+
|
|
60
118
|
// to know when we have to refresh the display
|
|
61
119
|
this.isDirty = true;
|
|
62
120
|
|
|
@@ -78,17 +136,111 @@ import World from "./../physics/world.js";
|
|
|
78
136
|
this.updateDelta = 0;
|
|
79
137
|
this.lastUpdateStart = null;
|
|
80
138
|
this.updateAverageDelta = 0;
|
|
139
|
+
|
|
140
|
+
// when using the default game application, legacy is set to true
|
|
141
|
+
// and init is called through the legacy video.init() call
|
|
142
|
+
if (options.legacy !== true) {
|
|
143
|
+
this.init(width, height, options);
|
|
144
|
+
}
|
|
81
145
|
}
|
|
82
146
|
|
|
83
147
|
/**
|
|
84
148
|
* init the game instance (create a physic world, update starting time, etc..)
|
|
85
149
|
*/
|
|
86
|
-
init() {
|
|
150
|
+
init(width, height, options) {
|
|
151
|
+
|
|
152
|
+
this.settings = Object.assign(defaultSettings, options || {});
|
|
153
|
+
|
|
154
|
+
// sanitize potential given parameters
|
|
155
|
+
this.settings.width = width;
|
|
156
|
+
this.settings.height = height;
|
|
157
|
+
this.settings.transparent = !!(this.settings.transparent);
|
|
158
|
+
this.settings.antiAlias = !!(this.settings.antiAlias);
|
|
159
|
+
this.settings.failIfMajorPerformanceCaveat = !!(this.settings.failIfMajorPerformanceCaveat);
|
|
160
|
+
this.settings.subPixel = !!(this.settings.subPixel);
|
|
161
|
+
this.settings.verbose = !!(this.settings.verbose);
|
|
162
|
+
if (this.settings.scaleMethod.search(/^(fill-(min|max)|fit|flex(-(width|height))?|stretch)$/) !== -1) {
|
|
163
|
+
this.settings.autoScale = (this.settings.scale === "auto") || true;
|
|
164
|
+
} else {
|
|
165
|
+
// default scaling method
|
|
166
|
+
this.settings.scaleMethod = "fit";
|
|
167
|
+
this.settings.autoScale = (this.settings.scale === "auto") || false;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// override renderer settings if &webgl or &canvas is defined in the URL
|
|
171
|
+
var uriFragment = utils.getUriFragment();
|
|
172
|
+
if (uriFragment.webgl === true || uriFragment.webgl1 === true || uriFragment.webgl2 === true) {
|
|
173
|
+
this.settings.renderer = WEBGL;
|
|
174
|
+
if (uriFragment.webgl1 === true) {
|
|
175
|
+
this.settings.preferWebGL1 = true;
|
|
176
|
+
}
|
|
177
|
+
} else if (uriFragment.canvas === true) {
|
|
178
|
+
this.settings.renderer = CANVAS;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// normalize scale
|
|
182
|
+
this.settings.scale = (this.settings.autoScale) ? 1.0 : (+this.settings.scale || 1.0);
|
|
183
|
+
|
|
184
|
+
// default scaled size value
|
|
185
|
+
this.settings.zoomX = width * this.settings.scale;
|
|
186
|
+
this.settings.zoomY = height * this.settings.scale;
|
|
187
|
+
|
|
188
|
+
if (typeof this.settings.renderer === "number") {
|
|
189
|
+
switch (this.settings.renderer) {
|
|
190
|
+
case AUTO:
|
|
191
|
+
case WEBGL:
|
|
192
|
+
this.renderer = autoDetectRenderer(this.settings);
|
|
193
|
+
break;
|
|
194
|
+
default:
|
|
195
|
+
this.renderer = new CanvasRenderer(this.settings);
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
} else {
|
|
199
|
+
var CustomRenderer = this.settings.renderer;
|
|
200
|
+
// a renderer class
|
|
201
|
+
this.renderer = new CustomRenderer(this.settings);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// register to the channel
|
|
205
|
+
event.on(event.WINDOW_ONRESIZE, () => { onresize(this); }, this);
|
|
206
|
+
event.on(event.WINDOW_ONORIENTATION_CHANGE, () => { onresize(this); }, this);
|
|
207
|
+
|
|
208
|
+
// add our canvas (default to document.body if settings.parent is undefined)
|
|
209
|
+
this.parentElement = device.getElement(this.settings.parent);
|
|
210
|
+
this.parentElement.appendChild(this.renderer.getCanvas());
|
|
211
|
+
|
|
212
|
+
// Mobile browser hacks
|
|
213
|
+
if (device.platform.isMobile) {
|
|
214
|
+
// Prevent the webview from moving on a swipe
|
|
215
|
+
device.enableSwipe(false);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// trigger an initial resize();
|
|
219
|
+
onresize(this);
|
|
220
|
+
|
|
221
|
+
// add an observer to detect when the dom tree is modified
|
|
222
|
+
if ("MutationObserver" in globalThis) {
|
|
223
|
+
// Create an observer instance linked to the callback function
|
|
224
|
+
var observer = new MutationObserver(onresize.bind(this, this));
|
|
225
|
+
|
|
226
|
+
// Start observing the target node for configured mutations
|
|
227
|
+
observer.observe(this.parentElement, {
|
|
228
|
+
attributes: false, childList: true, subtree: true
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
if (this.settings.consoleHeader !== false) {
|
|
233
|
+
consoleHeader(this);
|
|
234
|
+
}
|
|
235
|
+
|
|
87
236
|
// create a new physic world
|
|
88
237
|
this.world = new World();
|
|
89
238
|
// set the reference to this application instance
|
|
90
239
|
this.world.app = this;
|
|
91
240
|
this.lastUpdate = globalThis.performance.now();
|
|
241
|
+
|
|
242
|
+
this.isInitialized = true;
|
|
243
|
+
|
|
92
244
|
event.emit(event.GAME_INIT, this);
|
|
93
245
|
}
|
|
94
246
|
|
|
@@ -140,12 +292,11 @@ import World from "./../physics/world.js";
|
|
|
140
292
|
}
|
|
141
293
|
|
|
142
294
|
/**
|
|
143
|
-
* Returns the parent
|
|
144
|
-
* @
|
|
145
|
-
* @returns {Container}
|
|
295
|
+
* Returns the parent HTML Element holding the main canvas of this application
|
|
296
|
+
* @returns {HTMLElement}
|
|
146
297
|
*/
|
|
147
|
-
|
|
148
|
-
return
|
|
298
|
+
getParentElement() {
|
|
299
|
+
return this.parentElement;
|
|
149
300
|
}
|
|
150
301
|
|
|
151
302
|
/**
|
|
@@ -206,21 +357,21 @@ import World from "./../physics/world.js";
|
|
|
206
357
|
* @param {Stage} stage - the current stage
|
|
207
358
|
*/
|
|
208
359
|
draw(stage) {
|
|
209
|
-
if (renderer.isContextValid === true && (this.isDirty || this.isAlwaysDirty)) {
|
|
360
|
+
if (this.renderer.isContextValid === true && (this.isDirty || this.isAlwaysDirty)) {
|
|
210
361
|
// publish notification
|
|
211
362
|
event.emit(event.GAME_BEFORE_DRAW, globalThis.performance.now());
|
|
212
363
|
|
|
213
364
|
// prepare renderer to draw a new frame
|
|
214
|
-
renderer.clear();
|
|
365
|
+
this.renderer.clear();
|
|
215
366
|
|
|
216
367
|
// render the stage
|
|
217
|
-
stage.draw(renderer);
|
|
368
|
+
stage.draw(this.renderer);
|
|
218
369
|
|
|
219
370
|
// set back to flag
|
|
220
371
|
this.isDirty = false;
|
|
221
372
|
|
|
222
373
|
// flush/render our frame
|
|
223
|
-
renderer.flush();
|
|
374
|
+
this.renderer.flush();
|
|
224
375
|
|
|
225
376
|
// publish notification
|
|
226
377
|
event.emit(event.GAME_AFTER_DRAW, globalThis.performance.now());
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as device from "../system/device";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* display information
|
|
5
|
+
* @param {Application} game - the game application instance calling this function
|
|
6
|
+
*/
|
|
7
|
+
export function consoleHeader(app) {
|
|
8
|
+
var renderType = app.renderer.type;
|
|
9
|
+
var gpu_renderer = (typeof app.renderer.GPURenderer === "string") ? " (" + app.renderer.GPURenderer + ")" : "";
|
|
10
|
+
var audioType = device.hasWebAudio ? "Web Audio" : "HTML5 Audio";
|
|
11
|
+
|
|
12
|
+
// output video information in the console
|
|
13
|
+
console.log(
|
|
14
|
+
renderType + " renderer" + gpu_renderer + " | " +
|
|
15
|
+
audioType + " | " +
|
|
16
|
+
"pixel ratio " + device.devicePixelRatio + " | " +
|
|
17
|
+
(device.platform.nodeJS ? "node.js" : device.platform.isMobile ? "mobile" : "desktop") + " | " +
|
|
18
|
+
device.getScreenOrientation() + " | " +
|
|
19
|
+
device.language
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
console.log( "resolution: " + "requested " + app.settings.width + "x" + app.settings.height +
|
|
23
|
+
", got " + app.renderer.getWidth() + "x" + app.renderer.getHeight()
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import * as device from "./../system/device";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* scale the "displayed" canvas by the given scalar.
|
|
5
|
+
* this will modify the size of canvas element directly.
|
|
6
|
+
* Only use this if you are not using the automatic scaling feature.
|
|
7
|
+
* @param {Application} game - the game application instance triggering the resize
|
|
8
|
+
* @param {number} x - x scaling multiplier
|
|
9
|
+
* @param {number} y - y scaling multiplier
|
|
10
|
+
*/
|
|
11
|
+
function scale(game, x, y) {
|
|
12
|
+
var renderer = game.renderer;
|
|
13
|
+
var canvas = renderer.getCanvas();
|
|
14
|
+
var context = renderer.getContext();
|
|
15
|
+
var settings = renderer.settings;
|
|
16
|
+
var pixelRatio = device.devicePixelRatio;
|
|
17
|
+
|
|
18
|
+
var w = settings.zoomX = canvas.width * x * pixelRatio;
|
|
19
|
+
var h = settings.zoomY = canvas.height * y * pixelRatio;
|
|
20
|
+
|
|
21
|
+
// update the global scale variable
|
|
22
|
+
renderer.scaleRatio.set(x * pixelRatio, y * pixelRatio);
|
|
23
|
+
|
|
24
|
+
// adjust CSS style based on device pixel ratio
|
|
25
|
+
canvas.style.width = (w / pixelRatio) + "px";
|
|
26
|
+
canvas.style.height = (h / pixelRatio) + "px";
|
|
27
|
+
|
|
28
|
+
// if anti-alias and blend mode were resetted (e.g. Canvas mode)
|
|
29
|
+
renderer.setAntiAlias(context, settings.antiAlias);
|
|
30
|
+
renderer.setBlendMode(settings.blendMode, context);
|
|
31
|
+
|
|
32
|
+
// force repaint
|
|
33
|
+
game.repaint();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* callback for window resize event
|
|
38
|
+
* @param {Application} game - the game application instance triggering the resize
|
|
39
|
+
*/
|
|
40
|
+
export function onresize(game) {
|
|
41
|
+
var renderer = game.renderer;
|
|
42
|
+
var settings = renderer.settings;
|
|
43
|
+
var scaleX = 1, scaleY = 1;
|
|
44
|
+
|
|
45
|
+
if (settings.autoScale) {
|
|
46
|
+
|
|
47
|
+
// set max the canvas max size if CSS values are defined
|
|
48
|
+
var canvasMaxWidth = Infinity;
|
|
49
|
+
var canvasMaxHeight = Infinity;
|
|
50
|
+
|
|
51
|
+
if (globalThis.getComputedStyle) {
|
|
52
|
+
var style = globalThis.getComputedStyle(renderer.getCanvas(), null);
|
|
53
|
+
canvasMaxWidth = parseInt(style.maxWidth, 10) || Infinity;
|
|
54
|
+
canvasMaxHeight = parseInt(style.maxHeight, 10) || Infinity;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// get the maximum canvas size within the parent div containing the canvas container
|
|
58
|
+
var nodeBounds = device.getParentBounds(game.getParentElement());
|
|
59
|
+
|
|
60
|
+
var _max_width = Math.min(canvasMaxWidth, nodeBounds.width);
|
|
61
|
+
var _max_height = Math.min(canvasMaxHeight, nodeBounds.height);
|
|
62
|
+
|
|
63
|
+
// calculate final canvas width & height
|
|
64
|
+
var screenRatio = _max_width / _max_height;
|
|
65
|
+
|
|
66
|
+
if ((settings.scaleMethod === "fill-min" && screenRatio > renderer.designRatio) ||
|
|
67
|
+
(settings.scaleMethod === "fill-max" && screenRatio < renderer.designRatio) ||
|
|
68
|
+
(settings.scaleMethod === "flex-width")
|
|
69
|
+
) {
|
|
70
|
+
// resize the display canvas to fill the parent container
|
|
71
|
+
var sWidth = Math.min(canvasMaxWidth, settings.height * screenRatio);
|
|
72
|
+
scaleX = scaleY = _max_width / sWidth;
|
|
73
|
+
renderer.resize(Math.floor(sWidth), settings.height);
|
|
74
|
+
}
|
|
75
|
+
else if ((settings.scaleMethod === "fill-min" && screenRatio < renderer.designRatio) ||
|
|
76
|
+
(settings.scaleMethod === "fill-max" && screenRatio > renderer.designRatio) ||
|
|
77
|
+
(settings.scaleMethod === "flex-height")
|
|
78
|
+
) {
|
|
79
|
+
// resize the display canvas to fill the parent container
|
|
80
|
+
var sHeight = Math.min(canvasMaxHeight, settings.width * (_max_height / _max_width));
|
|
81
|
+
scaleX = scaleY = _max_height / sHeight;
|
|
82
|
+
renderer.resize(settings.width, Math.floor(sHeight));
|
|
83
|
+
}
|
|
84
|
+
else if (settings.scaleMethod === "flex") {
|
|
85
|
+
// resize the display canvas to fill the parent container
|
|
86
|
+
renderer.resize(Math.floor(_max_width), Math.floor(_max_height));
|
|
87
|
+
}
|
|
88
|
+
else if (settings.scaleMethod === "stretch") {
|
|
89
|
+
// scale the display canvas to fit with the parent container
|
|
90
|
+
scaleX = _max_width / settings.width;
|
|
91
|
+
scaleY = _max_height / settings.height;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// scale the display canvas to fit the parent container
|
|
95
|
+
// make sure we maintain the original aspect ratio
|
|
96
|
+
if (screenRatio < renderer.designRatio) {
|
|
97
|
+
scaleX = scaleY = _max_width / settings.width;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
scaleX = scaleY = _max_height / settings.height;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// adjust scaling ratio based on the new scaling ratio
|
|
105
|
+
scale(game, scaleX, scaleY);
|
|
106
|
+
} else {
|
|
107
|
+
// adjust scaling ratio based on the given settings
|
|
108
|
+
scale(game, settings.scale, settings.scale);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// default settings
|
|
2
|
+
export const defaultSettings = {
|
|
3
|
+
parent : undefined,
|
|
4
|
+
renderer : 2, // AUTO
|
|
5
|
+
autoScale : false,
|
|
6
|
+
scale : 1.0,
|
|
7
|
+
scaleMethod : "manual",
|
|
8
|
+
transparent : false,
|
|
9
|
+
premultipliedAlpha: true,
|
|
10
|
+
blendMode : "normal",
|
|
11
|
+
antiAlias : false,
|
|
12
|
+
failIfMajorPerformanceCaveat : true,
|
|
13
|
+
subPixel : false,
|
|
14
|
+
preferWebGL1 : false,
|
|
15
|
+
powerPreference : "default",
|
|
16
|
+
verbose : false,
|
|
17
|
+
consoleHeader : true,
|
|
18
|
+
legacy : false
|
|
19
|
+
};
|
package/src/camera/camera2d.js
CHANGED
|
@@ -10,7 +10,7 @@ import * as event from "./../system/event.js";
|
|
|
10
10
|
import pool from "./../system/pooling.js";
|
|
11
11
|
import Renderable from "./../renderable/renderable.js";
|
|
12
12
|
import {clamp, toBeCloseTo} from "./../math/math.js";
|
|
13
|
-
import game from "
|
|
13
|
+
import { game } from "../index.js";
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
// some ref shortcut
|
package/src/index.js
CHANGED
|
@@ -1,24 +1,6 @@
|
|
|
1
1
|
// ES5/ES6 polyfills
|
|
2
2
|
import "./polyfill/index.js";
|
|
3
3
|
|
|
4
|
-
// utility classes
|
|
5
|
-
import * as audio from "./audio/audio.js";
|
|
6
|
-
import collision from "./physics/collision.js";
|
|
7
|
-
import * as event from "./system/event.js";
|
|
8
|
-
import * as device from "./system/device.js";
|
|
9
|
-
import game from "./game.js";
|
|
10
|
-
import loader from "./loader/loader.js";
|
|
11
|
-
import * as Math from "./math/math.js";
|
|
12
|
-
import utils from "./utils/utils.js";
|
|
13
|
-
import * as input from "./input/input.js";
|
|
14
|
-
import { plugin, plugins } from "./plugin/plugin.js";
|
|
15
|
-
import * as video from "./video/video.js";
|
|
16
|
-
import save from "./system/save.js";
|
|
17
|
-
import timer from "./system/timer.js";
|
|
18
|
-
import pool from "./system/pooling.js";
|
|
19
|
-
import state from "./state/state.js";
|
|
20
|
-
import level from "./level/level.js";
|
|
21
|
-
|
|
22
4
|
// class definition
|
|
23
5
|
import Color from "./math/color.js";
|
|
24
6
|
import Vector2d from "./math/vector2.js";
|
|
@@ -45,9 +27,6 @@ import CanvasRenderer from "./video/canvas/canvas_renderer.js";
|
|
|
45
27
|
import CanvasTexture from "./video/texture/canvas_texture.js";
|
|
46
28
|
import { TextureAtlas } from "./video/texture/atlas.js";
|
|
47
29
|
import Renderable from "./renderable/renderable.js";
|
|
48
|
-
import Text from "./text/text.js";
|
|
49
|
-
import BitmapText from "./text/bitmaptext.js";
|
|
50
|
-
import BitmapTextData from "./text/bitmaptextdata.js";
|
|
51
30
|
import ColorLayer from "./renderable/colorlayer.js";
|
|
52
31
|
import ImageLayer from "./renderable/imagelayer.js";
|
|
53
32
|
import Sprite from "./renderable/sprite.js";
|
|
@@ -58,6 +37,9 @@ import UISpriteElement from "./renderable/ui/uispriteelement.js";
|
|
|
58
37
|
import Collectable from "./renderable/collectable.js";
|
|
59
38
|
import Trigger from "./renderable/trigger.js";
|
|
60
39
|
import Light2d from "./renderable/light2d.js";
|
|
40
|
+
import Text from "./text/text.js";
|
|
41
|
+
import BitmapText from "./text/bitmaptext.js";
|
|
42
|
+
import BitmapTextData from "./text/bitmaptextdata.js";
|
|
61
43
|
import { Draggable, DropTarget } from "./renderable/dragndrop.js";
|
|
62
44
|
import TMXRenderer from "./level/tiled/renderer/TMXRenderer.js";
|
|
63
45
|
import TMXOrthogonalRenderer from "./level/tiled/renderer/TMXOrthogonalRenderer.js";
|
|
@@ -78,6 +60,24 @@ import ParticleEmitterSettings from "./particles/settings.js";
|
|
|
78
60
|
import ParticleEmitter from "./particles/emitter.js";
|
|
79
61
|
import Particle from "./particles/particle.js";
|
|
80
62
|
import Entity from "./entity/entity.js";
|
|
63
|
+
import Application from "./application/application.js";
|
|
64
|
+
|
|
65
|
+
// utility classes
|
|
66
|
+
import * as audio from "./audio/audio.js";
|
|
67
|
+
import collision from "./physics/collision.js";
|
|
68
|
+
import * as event from "./system/event.js";
|
|
69
|
+
import * as device from "./system/device.js";
|
|
70
|
+
import loader from "./loader/loader.js";
|
|
71
|
+
import * as Math from "./math/math.js";
|
|
72
|
+
import utils from "./utils/utils.js";
|
|
73
|
+
import * as input from "./input/input.js";
|
|
74
|
+
import { plugin, plugins } from "./plugin/plugin.js";
|
|
75
|
+
import * as video from "./video/video.js";
|
|
76
|
+
import save from "./system/save.js";
|
|
77
|
+
import timer from "./system/timer.js";
|
|
78
|
+
import pool from "./system/pooling.js";
|
|
79
|
+
import state from "./state/state.js";
|
|
80
|
+
import level from "./level/level.js";
|
|
81
81
|
|
|
82
82
|
|
|
83
83
|
/**
|
|
@@ -95,7 +95,6 @@ export {
|
|
|
95
95
|
collision,
|
|
96
96
|
device,
|
|
97
97
|
event,
|
|
98
|
-
game,
|
|
99
98
|
loader,
|
|
100
99
|
level,
|
|
101
100
|
input,
|
|
@@ -169,7 +168,8 @@ export {
|
|
|
169
168
|
ParticleEmitter,
|
|
170
169
|
ParticleEmitterSettings,
|
|
171
170
|
Particle,
|
|
172
|
-
Entity
|
|
171
|
+
Entity,
|
|
172
|
+
Application
|
|
173
173
|
};
|
|
174
174
|
|
|
175
175
|
// Backward compatibility for deprecated method or properties
|
|
@@ -192,6 +192,14 @@ export var initialized = false;
|
|
|
192
192
|
*/
|
|
193
193
|
export var skipAutoInit = false;
|
|
194
194
|
|
|
195
|
+
/*
|
|
196
|
+
* game is a default instance of a melonJS Application and represents your current game,
|
|
197
|
+
* it contains all the objects, tilemap layers, current viewport, collision map, etc...<br>
|
|
198
|
+
* @namespace game
|
|
199
|
+
* @see Application
|
|
200
|
+
*/
|
|
201
|
+
export const game = new Application(0, 0, {legacy:true});
|
|
202
|
+
|
|
195
203
|
/**
|
|
196
204
|
* initialize the melonJS library.
|
|
197
205
|
* this is automatically called unless me.skipAutoInit is set to true,
|
|
@@ -206,6 +214,9 @@ export function boot() {
|
|
|
206
214
|
return;
|
|
207
215
|
}
|
|
208
216
|
|
|
217
|
+
// output melonJS version in the console
|
|
218
|
+
console.log("melonJS 2 (v" + version + ") | http://melonjs.org" );
|
|
219
|
+
|
|
209
220
|
// register all built-ins objects into the object pool
|
|
210
221
|
pool.register("me.Entity", Entity);
|
|
211
222
|
pool.register("me.Collectable", Collectable);
|
package/src/input/pointer.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {preventDefault} from "./input.js";
|
|
2
2
|
import {getBindingKey, triggerKeyEvent} from "./keyboard.js";
|
|
3
|
-
import { renderer
|
|
3
|
+
import { renderer } from "./../video/video.js";
|
|
4
4
|
import { throttle } from "./../utils/function.js";
|
|
5
5
|
import { remove } from "./../utils/array.js";
|
|
6
6
|
import * as event from "./../system/event.js";
|
|
@@ -9,8 +9,7 @@ import pool from "./../system/pooling.js";
|
|
|
9
9
|
import * as device from "./../system/device.js";
|
|
10
10
|
import Pointer from "./pointer.js";
|
|
11
11
|
import Rect from "./../geometries/rectangle.js";
|
|
12
|
-
import
|
|
13
|
-
import game from "./../game.js";
|
|
12
|
+
import { game } from "../index.js";
|
|
14
13
|
|
|
15
14
|
/**
|
|
16
15
|
* A pool of `Pointer` objects to cache pointer/touch event coordinates.
|
|
@@ -195,7 +194,7 @@ function enablePointerEvent() {
|
|
|
195
194
|
if (device.hasPointerLockSupport) {
|
|
196
195
|
document.addEventListener("pointerlockchange", () => {
|
|
197
196
|
// change the locked status accordingly
|
|
198
|
-
locked = document.pointerLockElement ===
|
|
197
|
+
locked = document.pointerLockElement === game.getParentElement();
|
|
199
198
|
// emit the corresponding internal event
|
|
200
199
|
event.emit(event.POINTERLOCKCHANGE, locked);
|
|
201
200
|
}, true);
|
|
@@ -287,7 +286,7 @@ function dispatchEvent(normalizedEvents) {
|
|
|
287
286
|
}
|
|
288
287
|
|
|
289
288
|
// fetch valid candiates from the game world container
|
|
290
|
-
var candidates = game.world.broadphase.retrieve(currentPointer,
|
|
289
|
+
var candidates = game.world.broadphase.retrieve(currentPointer, game.world._sortReverseZ);
|
|
291
290
|
|
|
292
291
|
// add the main game viewport to the list of candidates
|
|
293
292
|
candidates = candidates.concat([ game.viewport ]);
|
|
@@ -560,7 +559,7 @@ export function globalToLocal(x, y, v) {
|
|
|
560
559
|
var pixelRatio = globalThis.devicePixelRatio || 1;
|
|
561
560
|
x -= rect.left + (globalThis.pageXOffset || 0);
|
|
562
561
|
y -= rect.top + (globalThis.pageYOffset || 0);
|
|
563
|
-
var scale = scaleRatio;
|
|
562
|
+
var scale = renderer.scaleRatio;
|
|
564
563
|
if (scale.x !== 1.0 || scale.y !== 1.0) {
|
|
565
564
|
x /= scale.x;
|
|
566
565
|
y /= scale.y;
|
|
@@ -786,7 +785,7 @@ export function releaseAllPointerEvents(region) {
|
|
|
786
785
|
*/
|
|
787
786
|
export function requestPointerLock() {
|
|
788
787
|
if (device.hasPointerLockSupport) {
|
|
789
|
-
var element =
|
|
788
|
+
var element = game.getParentElement();
|
|
790
789
|
element.requestPointerLock();
|
|
791
790
|
return true;
|
|
792
791
|
}
|
package/src/level/level.js
CHANGED
|
@@ -2,7 +2,7 @@ import utils from "./../utils/utils.js";
|
|
|
2
2
|
import * as event from "./../system/event.js";
|
|
3
3
|
import state from "./../state/state.js";
|
|
4
4
|
import loader from "./../loader/loader.js";
|
|
5
|
-
import game from "
|
|
5
|
+
import { game } from "../index.js";
|
|
6
6
|
import TMXTileMap from "./tiled/TMXTileMap.js";
|
|
7
7
|
|
|
8
8
|
|
|
@@ -4,7 +4,7 @@ import * as TMXUtils from "./TMXUtils.js";
|
|
|
4
4
|
import Tile from "./TMXTile.js";
|
|
5
5
|
import Renderable from "./../../renderable/renderable.js";
|
|
6
6
|
import CanvasRenderer from "./../../video/canvas/canvas_renderer";
|
|
7
|
-
import game from "
|
|
7
|
+
import { game } from "../../index.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Create required arrays for the given layer object
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import pool from "./../../system/pooling.js";
|
|
2
2
|
import * as event from "./../../system/event.js";
|
|
3
|
-
import game from "
|
|
3
|
+
import { game } from "../../index.js";
|
|
4
4
|
import collision from "./../../physics/collision.js";
|
|
5
5
|
import Body from "./../../physics/body.js";
|
|
6
6
|
import TMXOrthogonalRenderer from "./renderer/TMXOrthogonalRenderer.js";
|
|
@@ -12,7 +12,7 @@ import TMXTilesetGroup from "./TMXTilesetGroup.js";
|
|
|
12
12
|
import TMXGroup from "./TMXGroup.js";
|
|
13
13
|
import TMXLayer from "./TMXLayer.js";
|
|
14
14
|
import { applyTMXProperties } from "./TMXUtils.js";
|
|
15
|
-
import Container from "
|
|
15
|
+
import Container from "../../renderable/container.js";
|
|
16
16
|
|
|
17
17
|
// constant to identify the collision object layer
|
|
18
18
|
const COLLISION_GROUP = "collision";
|