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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { isWebGLSupported } from "../../system/device";
|
|
2
|
+
import WebGLRenderer from "../webgl/webgl_renderer";
|
|
3
|
+
import CanvasRenderer from "../canvas/canvas_renderer";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Auto-detect the best renderer to use
|
|
7
|
+
* @ignore
|
|
8
|
+
*/
|
|
9
|
+
export function autoDetectRenderer(options) {
|
|
10
|
+
try {
|
|
11
|
+
if (isWebGLSupported(options)) {
|
|
12
|
+
return new WebGLRenderer(options);
|
|
13
|
+
}
|
|
14
|
+
} catch (e) {
|
|
15
|
+
console.log("Error creating WebGL renderer :" + e.message);
|
|
16
|
+
}
|
|
17
|
+
return new CanvasRenderer(options);
|
|
18
|
+
}
|
package/src/video/video.js
CHANGED
|
@@ -1,133 +1,14 @@
|
|
|
1
|
-
import Vector2d from "./../math/vector2.js";
|
|
2
|
-
import WebGLRenderer from "./webgl/webgl_renderer.js";
|
|
3
|
-
import CanvasRenderer from "./canvas/canvas_renderer.js";
|
|
4
|
-
import utils from "./../utils/utils.js";
|
|
5
1
|
import * as event from "./../system/event.js";
|
|
6
|
-
import game from "./../
|
|
2
|
+
import { initialized, game } from "./../index.js";
|
|
7
3
|
import * as device from "./../system/device.js";
|
|
8
|
-
import
|
|
4
|
+
import utils from "./../utils/utils.js";
|
|
9
5
|
|
|
10
6
|
/**
|
|
11
|
-
* video functions
|
|
12
7
|
* @namespace video
|
|
13
8
|
*/
|
|
14
9
|
|
|
15
|
-
var designRatio = 1;
|
|
16
|
-
var designWidth = 0;
|
|
17
|
-
var designHeight = 0;
|
|
18
|
-
|
|
19
|
-
// default video settings
|
|
20
|
-
var settings = {
|
|
21
|
-
parent : undefined,
|
|
22
|
-
renderer : 2, // AUTO
|
|
23
|
-
autoScale : false,
|
|
24
|
-
scale : 1.0,
|
|
25
|
-
scaleMethod : "manual",
|
|
26
|
-
transparent : false,
|
|
27
|
-
premultipliedAlpha: true,
|
|
28
|
-
blendMode : "normal",
|
|
29
|
-
antiAlias : false,
|
|
30
|
-
failIfMajorPerformanceCaveat : true,
|
|
31
|
-
subPixel : false,
|
|
32
|
-
preferWebGL1 : false,
|
|
33
|
-
powerPreference : "default",
|
|
34
|
-
verbose : false,
|
|
35
|
-
consoleHeader : true
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Auto-detect the best renderer to use
|
|
40
|
-
* @ignore
|
|
41
|
-
*/
|
|
42
|
-
function autoDetectRenderer(options) {
|
|
43
|
-
try {
|
|
44
|
-
if (device.isWebGLSupported(options)) {
|
|
45
|
-
return new WebGLRenderer(options);
|
|
46
|
-
}
|
|
47
|
-
} catch (e) {
|
|
48
|
-
console.log("Error creating WebGL renderer :" + e.message);
|
|
49
|
-
}
|
|
50
|
-
return new CanvasRenderer(options);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* callback for window resize event
|
|
55
|
-
* @ignore
|
|
56
|
-
*/
|
|
57
|
-
function onresize() {
|
|
58
|
-
var settings = renderer.settings;
|
|
59
|
-
var scaleX = 1, scaleY = 1;
|
|
60
|
-
|
|
61
|
-
if (settings.autoScale) {
|
|
62
|
-
|
|
63
|
-
// set max the canvas max size if CSS values are defined
|
|
64
|
-
var canvasMaxWidth = Infinity;
|
|
65
|
-
var canvasMaxHeight = Infinity;
|
|
66
|
-
|
|
67
|
-
if (globalThis.getComputedStyle) {
|
|
68
|
-
var style = globalThis.getComputedStyle(renderer.getCanvas(), null);
|
|
69
|
-
canvasMaxWidth = parseInt(style.maxWidth, 10) || Infinity;
|
|
70
|
-
canvasMaxHeight = parseInt(style.maxHeight, 10) || Infinity;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// get the maximum canvas size within the parent div containing the canvas container
|
|
74
|
-
var nodeBounds = device.getParentBounds(getParent());
|
|
75
|
-
|
|
76
|
-
var _max_width = Math.min(canvasMaxWidth, nodeBounds.width);
|
|
77
|
-
var _max_height = Math.min(canvasMaxHeight, nodeBounds.height);
|
|
78
|
-
|
|
79
|
-
// calculate final canvas width & height
|
|
80
|
-
var screenRatio = _max_width / _max_height;
|
|
81
|
-
|
|
82
|
-
if ((settings.scaleMethod === "fill-min" && screenRatio > designRatio) ||
|
|
83
|
-
(settings.scaleMethod === "fill-max" && screenRatio < designRatio) ||
|
|
84
|
-
(settings.scaleMethod === "flex-width")
|
|
85
|
-
) {
|
|
86
|
-
// resize the display canvas to fill the parent container
|
|
87
|
-
var sWidth = Math.min(canvasMaxWidth, designHeight * screenRatio);
|
|
88
|
-
scaleX = scaleY = _max_width / sWidth;
|
|
89
|
-
renderer.resize(Math.floor(sWidth), designHeight);
|
|
90
|
-
}
|
|
91
|
-
else if ((settings.scaleMethod === "fill-min" && screenRatio < designRatio) ||
|
|
92
|
-
(settings.scaleMethod === "fill-max" && screenRatio > designRatio) ||
|
|
93
|
-
(settings.scaleMethod === "flex-height")
|
|
94
|
-
) {
|
|
95
|
-
// resize the display canvas to fill the parent container
|
|
96
|
-
var sHeight = Math.min(canvasMaxHeight, designWidth * (_max_height / _max_width));
|
|
97
|
-
scaleX = scaleY = _max_height / sHeight;
|
|
98
|
-
renderer.resize(designWidth, Math.floor(sHeight));
|
|
99
|
-
}
|
|
100
|
-
else if (settings.scaleMethod === "flex") {
|
|
101
|
-
// resize the display canvas to fill the parent container
|
|
102
|
-
renderer.resize(Math.floor(_max_width), Math.floor(_max_height));
|
|
103
|
-
}
|
|
104
|
-
else if (settings.scaleMethod === "stretch") {
|
|
105
|
-
// scale the display canvas to fit with the parent container
|
|
106
|
-
scaleX = _max_width / designWidth;
|
|
107
|
-
scaleY = _max_height / designHeight;
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
// scale the display canvas to fit the parent container
|
|
111
|
-
// make sure we maintain the original aspect ratio
|
|
112
|
-
if (screenRatio < designRatio) {
|
|
113
|
-
scaleX = scaleY = _max_width / designWidth;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
scaleX = scaleY = _max_height / designHeight;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// adjust scaling ratio based on the new scaling ratio
|
|
121
|
-
scale(scaleX, scaleY);
|
|
122
|
-
} else {
|
|
123
|
-
// adjust scaling ratio based on the given settings
|
|
124
|
-
scale(settings.scale, settings.scale);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
10
|
/**
|
|
129
11
|
* Select the HTML5 Canvas renderer
|
|
130
|
-
* @name CANVAS
|
|
131
12
|
* @memberof video
|
|
132
13
|
* @constant
|
|
133
14
|
*/
|
|
@@ -135,7 +16,6 @@ export const CANVAS = 0;
|
|
|
135
16
|
|
|
136
17
|
/**
|
|
137
18
|
* Select the WebGL renderer
|
|
138
|
-
* @name WEBGL
|
|
139
19
|
* @memberof video
|
|
140
20
|
* @constant
|
|
141
21
|
*/
|
|
@@ -143,36 +23,15 @@ export const WEBGL = 1;
|
|
|
143
23
|
|
|
144
24
|
/**
|
|
145
25
|
* Auto-select the renderer (Attempt WebGL first, with fallback to Canvas)
|
|
146
|
-
* @name AUTO
|
|
147
26
|
* @memberof video
|
|
148
27
|
* @constant
|
|
149
28
|
*/
|
|
150
29
|
export const AUTO = 2;
|
|
151
30
|
|
|
152
|
-
/**
|
|
153
|
-
* the parent container of the main canvas element
|
|
154
|
-
* @ignore
|
|
155
|
-
* @type {HTMLElement}
|
|
156
|
-
* @readonly
|
|
157
|
-
* @name parent
|
|
158
|
-
* @memberof video
|
|
159
|
-
*/
|
|
160
|
-
export let parent = null;
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* the scaling ratio to be applied to the display canvas
|
|
164
|
-
* @name scaleRatio
|
|
165
|
-
* @type {Vector2d}
|
|
166
|
-
* @default <1,1>
|
|
167
|
-
* @memberof video
|
|
168
|
-
*/
|
|
169
|
-
export let scaleRatio = new Vector2d(1, 1);
|
|
170
|
-
|
|
171
31
|
/**
|
|
172
32
|
* A reference to the active Canvas or WebGL active renderer renderer
|
|
173
|
-
* @name renderer
|
|
174
|
-
* @type {CanvasRenderer|WebGLRenderer}
|
|
175
33
|
* @memberof video
|
|
34
|
+
* @type {CanvasRenderer|WebGLRenderer}
|
|
176
35
|
*/
|
|
177
36
|
export let renderer = null;
|
|
178
37
|
|
|
@@ -193,12 +52,12 @@ export let renderer = null;
|
|
|
193
52
|
* <center><img src="images/scale-flex-height.png"/></center><br>
|
|
194
53
|
* - <i><b>`stretch`</b></i> : Canvas is resized to fit; content is scaled to screen aspect ratio
|
|
195
54
|
* <center><img src="images/scale-stretch.png"/></center><br>
|
|
196
|
-
* @
|
|
55
|
+
* @memberof video
|
|
197
56
|
* @param {number} width - The width of the canvas viewport
|
|
198
57
|
* @param {number} height - The height of the canvas viewport
|
|
199
58
|
* @param {object} [options] - The optional video/renderer parameters.<br> (see Renderer(s) documentation for further specific options)
|
|
200
59
|
* @param {string|HTMLElement} [options.parent=document.body] - the DOM parent element to hold the canvas in the HTML file
|
|
201
|
-
* @param {number} [options.renderer=video.AUTO] - renderer to use (me.video.CANVAS, me.video.WEBGL, me.video.AUTO)
|
|
60
|
+
* @param {number|Renderer} [options.renderer=video.AUTO] - renderer to use (me.video.CANVAS, me.video.WEBGL, me.video.AUTO), or a custom renderer class
|
|
202
61
|
* @param {number|string} [options.scale=1.0] - enable scaling of the canvas ('auto' for automatic scaling)
|
|
203
62
|
* @param {string} [options.scaleMethod="fit"] - screen scaling modes ('fit','fill-min','fill-max','flex','flex-width','flex-height','stretch')
|
|
204
63
|
* @param {boolean} [options.preferWebGL1=false] - if true the renderer will only use WebGL 1
|
|
@@ -217,60 +76,22 @@ export let renderer = null;
|
|
|
217
76
|
* });
|
|
218
77
|
*/
|
|
219
78
|
export function init(width, height, options) {
|
|
220
|
-
|
|
221
79
|
// ensure melonjs has been properly initialized
|
|
222
80
|
if (!initialized) {
|
|
223
81
|
throw new Error("me.video.init() called before engine initialization.");
|
|
224
82
|
}
|
|
225
83
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
settings.antiAlias = !!(settings.antiAlias);
|
|
234
|
-
settings.failIfMajorPerformanceCaveat = !!(settings.failIfMajorPerformanceCaveat);
|
|
235
|
-
settings.subPixel = !!(settings.subPixel);
|
|
236
|
-
settings.verbose = !!(settings.verbose);
|
|
237
|
-
if (settings.scaleMethod.search(/^(fill-(min|max)|fit|flex(-(width|height))?|stretch)$/) !== -1) {
|
|
238
|
-
settings.autoScale = (settings.scale === "auto") || true;
|
|
239
|
-
} else {
|
|
240
|
-
// default scaling method
|
|
241
|
-
settings.scaleMethod = "fit";
|
|
242
|
-
settings.autoScale = (settings.scale === "auto") || false;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
// display melonJS version
|
|
246
|
-
if (settings.consoleHeader !== false) {
|
|
247
|
-
// output video information in the console
|
|
248
|
-
console.log("melonJS 2 (v" + version + ") | http://melonjs.org" );
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
// override renderer settings if &webgl or &canvas is defined in the URL
|
|
252
|
-
var uriFragment = utils.getUriFragment();
|
|
253
|
-
if (uriFragment.webgl === true || uriFragment.webgl1 === true || uriFragment.webgl2 === true) {
|
|
254
|
-
settings.renderer = WEBGL;
|
|
255
|
-
if (uriFragment.webgl1 === true) {
|
|
256
|
-
settings.preferWebGL1 = true;
|
|
257
|
-
}
|
|
258
|
-
} else if (uriFragment.canvas === true) {
|
|
259
|
-
settings.renderer = CANVAS;
|
|
84
|
+
try {
|
|
85
|
+
// initialize the default game Application with the given options
|
|
86
|
+
game.init(width, height, options);
|
|
87
|
+
} catch (e) {
|
|
88
|
+
console(e.message);
|
|
89
|
+
// me.video.init() historically returns false if failing at creating/using a HTML5 canvas
|
|
90
|
+
return false;
|
|
260
91
|
}
|
|
261
92
|
|
|
262
|
-
//
|
|
263
|
-
|
|
264
|
-
scaleRatio.set(settings.scale, settings.scale);
|
|
265
|
-
|
|
266
|
-
// hold the requested video size ratio
|
|
267
|
-
designRatio = width / height;
|
|
268
|
-
designWidth = width;
|
|
269
|
-
designHeight = height;
|
|
270
|
-
|
|
271
|
-
// default scaled size value
|
|
272
|
-
settings.zoomX = width * scaleRatio.x;
|
|
273
|
-
settings.zoomY = height * scaleRatio.y;
|
|
93
|
+
// assign the default renderer
|
|
94
|
+
renderer = game.renderer;
|
|
274
95
|
|
|
275
96
|
//add a channel for the onresize/onorientationchange event
|
|
276
97
|
globalThis.addEventListener(
|
|
@@ -290,6 +111,7 @@ export function init(width, height, options) {
|
|
|
290
111
|
},
|
|
291
112
|
false
|
|
292
113
|
);
|
|
114
|
+
|
|
293
115
|
// pre-fixed implementation on mozzila
|
|
294
116
|
globalThis.addEventListener(
|
|
295
117
|
"onmozorientationchange",
|
|
@@ -310,68 +132,6 @@ export function init(width, height, options) {
|
|
|
310
132
|
event.emit(event.WINDOW_ONSCROLL, e);
|
|
311
133
|
}, 100), false);
|
|
312
134
|
|
|
313
|
-
// register to the channel
|
|
314
|
-
event.on(event.WINDOW_ONRESIZE, onresize, this);
|
|
315
|
-
event.on(event.WINDOW_ONORIENTATION_CHANGE, onresize, this);
|
|
316
|
-
|
|
317
|
-
try {
|
|
318
|
-
switch (settings.renderer) {
|
|
319
|
-
case AUTO:
|
|
320
|
-
case WEBGL:
|
|
321
|
-
renderer = autoDetectRenderer(settings);
|
|
322
|
-
break;
|
|
323
|
-
default:
|
|
324
|
-
renderer = new CanvasRenderer(settings);
|
|
325
|
-
break;
|
|
326
|
-
}
|
|
327
|
-
} catch (e) {
|
|
328
|
-
console(e.message);
|
|
329
|
-
// me.video.init() returns false if failing at creating/using a HTML5 canvas
|
|
330
|
-
return false;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
// add our canvas (default to document.body if settings.parent is undefined)
|
|
334
|
-
parent = device.getElement(typeof settings.parent !== "undefined" ? settings.parent : document.body);
|
|
335
|
-
parent.appendChild(renderer.getCanvas());
|
|
336
|
-
|
|
337
|
-
// Mobile browser hacks
|
|
338
|
-
if (device.platform.isMobile) {
|
|
339
|
-
// Prevent the webview from moving on a swipe
|
|
340
|
-
device.enableSwipe(false);
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
// trigger an initial resize();
|
|
344
|
-
onresize();
|
|
345
|
-
|
|
346
|
-
// add an observer to detect when the dom tree is modified
|
|
347
|
-
if ("MutationObserver" in globalThis) {
|
|
348
|
-
// Create an observer instance linked to the callback function
|
|
349
|
-
var observer = new MutationObserver(onresize.bind(this));
|
|
350
|
-
|
|
351
|
-
// Start observing the target node for configured mutations
|
|
352
|
-
observer.observe(parent, {
|
|
353
|
-
attributes: false, childList: true, subtree: true
|
|
354
|
-
});
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
if (settings.consoleHeader !== false) {
|
|
358
|
-
var renderType = (renderer instanceof CanvasRenderer) ? "CANVAS" : "WebGL" + renderer.WebGLVersion;
|
|
359
|
-
var audioType = device.hasWebAudio ? "Web Audio" : "HTML5 Audio";
|
|
360
|
-
var gpu_renderer = (typeof renderer.GPURenderer === "string") ? " (" + renderer.GPURenderer + ")" : "";
|
|
361
|
-
// output video information in the console
|
|
362
|
-
console.log(
|
|
363
|
-
renderType + " renderer" + gpu_renderer + " | " +
|
|
364
|
-
audioType + " | " +
|
|
365
|
-
"pixel ratio " + device.devicePixelRatio + " | " +
|
|
366
|
-
(device.platform.nodeJS ? "node.js" : device.platform.isMobile ? "mobile" : "desktop") + " | " +
|
|
367
|
-
device.getScreenOrientation() + " | " +
|
|
368
|
-
device.language
|
|
369
|
-
);
|
|
370
|
-
console.log( "resolution: " + "requested " + width + "x" + height +
|
|
371
|
-
", got " + renderer.getWidth() + "x" + renderer.getHeight()
|
|
372
|
-
);
|
|
373
|
-
}
|
|
374
|
-
|
|
375
135
|
// notify the video has been initialized
|
|
376
136
|
event.emit(event.VIDEO_INIT);
|
|
377
137
|
|
|
@@ -380,7 +140,7 @@ export function init(width, height, options) {
|
|
|
380
140
|
|
|
381
141
|
/**
|
|
382
142
|
* Create and return a new Canvas element
|
|
383
|
-
* @
|
|
143
|
+
* @memberof video
|
|
384
144
|
* @param {number} width - width
|
|
385
145
|
* @param {number} height - height
|
|
386
146
|
* @param {boolean} [returnOffscreenCanvas=false] - will return an OffscreenCanvas if supported
|
|
@@ -412,42 +172,8 @@ export function createCanvas(width, height, returnOffscreenCanvas = false) {
|
|
|
412
172
|
|
|
413
173
|
/**
|
|
414
174
|
* return a reference to the parent DOM element holding the main canvas
|
|
415
|
-
* @function video.getParent
|
|
416
175
|
* @returns {HTMLElement}
|
|
417
176
|
*/
|
|
418
177
|
export function getParent() {
|
|
419
|
-
return
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
/**
|
|
423
|
-
* scale the "displayed" canvas by the given scalar.
|
|
424
|
-
* this will modify the size of canvas element directly.
|
|
425
|
-
* Only use this if you are not using the automatic scaling feature.
|
|
426
|
-
* @function video.scale
|
|
427
|
-
* @see video.init
|
|
428
|
-
* @param {number} x - x scaling multiplier
|
|
429
|
-
* @param {number} y - y scaling multiplier
|
|
430
|
-
*/
|
|
431
|
-
export function scale(x, y) {
|
|
432
|
-
var canvas = renderer.getCanvas();
|
|
433
|
-
var context = renderer.getContext();
|
|
434
|
-
var settings = renderer.settings;
|
|
435
|
-
var pixelRatio = device.devicePixelRatio;
|
|
436
|
-
|
|
437
|
-
var w = settings.zoomX = canvas.width * x * pixelRatio;
|
|
438
|
-
var h = settings.zoomY = canvas.height * y * pixelRatio;
|
|
439
|
-
|
|
440
|
-
// update the global scale variable
|
|
441
|
-
scaleRatio.set(x * pixelRatio, y * pixelRatio);
|
|
442
|
-
|
|
443
|
-
// adjust CSS style based on device pixel ratio
|
|
444
|
-
canvas.style.width = (w / pixelRatio) + "px";
|
|
445
|
-
canvas.style.height = (h / pixelRatio) + "px";
|
|
446
|
-
|
|
447
|
-
// if anti-alias and blend mode were resetted (e.g. Canvas mode)
|
|
448
|
-
renderer.setAntiAlias(context, settings.antiAlias);
|
|
449
|
-
renderer.setBlendMode(settings.blendMode, context);
|
|
450
|
-
|
|
451
|
-
// force repaint
|
|
452
|
-
game.repaint();
|
|
178
|
+
return game.getParentElement();
|
|
453
179
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as event from "./../../system/event.js";
|
|
2
|
-
import * as device from "./../../system/device.js";
|
|
3
2
|
import { extractUniforms } from "./utils/uniforms.js";
|
|
4
3
|
import { extractAttributes } from "./utils/attributes.js";
|
|
5
4
|
import { compileProgram } from "./utils/program.js";
|
|
6
|
-
import { setPrecision } from "./utils/precision.js";
|
|
5
|
+
import { setPrecision, getMaxShaderPrecision } from "./utils/precision.js";
|
|
7
6
|
import { minify } from "./utils/string.js";
|
|
8
7
|
|
|
9
8
|
/**
|
|
@@ -50,13 +49,13 @@ import { minify } from "./utils/string.js";
|
|
|
50
49
|
* the vertex shader source code
|
|
51
50
|
* @type {string}
|
|
52
51
|
*/
|
|
53
|
-
this.vertex = setPrecision(minify(vertex), precision ||
|
|
52
|
+
this.vertex = setPrecision(minify(vertex), precision || getMaxShaderPrecision(this.gl));
|
|
54
53
|
|
|
55
54
|
/**
|
|
56
55
|
* the fragment shader source code
|
|
57
56
|
* @type {string}
|
|
58
57
|
*/
|
|
59
|
-
this.fragment = setPrecision(minify(fragment), precision ||
|
|
58
|
+
this.fragment = setPrecision(minify(fragment), precision || getMaxShaderPrecision(this.gl));
|
|
60
59
|
|
|
61
60
|
/**
|
|
62
61
|
* the location attributes of the shader
|
|
@@ -9,3 +9,21 @@ export function setPrecision(src, precision) {
|
|
|
9
9
|
}
|
|
10
10
|
return src;
|
|
11
11
|
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* return the highest precision format supported by this device for GL Shaders
|
|
15
|
+
* @ignore
|
|
16
|
+
* @param {WebGLRenderingContext} gl
|
|
17
|
+
* @returns {boolean} "lowp", "mediump", or "highp"
|
|
18
|
+
*/
|
|
19
|
+
export function getMaxShaderPrecision(gl) {
|
|
20
|
+
if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&
|
|
21
|
+
gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0) {
|
|
22
|
+
return "highp";
|
|
23
|
+
}
|
|
24
|
+
if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&
|
|
25
|
+
gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0) {
|
|
26
|
+
return "mediump";
|
|
27
|
+
}
|
|
28
|
+
return "lowp";
|
|
29
|
+
}
|
|
@@ -136,6 +136,9 @@ import { isPowerOfTwo, nextPowerOfTwo } from "./../../math/math.js";
|
|
|
136
136
|
// Create a texture cache
|
|
137
137
|
this.cache = new TextureCache(this.maxTextures);
|
|
138
138
|
|
|
139
|
+
// set the renderer type
|
|
140
|
+
this.type = "WebGL" + this.WebGLVersion;
|
|
141
|
+
|
|
139
142
|
// to simulate context lost and restore in WebGL:
|
|
140
143
|
// var ctx = me.video.renderer.context.getExtension('WEBGL_lose_context');
|
|
141
144
|
// ctx.loseContext()
|