melonjs 16.1.3 → 17.1.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 -3
- package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
- package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
- package/dist/melonjs.mjs/_virtual/howler.js +1 -1
- package/dist/melonjs.mjs/_virtual/index.js +1 -1
- package/dist/melonjs.mjs/_virtual/re.js +1 -1
- package/dist/melonjs.mjs/application/application.js +1 -1
- package/dist/melonjs.mjs/application/header.js +1 -1
- package/dist/melonjs.mjs/application/resize.js +1 -1
- package/dist/melonjs.mjs/application/settings.js +1 -1
- package/dist/melonjs.mjs/audio/audio.js +120 -34
- package/dist/melonjs.mjs/camera/camera2d.js +1 -1
- package/dist/melonjs.mjs/const.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 +1 -1
- package/dist/melonjs.mjs/geometries/point.js +1 -1
- package/dist/melonjs.mjs/geometries/poly.js +1 -1
- package/dist/melonjs.mjs/geometries/rectangle.js +1 -1
- package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
- package/dist/melonjs.mjs/geometries/toarccanvas.js +1 -1
- package/dist/melonjs.mjs/index.js +7 -7
- package/dist/melonjs.mjs/input/gamepad.js +1 -1
- package/dist/melonjs.mjs/input/input.js +1 -1
- package/dist/melonjs.mjs/input/keyboard.js +1 -1
- package/dist/melonjs.mjs/input/pointer.js +1 -1
- package/dist/melonjs.mjs/input/pointerevent.js +1 -1
- package/dist/melonjs.mjs/lang/console.js +1 -1
- package/dist/melonjs.mjs/lang/deprecated.js +24 -2
- package/dist/melonjs.mjs/level/level.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXObject.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTile.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXUtils.js +1 -1
- package/dist/melonjs.mjs/level/tiled/constants.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/level/tiled/renderer/autodetect.js +1 -1
- package/dist/melonjs.mjs/loader/cache.js +1 -1
- package/dist/melonjs.mjs/loader/loader.js +127 -5
- package/dist/melonjs.mjs/loader/loadingscreen.js +1 -1
- package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
- package/dist/melonjs.mjs/loader/parsers/binary.js +4 -3
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/compressed_image.js +58 -0
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/parseDDS.js +13 -0
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/parseKTX.js +13 -0
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/parseKTX2.js +13 -0
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/parsePKM.js +13 -0
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/parsePVR.js +136 -0
- package/dist/melonjs.mjs/loader/parsers/fetchdata.js +7 -7
- package/dist/melonjs.mjs/loader/parsers/fontface.js +1 -1
- package/dist/melonjs.mjs/loader/parsers/image.js +92 -44
- package/dist/melonjs.mjs/loader/parsers/json.js +5 -4
- package/dist/melonjs.mjs/loader/parsers/script.js +7 -3
- package/dist/melonjs.mjs/loader/parsers/tmx.js +5 -4
- package/dist/melonjs.mjs/loader/parsers/video.js +7 -7
- package/dist/melonjs.mjs/math/color.js +1 -1
- package/dist/melonjs.mjs/math/math.js +25 -32
- 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/esm/arraymultimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
- package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
- package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/classes/comparator.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/classes/range.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/classes/semver.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/clean.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/cmp.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/coerce.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/compare-build.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/compare-loose.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/compare.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/diff.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/eq.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/gt.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/gte.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/inc.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/lt.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/lte.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/major.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/minor.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/neq.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/parse.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/patch.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/prerelease.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/rcompare.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/rsort.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/satisfies.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/sort.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/functions/valid.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/index.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/internal/constants.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/internal/debug.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/internal/identifiers.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/internal/parse-options.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/internal/re.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/node_modules/lru-cache/index.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/node_modules/yallist/iterator.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/node_modules/yallist/yallist.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/ranges/gtr.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/ranges/intersects.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/ranges/ltr.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/ranges/max-satisfying.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/ranges/min-satisfying.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/ranges/min-version.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/ranges/outside.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/ranges/simplify.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/ranges/subset.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/ranges/to-comparators.js +1 -1
- package/dist/melonjs.mjs/node_modules/semver/ranges/valid.js +1 -1
- package/dist/melonjs.mjs/particles/emitter.js +2 -2
- package/dist/melonjs.mjs/particles/particle.js +1 -1
- package/dist/melonjs.mjs/particles/settings.js +1 -1
- package/dist/melonjs.mjs/physics/body.js +1 -1
- package/dist/melonjs.mjs/physics/bounds.js +1 -1
- package/dist/melonjs.mjs/physics/collision.js +1 -1
- package/dist/melonjs.mjs/physics/detector.js +1 -1
- package/dist/melonjs.mjs/physics/quadtree.js +1 -1
- package/dist/melonjs.mjs/physics/response.js +1 -1
- package/dist/melonjs.mjs/physics/sat.js +1 -1
- package/dist/melonjs.mjs/physics/world.js +1 -1
- package/dist/melonjs.mjs/plugin/plugin.js +4 -4
- package/dist/melonjs.mjs/renderable/collectable.js +1 -1
- package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
- package/dist/melonjs.mjs/renderable/container.js +1 -1
- package/dist/melonjs.mjs/renderable/draggable.js +1 -1
- package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
- package/dist/melonjs.mjs/renderable/entity/entity.js +1 -1
- package/dist/melonjs.mjs/renderable/imagelayer.js +1 -1
- package/dist/melonjs.mjs/renderable/light2d.js +2 -2
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +1 -1
- package/dist/melonjs.mjs/renderable/renderable.js +19 -7
- package/dist/melonjs.mjs/renderable/sprite.js +8 -1
- package/dist/melonjs.mjs/renderable/text/bitmaptext.js +1 -1
- package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +1 -1
- package/dist/melonjs.mjs/renderable/text/glyph.js +1 -1
- package/dist/melonjs.mjs/renderable/text/text.js +2 -2
- package/dist/melonjs.mjs/renderable/text/textmetrics.js +1 -1
- package/dist/melonjs.mjs/renderable/text/textstyle.js +1 -1
- package/dist/melonjs.mjs/renderable/trigger.js +1 -1
- package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +1 -1
- package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +1 -1
- package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +1 -1
- package/dist/melonjs.mjs/state/stage.js +2 -2
- package/dist/melonjs.mjs/state/state.js +5 -5
- package/dist/melonjs.mjs/system/device.js +20 -121
- package/dist/melonjs.mjs/system/dom.js +1 -1
- package/dist/melonjs.mjs/system/event.js +2 -2
- package/dist/melonjs.mjs/system/platform.js +1 -1
- package/dist/melonjs.mjs/system/pooling.js +2 -2
- package/dist/melonjs.mjs/system/save.js +3 -3
- package/dist/melonjs.mjs/system/timer.js +4 -4
- package/dist/melonjs.mjs/tweens/easing.js +1 -1
- package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
- package/dist/melonjs.mjs/tweens/tween.js +1 -1
- package/dist/melonjs.mjs/utils/agent.js +1 -1
- package/dist/melonjs.mjs/utils/array.js +1 -1
- package/dist/melonjs.mjs/utils/file.js +1 -1
- package/dist/melonjs.mjs/utils/function.js +1 -1
- package/dist/melonjs.mjs/utils/string.js +1 -1
- package/dist/melonjs.mjs/utils/utils.js +1 -1
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +1 -4
- package/dist/melonjs.mjs/video/renderer.js +17 -45
- package/dist/melonjs.mjs/video/{texture/canvas_texture.js → rendertarget/canvasrendertarget.js} +89 -22
- package/dist/melonjs.mjs/video/texture/atlas.js +83 -160
- package/dist/melonjs.mjs/video/texture/cache.js +1 -1
- package/dist/melonjs.mjs/video/texture/parser/aseprite.js +78 -0
- package/dist/melonjs.mjs/video/texture/parser/spritesheet.js +77 -0
- package/dist/melonjs.mjs/video/texture/parser/texturepacker.js +64 -0
- package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
- package/dist/melonjs.mjs/video/video.js +1 -1
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +1 -1
- package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/glshader.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +53 -62
- package/dist/melonjs.module.js +1687 -1244
- package/dist/types/audio/audio.d.ts +84 -29
- package/dist/types/index.d.ts +2 -2
- package/dist/types/lang/deprecated.d.ts +23 -0
- package/dist/types/level/tiled/TMXLayer.d.ts +1 -2
- package/dist/types/loader/loader.d.ts +85 -1
- package/dist/types/loader/parsers/binary.d.ts +2 -1
- package/dist/types/loader/parsers/compressed_textures/compressed_image.d.ts +1 -0
- package/dist/types/loader/parsers/compressed_textures/parseDDS.d.ts +1 -0
- package/dist/types/loader/parsers/compressed_textures/parseKTX.d.ts +1 -0
- package/dist/types/loader/parsers/compressed_textures/parseKTX2.d.ts +1 -0
- package/dist/types/loader/parsers/compressed_textures/parsePKM.d.ts +1 -0
- package/dist/types/loader/parsers/compressed_textures/parsePVR.d.ts +1 -0
- package/dist/types/loader/parsers/fetchdata.d.ts +3 -1
- package/dist/types/loader/parsers/image.d.ts +2 -1
- package/dist/types/loader/parsers/json.d.ts +3 -2
- package/dist/types/loader/parsers/script.d.ts +3 -2
- package/dist/types/loader/parsers/tmx.d.ts +3 -2
- package/dist/types/loader/parsers/video.d.ts +3 -2
- package/dist/types/math/math.d.ts +8 -30
- package/dist/types/particles/emitter.d.ts +30 -9
- package/dist/types/plugin/plugin.d.ts +1 -1
- package/dist/types/polyfill/console.d.ts +1 -0
- package/dist/types/polyfill/roundrect.d.ts +1 -0
- package/dist/types/renderable/collectable.d.ts +0 -2
- package/dist/types/renderable/container.d.ts +7 -1
- package/dist/types/renderable/entity/entity.d.ts +6 -0
- package/dist/types/renderable/renderable.d.ts +9 -0
- package/dist/types/renderable/text/bitmaptext.d.ts +6 -0
- package/dist/types/renderable/trigger.d.ts +0 -2
- package/dist/types/state/stage.d.ts +1 -1
- package/dist/types/state/state.d.ts +1 -1
- package/dist/types/system/device.d.ts +1 -107
- package/dist/types/system/event.d.ts +5 -5
- package/dist/types/system/pooling.d.ts +2 -2
- package/dist/types/video/canvas/canvas_renderer.d.ts +0 -1
- package/dist/types/video/renderer.d.ts +7 -0
- package/dist/types/video/{texture/canvas_texture.d.ts → rendertarget/canvasrendertarget.d.ts} +13 -12
- package/dist/types/video/texture/atlas.d.ts +9 -13
- package/dist/types/video/texture/parser/aseprite.d.ts +8 -0
- package/dist/types/video/texture/parser/spritesheet.d.ts +8 -0
- package/dist/types/video/texture/parser/texturepacker.d.ts +8 -0
- package/dist/types/video/utils/autodetect.d.ts +1 -3
- package/dist/types/video/video.d.ts +0 -1
- package/dist/types/video/webgl/webgl_renderer.d.ts +18 -16
- package/package.json +17 -16
- package/src/audio/audio.js +118 -32
- package/src/index.js +3 -3
- package/src/lang/deprecated.js +21 -0
- package/src/loader/loader.js +119 -5
- package/src/loader/parsers/binary.js +3 -2
- package/src/loader/parsers/compressed_textures/compressed_image.js +49 -0
- package/src/loader/parsers/compressed_textures/parseDDS.js +5 -0
- package/src/loader/parsers/compressed_textures/parseKTX.js +5 -0
- package/src/loader/parsers/compressed_textures/parseKTX2.js +5 -0
- package/src/loader/parsers/compressed_textures/parsePKM.js +5 -0
- package/src/loader/parsers/compressed_textures/parsePVR.js +127 -0
- package/src/loader/parsers/fetchdata.js +6 -6
- package/src/loader/parsers/image.js +91 -43
- package/src/loader/parsers/json.js +4 -3
- package/src/loader/parsers/script.js +4 -5
- package/src/loader/parsers/tmx.js +4 -3
- package/src/loader/parsers/video.js +6 -6
- package/src/math/math.js +23 -30
- package/src/particles/emitter.js +1 -1
- package/src/plugin/plugin.js +1 -1
- package/src/renderable/container.js +1 -1
- package/src/renderable/light2d.js +1 -1
- package/src/renderable/renderable.js +19 -6
- package/src/renderable/sprite.js +7 -0
- package/src/renderable/text/text.js +1 -1
- package/src/state/stage.js +1 -1
- package/src/state/state.js +3 -3
- package/src/system/device.js +19 -120
- package/src/system/event.js +1 -1
- package/src/system/pooling.js +1 -1
- package/src/system/save.js +1 -1
- package/src/system/timer.js +2 -2
- package/src/video/canvas/canvas_renderer.js +0 -3
- package/src/video/renderer.js +15 -43
- package/src/video/{texture/canvas_texture.js → rendertarget/canvasrendertarget.js} +90 -21
- package/src/video/texture/atlas.js +81 -158
- package/src/video/texture/parser/aseprite.js +69 -0
- package/src/video/texture/parser/spritesheet.js +68 -0
- package/src/video/texture/parser/texturepacker.js +55 -0
- package/src/video/webgl/webgl_renderer.js +52 -61
- package/dist/melonjs.mjs/loader/settings.js +0 -92
- package/dist/types/loader/settings.d.ts +0 -57
- package/src/loader/settings.js +0 -86
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v17.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
6
6
|
* @copyright (C) 2011 - 2024 Olivier Biot (AltByte Pte Ltd)
|
|
7
7
|
*/
|
|
8
|
-
import { nocache } from '../settings.js';
|
|
9
|
-
|
|
10
8
|
/**
|
|
11
9
|
* Fetches data from the specified URL.
|
|
12
10
|
* @param {string} url - The URL to fetch the data from.
|
|
13
11
|
* @param {string} responseType - The type of response expected ('json', 'text', 'blob', 'arrayBuffer').
|
|
12
|
+
* @param {Object} [settings] - custom settings to apply to the request (@link https://developer.mozilla.org/en-US/docs/Web/API/fetch#options)
|
|
14
13
|
* @returns {Promise} A promise that resolves with the fetched data or rejects with an error.
|
|
14
|
+
* @ignore
|
|
15
15
|
* @example
|
|
16
16
|
* fetchData('https://api.example.com/data', 'json')
|
|
17
17
|
* .then(data => {
|
|
@@ -21,15 +21,15 @@ import { nocache } from '../settings.js';
|
|
|
21
21
|
* // Handle the error
|
|
22
22
|
* });
|
|
23
23
|
*/
|
|
24
|
-
function fetchData(url, responseType) {
|
|
24
|
+
function fetchData(url, responseType, settings = {}) {
|
|
25
25
|
return new Promise((resolve, reject) => {
|
|
26
26
|
fetch(url, {
|
|
27
27
|
method: "GET",
|
|
28
28
|
// internally nocache is a string with a generated random number
|
|
29
|
-
cache: nocache === "" ? "no-cache" : "reload",
|
|
30
|
-
credentials: "omit",
|
|
29
|
+
cache: settings.nocache === "" ? "no-cache" : "reload",
|
|
30
|
+
credentials: settings.withCredentials === true ? "include" : "omit",
|
|
31
31
|
// see setting.crossorigin, "anonymous" is used for cross-origin requests
|
|
32
|
-
mode: "no-cors"
|
|
32
|
+
mode: settings.crossOrigin === "anonymous" ? "cors" : "no-cors"
|
|
33
33
|
})
|
|
34
34
|
.then(response => {
|
|
35
35
|
if (!response.ok) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v17.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -8,12 +8,14 @@
|
|
|
8
8
|
import { imgList } from '../cache.js';
|
|
9
9
|
import { fetchData } from './fetchdata.js';
|
|
10
10
|
import { getExtension } from '../../utils/file.js';
|
|
11
|
+
import { parseCompressedImage } from './compressed_textures/compressed_image.js';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* parse/preload an image
|
|
14
15
|
* @param {loader.Asset} img
|
|
15
16
|
* @param {Function} [onload] - function to be called when the resource is loaded
|
|
16
17
|
* @param {Function} [onerror] - function to be called in case of error
|
|
18
|
+
* @param {Object} [settings] - Additional settings to be passed when loading the asset
|
|
17
19
|
* @returns {number} the amount of corresponding resource parsed/preloaded
|
|
18
20
|
* @ignore
|
|
19
21
|
* @example
|
|
@@ -24,58 +26,104 @@ import { getExtension } from '../../utils/file.js';
|
|
|
24
26
|
* { name : 'image4', src : 'images/image4.png'}
|
|
25
27
|
* ]);
|
|
26
28
|
*/
|
|
27
|
-
function preloadImage(img, onload, onerror) {
|
|
29
|
+
function preloadImage(img, onload, onerror, settings) {
|
|
28
30
|
if (typeof imgList[img.name] !== "undefined") {
|
|
29
31
|
// already loaded
|
|
30
32
|
return 0;
|
|
31
33
|
}
|
|
32
34
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
35
|
+
let sources = Array.isArray(img.src) ? img.src : [img.src];
|
|
36
|
+
let isFormatSupported = false;
|
|
37
|
+
|
|
38
|
+
for (const imgPath of sources) {
|
|
39
|
+
const imgExt = getExtension(imgPath);
|
|
40
|
+
// loop will stop as soon as a first supported format is detected
|
|
41
|
+
switch (imgExt) {
|
|
42
|
+
// Compressed texture
|
|
43
|
+
case "dds":
|
|
44
|
+
case "pvr":
|
|
45
|
+
case "pkm":
|
|
46
|
+
case "ktx":
|
|
47
|
+
case "ktx2":
|
|
48
|
+
fetchData(imgPath, "arrayBuffer", settings)
|
|
49
|
+
.then(arrayBuffer => {
|
|
50
|
+
try {
|
|
51
|
+
imgList[img.name] = parseCompressedImage(arrayBuffer, imgExt);
|
|
52
|
+
isFormatSupported = true;
|
|
53
|
+
if (typeof onload === "function") {
|
|
54
|
+
// callback
|
|
55
|
+
onload();
|
|
56
|
+
}
|
|
57
|
+
} catch (e) {
|
|
58
|
+
// parseCompressedImage will throw an error if a format is not supported or badly formatted
|
|
59
|
+
}
|
|
60
|
+
}).catch(error => {
|
|
61
|
+
if (typeof onerror === "function") {
|
|
62
|
+
// file cannot be loaded
|
|
63
|
+
onerror(error);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
break;
|
|
67
|
+
|
|
68
|
+
// SVG file
|
|
69
|
+
case "svg":
|
|
70
|
+
fetchData(imgPath, "text", settings)
|
|
71
|
+
.then(svgText => {
|
|
72
|
+
const svgImage = new Image();
|
|
73
|
+
svgImage.onload = function() {
|
|
74
|
+
imgList[img.name] = svgImage;
|
|
75
|
+
if (typeof onload === "function") {
|
|
76
|
+
// callback
|
|
77
|
+
onload();
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
svgImage.onerror = function(error) {
|
|
81
|
+
if (typeof onerror === "function") {
|
|
82
|
+
onerror(error);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
svgImage.src = "data:image/svg+xml;charset=utf8," + encodeURIComponent(svgText);
|
|
86
|
+
})
|
|
87
|
+
.catch(error => {
|
|
88
|
+
if (typeof onerror === "function") {
|
|
89
|
+
onerror(error);
|
|
68
90
|
}
|
|
69
91
|
});
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
92
|
+
isFormatSupported = true;
|
|
93
|
+
break;
|
|
94
|
+
|
|
95
|
+
// default is regular images (jpg, png and friends)
|
|
96
|
+
default:
|
|
97
|
+
fetchData(imgPath, "blob", settings)
|
|
98
|
+
.then(blob => {
|
|
99
|
+
globalThis.createImageBitmap(blob)
|
|
100
|
+
.then((bitmap) => {
|
|
101
|
+
imgList[img.name] = bitmap;
|
|
102
|
+
if (typeof onload === "function") {
|
|
103
|
+
// callback
|
|
104
|
+
onload();
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
})
|
|
108
|
+
.catch(error => {
|
|
109
|
+
if (typeof onerror === "function") {
|
|
110
|
+
onerror(error);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
isFormatSupported = true;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// exit the loop as soon as the first supported format is detected
|
|
118
|
+
if (isFormatSupported === true) {
|
|
119
|
+
return 1;
|
|
120
|
+
}
|
|
76
121
|
}
|
|
77
122
|
|
|
78
|
-
|
|
123
|
+
// no compatible format was found
|
|
124
|
+
throw new Error(
|
|
125
|
+
"No suppported Image file format found for " + img.name
|
|
126
|
+
);
|
|
79
127
|
}
|
|
80
128
|
|
|
81
129
|
export { preloadImage };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v17.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -11,18 +11,19 @@ import { fetchData } from './fetchdata.js';
|
|
|
11
11
|
/**
|
|
12
12
|
* parse/preload a JSON files
|
|
13
13
|
* @param {loader.Asset} data - asset data
|
|
14
|
-
* @param {Function} [onload] - function to be called when the
|
|
14
|
+
* @param {Function} [onload] - function to be called when the resource is loaded
|
|
15
15
|
* @param {Function} [onerror] - function to be called in case of error
|
|
16
|
+
* @param {Object} [settings] - Additional settings to be passed when loading the asset
|
|
16
17
|
* @returns {number} the amount of corresponding resource parsed/preloaded
|
|
17
18
|
* @ignore
|
|
18
19
|
*/
|
|
19
|
-
function preloadJSON(data, onload, onerror) {
|
|
20
|
+
function preloadJSON(data, onload, onerror, settings) {
|
|
20
21
|
if (typeof jsonList[data.name] !== "undefined") {
|
|
21
22
|
// already loaded
|
|
22
23
|
return 0;
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
fetchData(data.src, "json")
|
|
26
|
+
fetchData(data.src, "json", settings)
|
|
26
27
|
.then(response => {
|
|
27
28
|
jsonList[data.name] = response;
|
|
28
29
|
if (typeof onload === "function") {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v17.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -8,16 +8,20 @@
|
|
|
8
8
|
/**
|
|
9
9
|
* parse/preload a Javascript files
|
|
10
10
|
* @param {loader.Asset} data - asset data
|
|
11
|
-
* @param {Function} [onload] - function to be called when the
|
|
11
|
+
* @param {Function} [onload] - function to be called when the resource is loaded
|
|
12
12
|
* @param {Function} [onerror] - function to be called in case of error
|
|
13
|
+
* @param {Object} [settings] - Additional settings to be passed when loading the asset
|
|
13
14
|
* @returns {number} the amount of corresponding resource parsed/preloaded
|
|
14
15
|
* @ignore
|
|
15
16
|
*/
|
|
16
|
-
function preloadJavascript(data, onload, onerror) {
|
|
17
|
+
function preloadJavascript(data, onload, onerror, settings) {
|
|
17
18
|
let script = globalThis.document.createElement("script");
|
|
18
19
|
|
|
19
20
|
script.src = data.src;
|
|
20
21
|
script.type = "text/javascript";
|
|
22
|
+
if (typeof (crossOrigin) === "string") {
|
|
23
|
+
script.crossOrigin = settings.crossOrigin;
|
|
24
|
+
}
|
|
21
25
|
script.defer = true;
|
|
22
26
|
|
|
23
27
|
if (typeof onload === "function") {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v17.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -15,12 +15,13 @@ import { fetchData } from './fetchdata.js';
|
|
|
15
15
|
* parse/preload a TMX file
|
|
16
16
|
* @param {loader.Asset} data - asset data
|
|
17
17
|
* @param {Function} [onload] - function to be called when the asset is loaded
|
|
18
|
+
* @param {Function} [onload] - function to be called when the resource is loaded
|
|
18
19
|
* @param {Function} [onerror] - function to be called in case of error
|
|
19
|
-
* @param {
|
|
20
|
+
* @param {Object} [settings] - Additional settings to be passed when loading the asset
|
|
20
21
|
* @returns {number} the amount of corresponding resource parsed/preloaded
|
|
21
22
|
* @ignore
|
|
22
23
|
*/
|
|
23
|
-
function preloadTMX(tmxData, onload, onerror) {
|
|
24
|
+
function preloadTMX(tmxData, onload, onerror, settings) {
|
|
24
25
|
if (typeof tmxList[tmxData.name] !== "undefined") {
|
|
25
26
|
// already loaded
|
|
26
27
|
return 0;
|
|
@@ -48,7 +49,7 @@ function preloadTMX(tmxData, onload, onerror) {
|
|
|
48
49
|
return;
|
|
49
50
|
}
|
|
50
51
|
|
|
51
|
-
fetchData(tmxData.src, "text")
|
|
52
|
+
fetchData(tmxData.src, "text", settings)
|
|
52
53
|
.then(response => {
|
|
53
54
|
if (typeof response !== "string") {
|
|
54
55
|
throw new Error("Invalid response type");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v17.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -9,25 +9,25 @@ import { videoList } from '../cache.js';
|
|
|
9
9
|
import { fetchData } from './fetchdata.js';
|
|
10
10
|
import { hasVideoFormat } from '../../system/device.js';
|
|
11
11
|
import { getExtension } from '../../utils/file.js';
|
|
12
|
-
import { crossOrigin } from '../settings.js';
|
|
13
12
|
import { isDataUrl } from '../../utils/string.js';
|
|
14
13
|
|
|
15
14
|
/**
|
|
16
15
|
* parse/preload a Video file
|
|
17
16
|
* @param {loader.Asset} data - asset data
|
|
18
|
-
* @param {Function} [onload] - function to be called when the
|
|
17
|
+
* @param {Function} [onload] - function to be called when the resource is loaded
|
|
19
18
|
* @param {Function} [onerror] - function to be called in case of error
|
|
19
|
+
* @param {Object} [settings] - Additional settings to be passed when loading the asset
|
|
20
20
|
* @returns {number} the amount of corresponding resource parsed/preloaded
|
|
21
21
|
* @ignore
|
|
22
22
|
*/
|
|
23
|
-
function preloadVideo(data, onload, onerror) {
|
|
23
|
+
function preloadVideo(data, onload, onerror, settings) {
|
|
24
24
|
|
|
25
25
|
if (typeof videoList[data.name] !== "undefined") {
|
|
26
26
|
// Video already preloaded
|
|
27
27
|
return 0;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
let videoElement = videoList[data.name] = document.createElement("video");
|
|
30
|
+
let videoElement = videoList[data.name] = globalThis.document.createElement("video");
|
|
31
31
|
|
|
32
32
|
if (isDataUrl(data.src)) {
|
|
33
33
|
const mimeType = data.src.match(/[^:]\w+\/[\w-+\d.]+(?=;|,)/)[0];
|
|
@@ -41,7 +41,7 @@ function preloadVideo(data, onload, onerror) {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
if (isDataUrl(data.src)) {
|
|
44
|
-
fetchData(data.src, "blob")
|
|
44
|
+
fetchData(data.src, "blob", settings)
|
|
45
45
|
.then(blob => {
|
|
46
46
|
videoElement.src = globalThis.URL.createObjectURL(blob);
|
|
47
47
|
})
|
|
@@ -59,7 +59,7 @@ function preloadVideo(data, onload, onerror) {
|
|
|
59
59
|
videoElement.setAttribute("playsinline", "true");
|
|
60
60
|
videoElement.setAttribute("disablePictureInPicture", "true");
|
|
61
61
|
videoElement.setAttribute("controls", "false");
|
|
62
|
-
videoElement.setAttribute("crossorigin", crossOrigin);
|
|
62
|
+
videoElement.setAttribute("crossorigin", settings.crossOrigin);
|
|
63
63
|
|
|
64
64
|
if (data.autoplay === true) {
|
|
65
65
|
videoElement.setAttribute("autoplay", "true");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v17.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -12,54 +12,42 @@
|
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* constant to convert from degrees to radians
|
|
15
|
-
* @public
|
|
16
15
|
* @type {number}
|
|
17
|
-
* @name DEG_TO_RAD
|
|
18
16
|
* @memberof Math
|
|
19
17
|
*/
|
|
20
18
|
const DEG_TO_RAD = Math.PI / 180.0;
|
|
21
19
|
|
|
22
20
|
/**
|
|
23
21
|
* constant to convert from radians to degrees
|
|
24
|
-
* @public
|
|
25
22
|
* @type {number}
|
|
26
|
-
* @name RAD_TO_DEG
|
|
27
23
|
* @memberof Math
|
|
28
24
|
*/
|
|
29
25
|
const RAD_TO_DEG = 180.0 / Math.PI;
|
|
30
26
|
|
|
31
27
|
/**
|
|
32
28
|
* constant equals to 2 times pi
|
|
33
|
-
* @public
|
|
34
29
|
* @type {number}
|
|
35
|
-
* @name TAU
|
|
36
30
|
* @memberof Math
|
|
37
31
|
*/
|
|
38
32
|
const TAU = Math.PI * 2;
|
|
39
33
|
|
|
40
34
|
/**
|
|
41
35
|
* constant equals to half pi
|
|
42
|
-
* @public
|
|
43
36
|
* @type {number}
|
|
44
|
-
* @name ETA
|
|
45
37
|
* @memberof Math
|
|
46
38
|
*/
|
|
47
39
|
const ETA = Math.PI * 0.5;
|
|
48
40
|
|
|
49
41
|
/**
|
|
50
42
|
* the difference between 1 and the smallest floating point number greater than 1
|
|
51
|
-
* @public
|
|
52
43
|
* @type {number}
|
|
53
|
-
* @name EPSILON
|
|
54
44
|
* @memberof Math
|
|
55
45
|
*/
|
|
56
46
|
const EPSILON = 0.000001;
|
|
57
47
|
|
|
58
48
|
/**
|
|
59
49
|
* returns true if the given value is a power of two
|
|
60
|
-
* @public
|
|
61
50
|
* @memberof Math
|
|
62
|
-
* @name isPowerOfTwo
|
|
63
51
|
* @param {number} val
|
|
64
52
|
* @returns {boolean}
|
|
65
53
|
*/
|
|
@@ -67,11 +55,31 @@ function isPowerOfTwo(val) {
|
|
|
67
55
|
return (val & (val - 1)) === 0;
|
|
68
56
|
}
|
|
69
57
|
|
|
58
|
+
/**
|
|
59
|
+
* returns true if the given value is a power of four
|
|
60
|
+
* @memberof Math
|
|
61
|
+
* @param {number} val
|
|
62
|
+
* @returns {boolean}
|
|
63
|
+
*/
|
|
64
|
+
function isPowerOfFour(val) {
|
|
65
|
+
if (val === 0 || val === 2 || val === 3) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
if (val === 1) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if ((val & (val - 1)) === 0) {
|
|
73
|
+
if ((val & 0xAAAAAAAA) === 0) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
|
|
70
80
|
/**
|
|
71
81
|
* returns the next power of two for the given value
|
|
72
|
-
* @public
|
|
73
82
|
* @memberof Math
|
|
74
|
-
* @name nextPowerOfTwo
|
|
75
83
|
* @param {number} val
|
|
76
84
|
* @returns {boolean}
|
|
77
85
|
*/
|
|
@@ -88,9 +96,7 @@ function nextPowerOfTwo(val) {
|
|
|
88
96
|
|
|
89
97
|
/**
|
|
90
98
|
* Converts an angle in degrees to an angle in radians
|
|
91
|
-
* @public
|
|
92
99
|
* @memberof Math
|
|
93
|
-
* @name degToRad
|
|
94
100
|
* @param {number} angle - angle in degrees
|
|
95
101
|
* @returns {number} corresponding angle in radians
|
|
96
102
|
* @example
|
|
@@ -103,9 +109,7 @@ function degToRad(angle) {
|
|
|
103
109
|
|
|
104
110
|
/**
|
|
105
111
|
* Converts an angle in radians to an angle in degrees.
|
|
106
|
-
* @public
|
|
107
112
|
* @memberof Math
|
|
108
|
-
* @name radToDeg
|
|
109
113
|
* @param {number} radians - angle in radians
|
|
110
114
|
* @returns {number} corresponding angle in degrees
|
|
111
115
|
* @example
|
|
@@ -118,9 +122,7 @@ function radToDeg(radians) {
|
|
|
118
122
|
|
|
119
123
|
/**
|
|
120
124
|
* clamp the given value
|
|
121
|
-
* @public
|
|
122
125
|
* @memberof Math
|
|
123
|
-
* @name clamp
|
|
124
126
|
* @param {number} val - the value to clamp
|
|
125
127
|
* @param {number} low - lower limit
|
|
126
128
|
* @param {number} high - higher limit
|
|
@@ -132,9 +134,7 @@ function clamp(val, low, high) {
|
|
|
132
134
|
|
|
133
135
|
/**
|
|
134
136
|
* return a random integer between min (included) and max (excluded)
|
|
135
|
-
* @public
|
|
136
137
|
* @memberof Math
|
|
137
|
-
* @name random
|
|
138
138
|
* @param {number} min - minimum value.
|
|
139
139
|
* @param {number} max - maximum value.
|
|
140
140
|
* @returns {number} random value
|
|
@@ -148,9 +148,7 @@ function random(min, max) {
|
|
|
148
148
|
|
|
149
149
|
/**
|
|
150
150
|
* return a random float between min, max (exclusive)
|
|
151
|
-
* @public
|
|
152
151
|
* @memberof Math
|
|
153
|
-
* @name randomFloat
|
|
154
152
|
* @param {number} min - minimum value.
|
|
155
153
|
* @param {number} max - maximum value.
|
|
156
154
|
* @returns {number} random value
|
|
@@ -164,9 +162,7 @@ function randomFloat(min, max) {
|
|
|
164
162
|
|
|
165
163
|
/**
|
|
166
164
|
* return a weighted random between min, max (exclusive)
|
|
167
|
-
* @public
|
|
168
165
|
* @memberof Math
|
|
169
|
-
* @name weightedRandom
|
|
170
166
|
* @param {number} min - minimum value.
|
|
171
167
|
* @param {number} max - maximum value.
|
|
172
168
|
* @returns {number} random value
|
|
@@ -180,9 +176,7 @@ function weightedRandom(min, max) {
|
|
|
180
176
|
|
|
181
177
|
/**
|
|
182
178
|
* round a value to the specified number of digit
|
|
183
|
-
* @public
|
|
184
179
|
* @memberof Math
|
|
185
|
-
* @name round
|
|
186
180
|
* @param {number} num - value to be rounded.
|
|
187
181
|
* @param {number} [dec=0] - number of decimal digit to be rounded to.
|
|
188
182
|
* @returns {number} rounded value
|
|
@@ -198,9 +192,7 @@ function round(num, dec = 0) {
|
|
|
198
192
|
|
|
199
193
|
/**
|
|
200
194
|
* check if the given value is close to the expected one
|
|
201
|
-
* @public
|
|
202
195
|
* @memberof Math
|
|
203
|
-
* @name toBeCloseTo
|
|
204
196
|
* @param {number} expected - value to be compared with.
|
|
205
197
|
* @param {number} actual - actual value to compare
|
|
206
198
|
* @param {number} [precision=2] - float precision for the comparison
|
|
@@ -218,6 +210,7 @@ function toBeCloseTo(expected, actual, precision = 2) {
|
|
|
218
210
|
|
|
219
211
|
/**
|
|
220
212
|
* Calculates the power of a number.
|
|
213
|
+
* @memberof Math
|
|
221
214
|
* @param {number} n - The number to be raised to the power of 2.
|
|
222
215
|
* @returns {number} The result of raising the number to the power of 2.
|
|
223
216
|
*/
|
|
@@ -225,4 +218,4 @@ function pow(n) {
|
|
|
225
218
|
return Math.pow(n, 2);
|
|
226
219
|
}
|
|
227
220
|
|
|
228
|
-
export { DEG_TO_RAD, EPSILON, ETA, RAD_TO_DEG, TAU, clamp, degToRad, isPowerOfTwo, nextPowerOfTwo, pow, radToDeg, random, randomFloat, round, toBeCloseTo, weightedRandom };
|
|
221
|
+
export { DEG_TO_RAD, EPSILON, ETA, RAD_TO_DEG, TAU, clamp, degToRad, isPowerOfFour, isPowerOfTwo, nextPowerOfTwo, pow, radToDeg, random, randomFloat, round, toBeCloseTo, weightedRandom };
|