melonjs 17.4.0 → 18.0.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/{dist/types → build}/application/application.d.ts +9 -10
- package/build/application/application.d.ts.map +1 -0
- package/build/application/defaultApplicationSettings.d.ts +18 -0
- package/build/application/defaultApplicationSettings.d.ts.map +1 -0
- package/{dist/types → build}/application/header.d.ts +1 -0
- package/build/application/header.d.ts.map +1 -0
- package/{dist/types → build}/application/resize.d.ts +1 -0
- package/build/application/resize.d.ts.map +1 -0
- package/build/application/scaleMethods.d.ts +44 -0
- package/build/application/scaleMethods.d.ts.map +1 -0
- package/build/application/settings.d.ts +85 -0
- package/build/application/settings.d.ts.map +1 -0
- package/{dist/types → build}/audio/audio.d.ts +35 -58
- package/build/audio/audio.d.ts.map +1 -0
- package/{dist/types → build}/camera/camera2d.d.ts +38 -76
- package/build/camera/camera2d.d.ts.map +1 -0
- package/build/const.d.ts +14 -0
- package/build/const.d.ts.map +1 -0
- package/build/geometries/earcut.d.ts +3 -0
- package/build/geometries/earcut.d.ts.map +1 -0
- package/build/geometries/ellipse.d.ts +117 -0
- package/build/geometries/ellipse.d.ts.map +1 -0
- package/build/geometries/line.d.ts +39 -0
- package/build/geometries/line.d.ts.map +1 -0
- package/build/geometries/observablePoint.d.ts +75 -0
- package/build/geometries/observablePoint.d.ts.map +1 -0
- package/{dist/types → build}/geometries/path2d.d.ts +8 -7
- package/build/geometries/path2d.d.ts.map +1 -0
- package/build/geometries/point.d.ts +44 -0
- package/build/geometries/point.d.ts.map +1 -0
- package/build/geometries/polygon.d.ts +182 -0
- package/build/geometries/polygon.d.ts.map +1 -0
- package/build/geometries/rectangle.d.ts +135 -0
- package/build/geometries/rectangle.d.ts.map +1 -0
- package/build/geometries/roundrect.d.ts +67 -0
- package/build/geometries/roundrect.d.ts.map +1 -0
- package/build/geometries/toarccanvas.d.ts +28 -0
- package/build/geometries/toarccanvas.d.ts.map +1 -0
- package/{dist/types → build}/index.d.ts +41 -45
- package/build/index.d.ts.map +1 -0
- package/build/index.js +28318 -0
- package/build/index.js.map +7 -0
- package/{dist/types → build}/input/gamepad.d.ts +3 -11
- package/build/input/gamepad.d.ts.map +1 -0
- package/{dist/types → build}/input/input.d.ts +4 -2
- package/build/input/input.d.ts.map +1 -0
- package/build/input/key.d.ts +105 -0
- package/build/input/key.d.ts.map +1 -0
- package/build/input/keyboard.d.ts +72 -0
- package/build/input/keyboard.d.ts.map +1 -0
- package/build/input/pointer.d.ts +180 -0
- package/build/input/pointer.d.ts.map +1 -0
- package/{dist/types → build}/input/pointerevent.d.ts +17 -16
- package/build/input/pointerevent.d.ts.map +1 -0
- package/{dist/types → build}/lang/console.d.ts +1 -0
- package/build/lang/console.d.ts.map +1 -0
- package/build/lang/deprecated.d.ts +24 -0
- package/build/lang/deprecated.d.ts.map +1 -0
- package/{dist/types → build}/level/level.d.ts +7 -7
- package/build/level/level.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/TMXGroup.d.ts +2 -2
- package/build/level/tiled/TMXGroup.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/TMXLayer.d.ts +4 -4
- package/build/level/tiled/TMXLayer.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/TMXObject.d.ts +3 -3
- package/build/level/tiled/TMXObject.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/TMXTile.d.ts +4 -5
- package/build/level/tiled/TMXTile.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/TMXTileMap.d.ts +4 -4
- package/build/level/tiled/TMXTileMap.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/TMXTileset.d.ts +2 -2
- package/build/level/tiled/TMXTileset.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/TMXTilesetGroup.d.ts +1 -1
- package/build/level/tiled/TMXTilesetGroup.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/TMXUtils.d.ts +2 -1
- package/build/level/tiled/TMXUtils.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/constants.d.ts +1 -0
- package/build/level/tiled/constants.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/renderer/TMXHexagonalRenderer.d.ts +3 -4
- package/build/level/tiled/renderer/TMXHexagonalRenderer.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/renderer/TMXIsometricRenderer.d.ts +2 -3
- package/build/level/tiled/renderer/TMXIsometricRenderer.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/renderer/TMXOrthogonalRenderer.d.ts +1 -2
- package/build/level/tiled/renderer/TMXOrthogonalRenderer.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/renderer/TMXRenderer.d.ts +7 -7
- package/build/level/tiled/renderer/TMXRenderer.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/renderer/TMXStaggeredRenderer.d.ts +1 -2
- package/build/level/tiled/renderer/TMXStaggeredRenderer.d.ts.map +1 -0
- package/{dist/types → build}/level/tiled/renderer/autodetect.d.ts +4 -3
- package/build/level/tiled/renderer/autodetect.d.ts.map +1 -0
- package/build/loader/cache.d.ts +10 -0
- package/build/loader/cache.d.ts.map +1 -0
- package/{dist/types → build}/loader/loader.d.ts +19 -13
- package/build/loader/loader.d.ts.map +1 -0
- package/{dist/types → build}/loader/loadingscreen.d.ts +1 -0
- package/build/loader/loadingscreen.d.ts.map +1 -0
- package/{dist/types → build}/loader/parsers/binary.d.ts +2 -1
- package/build/loader/parsers/binary.d.ts.map +1 -0
- package/{dist/types → build}/loader/parsers/compressed_textures/compressed_image.d.ts +1 -0
- package/build/loader/parsers/compressed_textures/compressed_image.d.ts.map +1 -0
- package/build/loader/parsers/compressed_textures/parseDDS.d.ts +2 -0
- package/build/loader/parsers/compressed_textures/parseDDS.d.ts.map +1 -0
- package/build/loader/parsers/compressed_textures/parseKTX.d.ts +2 -0
- package/build/loader/parsers/compressed_textures/parseKTX.d.ts.map +1 -0
- package/build/loader/parsers/compressed_textures/parseKTX2.d.ts +2 -0
- package/build/loader/parsers/compressed_textures/parseKTX2.d.ts.map +1 -0
- package/build/loader/parsers/compressed_textures/parsePKM.d.ts +2 -0
- package/build/loader/parsers/compressed_textures/parsePKM.d.ts.map +1 -0
- package/build/loader/parsers/compressed_textures/parsePVR.d.ts +2 -0
- package/build/loader/parsers/compressed_textures/parsePVR.d.ts.map +1 -0
- package/{dist/types → build}/loader/parsers/fetchdata.d.ts +2 -1
- package/build/loader/parsers/fetchdata.d.ts.map +1 -0
- package/{dist/types → build}/loader/parsers/fontface.d.ts +2 -1
- package/build/loader/parsers/fontface.d.ts.map +1 -0
- package/{dist/types → build}/loader/parsers/image.d.ts +2 -1
- package/build/loader/parsers/image.d.ts.map +1 -0
- package/{dist/types → build}/loader/parsers/json.d.ts +2 -1
- package/build/loader/parsers/json.d.ts.map +1 -0
- package/{dist/types → build}/loader/parsers/script.d.ts +2 -1
- package/build/loader/parsers/script.d.ts.map +1 -0
- package/{dist/types → build}/loader/parsers/tmx.d.ts +2 -1
- package/build/loader/parsers/tmx.d.ts.map +1 -0
- package/{dist/types → build}/loader/parsers/video.d.ts +2 -1
- package/build/loader/parsers/video.d.ts.map +1 -0
- package/build/math/color.d.ts +192 -0
- package/build/math/color.d.ts.map +1 -0
- package/build/math/math.d.ts +128 -0
- package/build/math/math.d.ts.map +1 -0
- package/build/math/matrix2d.d.ts +163 -0
- package/build/math/matrix2d.d.ts.map +1 -0
- package/build/math/matrix3d.d.ts +188 -0
- package/build/math/matrix3d.d.ts.map +1 -0
- package/build/math/observableVector2d.d.ts +286 -0
- package/build/math/observableVector2d.d.ts.map +1 -0
- package/build/math/observableVector2d_old.d.ts +76 -0
- package/build/math/observableVector2d_old.d.ts.map +1 -0
- package/build/math/observableVector3d.d.ts +283 -0
- package/build/math/observableVector3d.d.ts.map +1 -0
- package/build/math/observableVector3d_old.d.ts +81 -0
- package/build/math/observableVector3d_old.d.ts.map +1 -0
- package/build/math/vector2d.d.ts +253 -0
- package/build/math/vector2d.d.ts.map +1 -0
- package/build/math/vector3d.d.ts +242 -0
- package/build/math/vector3d.d.ts.map +1 -0
- package/{dist/types → build}/particles/emitter.d.ts +7 -10
- package/build/particles/emitter.d.ts.map +1 -0
- package/build/particles/particle.d.ts +47 -0
- package/build/particles/particle.d.ts.map +1 -0
- package/{dist/types → build}/particles/settings.d.ts +1 -0
- package/build/particles/settings.d.ts.map +1 -0
- package/{dist/types → build}/physics/body.d.ts +27 -27
- package/build/physics/body.d.ts.map +1 -0
- package/build/physics/bounds.d.ts +192 -0
- package/build/physics/bounds.d.ts.map +1 -0
- package/{dist/types → build}/physics/collision.d.ts +5 -5
- package/build/physics/collision.d.ts.map +1 -0
- package/{dist/types → build}/physics/detector.d.ts +8 -6
- package/build/physics/detector.d.ts.map +1 -0
- package/{dist/types → build}/physics/quadtree.d.ts +5 -19
- package/build/physics/quadtree.d.ts.map +1 -0
- package/{dist/types → build}/physics/response.d.ts +46 -5
- package/build/physics/response.d.ts.map +1 -0
- package/{dist/types → build}/physics/sat.d.ts +3 -2
- package/build/physics/sat.d.ts.map +1 -0
- package/{dist/types → build}/physics/world.d.ts +5 -4
- package/build/physics/world.d.ts.map +1 -0
- package/{dist/types → build}/plugin/plugin.d.ts +8 -19
- package/build/plugin/plugin.d.ts.map +1 -0
- package/build/polyfill/console.d.ts +2 -0
- package/build/polyfill/console.d.ts.map +1 -0
- package/build/polyfill/index.d.ts +6 -0
- package/build/polyfill/index.d.ts.map +1 -0
- package/build/polyfill/roundrect.d.ts +2 -0
- package/build/polyfill/roundrect.d.ts.map +1 -0
- package/build/pool.d.ts +39 -0
- package/build/pool.d.ts.map +1 -0
- package/{dist/types → build}/renderable/collectable.d.ts +2 -2
- package/build/renderable/collectable.d.ts.map +1 -0
- package/{dist/types → build}/renderable/colorlayer.d.ts +6 -10
- package/build/renderable/colorlayer.d.ts.map +1 -0
- package/{dist/types → build}/renderable/container.d.ts +14 -15
- package/build/renderable/container.d.ts.map +1 -0
- package/{dist/types → build}/renderable/draggable.d.ts +5 -13
- package/build/renderable/draggable.d.ts.map +1 -0
- package/{dist/types → build}/renderable/dragndrop.d.ts +7 -21
- package/build/renderable/dragndrop.d.ts.map +1 -0
- package/{dist/types → build}/renderable/entity/entity.d.ts +12 -13
- package/build/renderable/entity/entity.d.ts.map +1 -0
- package/{dist/types → build}/renderable/imagelayer.d.ts +17 -9
- package/build/renderable/imagelayer.d.ts.map +1 -0
- package/build/renderable/light2d.d.ts +73 -0
- package/build/renderable/light2d.d.ts.map +1 -0
- package/{dist/types → build}/renderable/nineslicesprite.d.ts +3 -4
- package/build/renderable/nineslicesprite.d.ts.map +1 -0
- package/{dist/types → build}/renderable/renderable.d.ts +57 -60
- package/build/renderable/renderable.d.ts.map +1 -0
- package/{dist/types → build}/renderable/sprite.d.ts +28 -14
- package/build/renderable/sprite.d.ts.map +1 -0
- package/{dist/types → build}/renderable/text/bitmaptext.d.ts +6 -7
- package/build/renderable/text/bitmaptext.d.ts.map +1 -0
- package/build/renderable/text/bitmaptextdata.d.ts +17 -0
- package/build/renderable/text/bitmaptextdata.d.ts.map +1 -0
- package/{dist/types → build}/renderable/text/glyph.d.ts +15 -3
- package/build/renderable/text/glyph.d.ts.map +1 -0
- package/{dist/types → build}/renderable/text/text.d.ts +7 -16
- package/build/renderable/text/text.d.ts.map +1 -0
- package/{dist/types → build}/renderable/text/textmetrics.d.ts +8 -9
- package/build/renderable/text/textmetrics.d.ts.map +1 -0
- package/{dist/types → build}/renderable/text/textstyle.d.ts +1 -0
- package/build/renderable/text/textstyle.d.ts.map +1 -0
- package/{dist/types → build}/renderable/trigger.d.ts +18 -7
- package/build/renderable/trigger.d.ts.map +1 -0
- package/{dist/types → build}/renderable/ui/uibaseelement.d.ts +7 -7
- package/build/renderable/ui/uibaseelement.d.ts.map +1 -0
- package/{dist/types → build}/renderable/ui/uispriteelement.d.ts +4 -6
- package/build/renderable/ui/uispriteelement.d.ts.map +1 -0
- package/{dist/types → build}/renderable/ui/uitextbutton.d.ts +17 -4
- package/build/renderable/ui/uitextbutton.d.ts.map +1 -0
- package/{dist/types → build}/state/stage.d.ts +3 -3
- package/build/state/stage.d.ts.map +1 -0
- package/{dist/types → build}/state/state.d.ts +10 -9
- package/build/state/state.d.ts.map +1 -0
- package/{dist/types → build}/system/device.d.ts +49 -80
- package/build/system/device.d.ts.map +1 -0
- package/build/system/dom.d.ts +2 -0
- package/build/system/dom.d.ts.map +1 -0
- package/{dist/types → build}/system/event.d.ts +124 -291
- package/build/system/event.d.ts.map +1 -0
- package/build/system/eventEmitter.d.ts +19 -0
- package/build/system/eventEmitter.d.ts.map +1 -0
- package/build/system/eventEmitter.spec.d.ts +2 -0
- package/build/system/eventEmitter.spec.d.ts.map +1 -0
- package/{dist/types/system/pooling.d.ts → build/system/legacy_pool.d.ts} +22 -7
- package/build/system/legacy_pool.d.ts.map +1 -0
- package/build/system/platform.d.ts +34 -0
- package/build/system/platform.d.ts.map +1 -0
- package/build/system/pool.d.ts +26 -0
- package/build/system/pool.d.ts.map +1 -0
- package/build/system/save.d.ts +3 -0
- package/build/system/save.d.ts.map +1 -0
- package/build/system/timer.d.ts +118 -0
- package/build/system/timer.d.ts.map +1 -0
- package/build/tweens/easing.d.ts +93 -0
- package/build/tweens/easing.d.ts.map +1 -0
- package/build/tweens/interpolation.d.ts +7 -0
- package/build/tweens/interpolation.d.ts.map +1 -0
- package/build/tweens/tween.d.ts +234 -0
- package/build/tweens/tween.d.ts.map +1 -0
- package/build/utils/agent.d.ts +16 -0
- package/build/utils/agent.d.ts.map +1 -0
- package/build/utils/array-multimap.d.ts +14 -0
- package/build/utils/array-multimap.d.ts.map +1 -0
- package/build/utils/array.d.ts +30 -0
- package/build/utils/array.d.ts.map +1 -0
- package/build/utils/file.d.ts +16 -0
- package/build/utils/file.d.ts.map +1 -0
- package/build/utils/function.d.ts +24 -0
- package/build/utils/function.d.ts.map +1 -0
- package/build/utils/semver.d.ts +2 -0
- package/build/utils/semver.d.ts.map +1 -0
- package/build/utils/string.d.ts +35 -0
- package/build/utils/string.d.ts.map +1 -0
- package/build/utils/types.d.ts +5 -0
- package/build/utils/types.d.ts.map +1 -0
- package/build/utils/utils.d.ts +49 -0
- package/build/utils/utils.d.ts.map +1 -0
- package/build/version.d.ts +5 -0
- package/build/version.d.ts.map +1 -0
- package/{dist/types → build}/video/canvas/canvas_renderer.d.ts +40 -32
- package/build/video/canvas/canvas_renderer.d.ts.map +1 -0
- package/{dist/types → build}/video/renderer.d.ts +36 -29
- package/build/video/renderer.d.ts.map +1 -0
- package/{dist/types → build}/video/rendertarget/canvasrendertarget.d.ts +8 -26
- package/build/video/rendertarget/canvasrendertarget.d.ts.map +1 -0
- package/{dist/types → build}/video/texture/atlas.d.ts +8 -8
- package/build/video/texture/atlas.d.ts.map +1 -0
- package/{dist/types → build}/video/texture/cache.d.ts +4 -3
- package/build/video/texture/cache.d.ts.map +1 -0
- package/{dist/types → build}/video/texture/parser/aseprite.d.ts +1 -0
- package/build/video/texture/parser/aseprite.d.ts.map +1 -0
- package/{dist/types → build}/video/texture/parser/spritesheet.d.ts +1 -0
- package/build/video/texture/parser/spritesheet.d.ts.map +1 -0
- package/{dist/types → build}/video/texture/parser/texturepacker.d.ts +1 -0
- package/build/video/texture/parser/texturepacker.d.ts.map +1 -0
- package/build/video/utils/autodetect.d.ts +8 -0
- package/build/video/utils/autodetect.d.ts.map +1 -0
- package/{dist/types → build}/video/video.d.ts +4 -3
- package/build/video/video.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/buffer/vertex.d.ts +5 -6
- package/build/video/webgl/buffer/vertex.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/compositors/compositor.d.ts +4 -4
- package/build/video/webgl/compositors/compositor.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/compositors/primitive_compositor.d.ts +4 -5
- package/build/video/webgl/compositors/primitive_compositor.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/compositors/quad_compositor.d.ts +4 -5
- package/build/video/webgl/compositors/quad_compositor.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/glshader.d.ts +2 -2
- package/build/video/webgl/glshader.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/utils/attributes.d.ts +1 -0
- package/build/video/webgl/utils/attributes.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/utils/precision.d.ts +1 -0
- package/build/video/webgl/utils/precision.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/utils/program.d.ts +1 -0
- package/build/video/webgl/utils/program.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/utils/string.d.ts +1 -0
- package/build/video/webgl/utils/string.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/utils/uniforms.d.ts +1 -0
- package/build/video/webgl/utils/uniforms.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/webgl_renderer.d.ts +37 -29
- package/build/video/webgl/webgl_renderer.d.ts.map +1 -0
- package/package.json +83 -104
- package/LICENSE.md +0 -21
- package/README.md +0 -223
- package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +0 -14
- package/dist/melonjs.mjs/_virtual/earcut.js +0 -10
- package/dist/melonjs.mjs/_virtual/howler.js +0 -10
- package/dist/melonjs.mjs/_virtual/index.js +0 -10
- package/dist/melonjs.mjs/_virtual/re.js +0 -10
- package/dist/melonjs.mjs/application/application.js +0 -443
- package/dist/melonjs.mjs/application/header.js +0 -40
- package/dist/melonjs.mjs/application/resize.js +0 -128
- package/dist/melonjs.mjs/application/settings.js +0 -70
- package/dist/melonjs.mjs/audio/audio.js +0 -623
- package/dist/melonjs.mjs/camera/camera2d.js +0 -737
- package/dist/melonjs.mjs/const.js +0 -32
- package/dist/melonjs.mjs/geometries/ellipse.js +0 -253
- package/dist/melonjs.mjs/geometries/line.js +0 -113
- package/dist/melonjs.mjs/geometries/path2d.js +0 -479
- package/dist/melonjs.mjs/geometries/point.js +0 -85
- package/dist/melonjs.mjs/geometries/poly.js +0 -441
- package/dist/melonjs.mjs/geometries/rectangle.js +0 -335
- package/dist/melonjs.mjs/geometries/roundrect.js +0 -165
- package/dist/melonjs.mjs/geometries/toarccanvas.js +0 -103
- package/dist/melonjs.mjs/index.js +0 -239
- package/dist/melonjs.mjs/input/gamepad.js +0 -495
- package/dist/melonjs.mjs/input/input.js +0 -26
- package/dist/melonjs.mjs/input/keyboard.js +0 -470
- package/dist/melonjs.mjs/input/pointer.js +0 -393
- package/dist/melonjs.mjs/input/pointerevent.js +0 -807
- package/dist/melonjs.mjs/lang/console.js +0 -44
- package/dist/melonjs.mjs/lang/deprecated.js +0 -200
- package/dist/melonjs.mjs/level/level.js +0 -298
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +0 -120
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +0 -432
- package/dist/melonjs.mjs/level/tiled/TMXObject.js +0 -295
- package/dist/melonjs.mjs/level/tiled/TMXTile.js +0 -177
- package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +0 -574
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +0 -292
- package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +0 -74
- package/dist/melonjs.mjs/level/tiled/TMXUtils.js +0 -417
- package/dist/melonjs.mjs/level/tiled/constants.js +0 -17
- package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +0 -503
- package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +0 -215
- package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +0 -155
- package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +0 -113
- package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +0 -107
- package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +0 -38
- package/dist/melonjs.mjs/loader/cache.js +0 -30
- package/dist/melonjs.mjs/loader/loader.js +0 -729
- package/dist/melonjs.mjs/loader/loadingscreen.js +0 -118
- package/dist/melonjs.mjs/loader/melonjs_logo.png.js +0 -10
- package/dist/melonjs.mjs/loader/parsers/binary.js +0 -42
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/compressed_image.js +0 -58
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/parseDDS.js +0 -13
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/parseKTX.js +0 -13
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/parseKTX2.js +0 -13
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/parsePKM.js +0 -13
- package/dist/melonjs.mjs/loader/parsers/compressed_textures/parsePVR.js +0 -136
- package/dist/melonjs.mjs/loader/parsers/fetchdata.js +0 -62
- package/dist/melonjs.mjs/loader/parsers/fontface.js +0 -62
- package/dist/melonjs.mjs/loader/parsers/image.js +0 -129
- package/dist/melonjs.mjs/loader/parsers/json.js +0 -43
- package/dist/melonjs.mjs/loader/parsers/script.js +0 -46
- package/dist/melonjs.mjs/loader/parsers/tmx.js +0 -103
- package/dist/melonjs.mjs/loader/parsers/video.js +0 -99
- package/dist/melonjs.mjs/math/color.js +0 -635
- package/dist/melonjs.mjs/math/math.js +0 -221
- package/dist/melonjs.mjs/math/matrix2.js +0 -495
- package/dist/melonjs.mjs/math/matrix3.js +0 -628
- package/dist/melonjs.mjs/math/observable_vector2.js +0 -468
- package/dist/melonjs.mjs/math/observable_vector3.js +0 -564
- package/dist/melonjs.mjs/math/vector2.js +0 -431
- package/dist/melonjs.mjs/math/vector3.js +0 -473
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +0 -45
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +0 -130
- package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +0 -694
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +0 -352
- package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +0 -12
- package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +0 -3246
- package/dist/melonjs.mjs/node_modules/semver/classes/comparator.js +0 -165
- package/dist/melonjs.mjs/node_modules/semver/classes/range.js +0 -565
- package/dist/melonjs.mjs/node_modules/semver/classes/semver.js +0 -317
- package/dist/melonjs.mjs/node_modules/semver/functions/clean.js +0 -17
- package/dist/melonjs.mjs/node_modules/semver/functions/cmp.js +0 -68
- package/dist/melonjs.mjs/node_modules/semver/functions/coerce.js +0 -73
- package/dist/melonjs.mjs/node_modules/semver/functions/compare-build.js +0 -18
- package/dist/melonjs.mjs/node_modules/semver/functions/compare-loose.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/compare.js +0 -16
- package/dist/melonjs.mjs/node_modules/semver/functions/diff.js +0 -76
- package/dist/melonjs.mjs/node_modules/semver/functions/eq.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/gt.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/gte.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/inc.js +0 -30
- package/dist/melonjs.mjs/node_modules/semver/functions/lt.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/lte.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/major.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/minor.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/neq.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/parse.js +0 -27
- package/dist/melonjs.mjs/node_modules/semver/functions/patch.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/prerelease.js +0 -17
- package/dist/melonjs.mjs/node_modules/semver/functions/rcompare.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/rsort.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/satisfies.js +0 -21
- package/dist/melonjs.mjs/node_modules/semver/functions/sort.js +0 -14
- package/dist/melonjs.mjs/node_modules/semver/functions/valid.js +0 -17
- package/dist/melonjs.mjs/node_modules/semver/index.js +0 -140
- package/dist/melonjs.mjs/node_modules/semver/internal/constants.js +0 -44
- package/dist/melonjs.mjs/node_modules/semver/internal/debug.js +0 -18
- package/dist/melonjs.mjs/node_modules/semver/internal/identifiers.js +0 -32
- package/dist/melonjs.mjs/node_modules/semver/internal/lrucache.js +0 -49
- package/dist/melonjs.mjs/node_modules/semver/internal/parse-options.js +0 -24
- package/dist/melonjs.mjs/node_modules/semver/internal/re.js +0 -234
- package/dist/melonjs.mjs/node_modules/semver/ranges/gtr.js +0 -15
- package/dist/melonjs.mjs/node_modules/semver/ranges/intersects.js +0 -18
- package/dist/melonjs.mjs/node_modules/semver/ranges/ltr.js +0 -15
- package/dist/melonjs.mjs/node_modules/semver/ranges/max-satisfying.js +0 -37
- package/dist/melonjs.mjs/node_modules/semver/ranges/min-satisfying.js +0 -36
- package/dist/melonjs.mjs/node_modules/semver/ranges/min-version.js +0 -74
- package/dist/melonjs.mjs/node_modules/semver/ranges/outside.js +0 -98
- package/dist/melonjs.mjs/node_modules/semver/ranges/simplify.js +0 -59
- package/dist/melonjs.mjs/node_modules/semver/ranges/subset.js +0 -261
- package/dist/melonjs.mjs/node_modules/semver/ranges/to-comparators.js +0 -19
- package/dist/melonjs.mjs/node_modules/semver/ranges/valid.js +0 -22
- package/dist/melonjs.mjs/particles/emitter.js +0 -265
- package/dist/melonjs.mjs/particles/particle.js +0 -190
- package/dist/melonjs.mjs/particles/settings.js +0 -317
- package/dist/melonjs.mjs/physics/body.js +0 -717
- package/dist/melonjs.mjs/physics/bounds.js +0 -415
- package/dist/melonjs.mjs/physics/collision.js +0 -135
- package/dist/melonjs.mjs/physics/detector.js +0 -227
- package/dist/melonjs.mjs/physics/quadtree.js +0 -402
- package/dist/melonjs.mjs/physics/response.js +0 -57
- package/dist/melonjs.mjs/physics/sat.js +0 -492
- package/dist/melonjs.mjs/physics/world.js +0 -228
- package/dist/melonjs.mjs/plugin/plugin.js +0 -172
- package/dist/melonjs.mjs/renderable/collectable.js +0 -60
- package/dist/melonjs.mjs/renderable/colorlayer.js +0 -83
- package/dist/melonjs.mjs/renderable/container.js +0 -1016
- package/dist/melonjs.mjs/renderable/draggable.js +0 -121
- package/dist/melonjs.mjs/renderable/dragndrop.js +0 -119
- package/dist/melonjs.mjs/renderable/entity/entity.js +0 -263
- package/dist/melonjs.mjs/renderable/imagelayer.js +0 -293
- package/dist/melonjs.mjs/renderable/light2d.js +0 -172
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +0 -248
- package/dist/melonjs.mjs/renderable/renderable.js +0 -878
- package/dist/melonjs.mjs/renderable/sprite.js +0 -700
- package/dist/melonjs.mjs/renderable/text/bitmaptext.js +0 -421
- package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +0 -195
- package/dist/melonjs.mjs/renderable/text/glyph.js +0 -65
- package/dist/melonjs.mjs/renderable/text/text.js +0 -424
- package/dist/melonjs.mjs/renderable/text/textmetrics.js +0 -176
- package/dist/melonjs.mjs/renderable/text/textstyle.js +0 -21
- package/dist/melonjs.mjs/renderable/trigger.js +0 -163
- package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +0 -285
- package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +0 -231
- package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +0 -146
- package/dist/melonjs.mjs/state/stage.js +0 -235
- package/dist/melonjs.mjs/state/state.js +0 -548
- package/dist/melonjs.mjs/system/device.js +0 -872
- package/dist/melonjs.mjs/system/dom.js +0 -79
- package/dist/melonjs.mjs/system/event.js +0 -606
- package/dist/melonjs.mjs/system/platform.js +0 -43
- package/dist/melonjs.mjs/system/pooling.js +0 -182
- package/dist/melonjs.mjs/system/save.js +0 -157
- package/dist/melonjs.mjs/system/timer.js +0 -274
- package/dist/melonjs.mjs/tweens/easing.js +0 -334
- package/dist/melonjs.mjs/tweens/interpolation.js +0 -112
- package/dist/melonjs.mjs/tweens/tween.js +0 -479
- package/dist/melonjs.mjs/utils/agent.js +0 -77
- package/dist/melonjs.mjs/utils/array.js +0 -63
- package/dist/melonjs.mjs/utils/file.js +0 -54
- package/dist/melonjs.mjs/utils/function.js +0 -69
- package/dist/melonjs.mjs/utils/string.js +0 -82
- package/dist/melonjs.mjs/utils/utils.js +0 -139
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +0 -914
- package/dist/melonjs.mjs/video/renderer.js +0 -402
- package/dist/melonjs.mjs/video/rendertarget/canvasrendertarget.js +0 -316
- package/dist/melonjs.mjs/video/texture/atlas.js +0 -465
- package/dist/melonjs.mjs/video/texture/cache.js +0 -186
- package/dist/melonjs.mjs/video/texture/parser/aseprite.js +0 -78
- package/dist/melonjs.mjs/video/texture/parser/spritesheet.js +0 -77
- package/dist/melonjs.mjs/video/texture/parser/texturepacker.js +0 -64
- package/dist/melonjs.mjs/video/utils/autodetect.js +0 -27
- package/dist/melonjs.mjs/video/video.js +0 -142
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +0 -146
- package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +0 -240
- package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +0 -82
- package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +0 -259
- package/dist/melonjs.mjs/video/webgl/glshader.js +0 -166
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +0 -10
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +0 -10
- package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +0 -10
- package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +0 -10
- package/dist/melonjs.mjs/video/webgl/utils/attributes.js +0 -25
- package/dist/melonjs.mjs/video/webgl/utils/precision.js +0 -38
- package/dist/melonjs.mjs/video/webgl/utils/program.js +0 -67
- package/dist/melonjs.mjs/video/webgl/utils/string.js +0 -25
- package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +0 -92
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +0 -1246
- package/dist/melonjs.module.js +0 -43200
- package/dist/types/application/settings.d.ts +0 -106
- package/dist/types/const.d.ts +0 -21
- package/dist/types/geometries/ellipse.d.ts +0 -138
- package/dist/types/geometries/line.d.ts +0 -15
- package/dist/types/geometries/point.d.ts +0 -50
- package/dist/types/geometries/poly.d.ts +0 -186
- package/dist/types/geometries/rectangle.d.ts +0 -135
- package/dist/types/geometries/roundrect.d.ts +0 -43
- package/dist/types/geometries/toarccanvas.d.ts +0 -10
- package/dist/types/input/keyboard.d.ts +0 -205
- package/dist/types/input/pointer.d.ts +0 -261
- package/dist/types/lang/deprecated.d.ts +0 -68
- package/dist/types/loader/cache.d.ts +0 -9
- package/dist/types/loader/parsers/compressed_textures/parseDDS.d.ts +0 -1
- package/dist/types/loader/parsers/compressed_textures/parseKTX.d.ts +0 -1
- package/dist/types/loader/parsers/compressed_textures/parseKTX2.d.ts +0 -1
- package/dist/types/loader/parsers/compressed_textures/parsePKM.d.ts +0 -1
- package/dist/types/loader/parsers/compressed_textures/parsePVR.d.ts +0 -1
- package/dist/types/math/color.d.ts +0 -179
- package/dist/types/math/math.d.ts +0 -149
- package/dist/types/math/matrix2.d.ts +0 -174
- package/dist/types/math/matrix3.d.ts +0 -186
- package/dist/types/math/observable_vector2.d.ts +0 -278
- package/dist/types/math/observable_vector3.d.ts +0 -300
- package/dist/types/math/vector2.d.ts +0 -255
- package/dist/types/math/vector3.d.ts +0 -271
- package/dist/types/particles/particle.d.ts +0 -36
- package/dist/types/physics/bounds.d.ts +0 -203
- package/dist/types/polyfill/console.d.ts +0 -1
- package/dist/types/polyfill/index.d.ts +0 -1
- package/dist/types/polyfill/roundrect.d.ts +0 -1
- package/dist/types/renderable/light2d.d.ts +0 -60
- package/dist/types/renderable/text/bitmaptextdata.d.ts +0 -35
- package/dist/types/system/dom.d.ts +0 -1
- package/dist/types/system/platform.d.ts +0 -33
- package/dist/types/system/save.d.ts +0 -25
- package/dist/types/system/timer.d.ts +0 -126
- package/dist/types/tweens/easing.d.ts +0 -46
- package/dist/types/tweens/interpolation.d.ts +0 -18
- package/dist/types/tweens/tween.d.ts +0 -195
- package/dist/types/utils/agent.d.ts +0 -21
- package/dist/types/utils/array.d.ts +0 -39
- package/dist/types/utils/file.d.ts +0 -27
- package/dist/types/utils/function.d.ts +0 -31
- package/dist/types/utils/string.d.ts +0 -50
- package/dist/types/utils/utils.d.ts +0 -54
- package/dist/types/video/utils/autodetect.d.ts +0 -5
- package/src/application/application.js +0 -435
- package/src/application/header.js +0 -31
- package/src/application/resize.js +0 -119
- package/src/application/settings.js +0 -61
- package/src/audio/audio.js +0 -622
- package/src/camera/camera2d.js +0 -731
- package/src/const.js +0 -23
- package/src/geometries/ellipse.js +0 -244
- package/src/geometries/line.js +0 -104
- package/src/geometries/path2d.js +0 -470
- package/src/geometries/point.js +0 -76
- package/src/geometries/poly.js +0 -432
- package/src/geometries/rectangle.js +0 -326
- package/src/geometries/roundrect.js +0 -156
- package/src/geometries/toarccanvas.js +0 -94
- package/src/index.js +0 -315
- package/src/input/gamepad.js +0 -487
- package/src/input/input.js +0 -17
- package/src/input/keyboard.js +0 -461
- package/src/input/pointer.js +0 -386
- package/src/input/pointerevent.js +0 -798
- package/src/lang/console.js +0 -36
- package/src/lang/deprecated.js +0 -192
- package/src/level/level.js +0 -290
- package/src/level/tiled/TMXGroup.js +0 -111
- package/src/level/tiled/TMXLayer.js +0 -424
- package/src/level/tiled/TMXObject.js +0 -286
- package/src/level/tiled/TMXTile.js +0 -168
- package/src/level/tiled/TMXTileMap.js +0 -569
- package/src/level/tiled/TMXTileset.js +0 -284
- package/src/level/tiled/TMXTilesetGroup.js +0 -66
- package/src/level/tiled/TMXUtils.js +0 -408
- package/src/level/tiled/constants.js +0 -8
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +0 -497
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +0 -208
- package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +0 -149
- package/src/level/tiled/renderer/TMXRenderer.js +0 -103
- package/src/level/tiled/renderer/TMXStaggeredRenderer.js +0 -100
- package/src/level/tiled/renderer/autodetect.js +0 -29
- package/src/loader/cache.js +0 -22
- package/src/loader/loader.js +0 -728
- package/src/loader/loadingscreen.js +0 -112
- package/src/loader/melonjs_logo.png +0 -0
- package/src/loader/parsers/binary.js +0 -33
- package/src/loader/parsers/compressed_textures/compressed_image.js +0 -49
- package/src/loader/parsers/compressed_textures/parseDDS.js +0 -5
- package/src/loader/parsers/compressed_textures/parseKTX.js +0 -5
- package/src/loader/parsers/compressed_textures/parseKTX2.js +0 -5
- package/src/loader/parsers/compressed_textures/parsePKM.js +0 -5
- package/src/loader/parsers/compressed_textures/parsePVR.js +0 -127
- package/src/loader/parsers/fetchdata.js +0 -53
- package/src/loader/parsers/fontface.js +0 -54
- package/src/loader/parsers/image.js +0 -120
- package/src/loader/parsers/json.js +0 -35
- package/src/loader/parsers/script.js +0 -37
- package/src/loader/parsers/tmx.js +0 -95
- package/src/loader/parsers/video.js +0 -90
- package/src/math/color.js +0 -627
- package/src/math/math.js +0 -212
- package/src/math/matrix2.js +0 -487
- package/src/math/matrix3.js +0 -620
- package/src/math/observable_vector2.js +0 -460
- package/src/math/observable_vector3.js +0 -556
- package/src/math/vector2.js +0 -423
- package/src/math/vector3.js +0 -465
- package/src/particles/emitter.js +0 -258
- package/src/particles/particle.js +0 -182
- package/src/particles/settings.js +0 -310
- package/src/physics/body.js +0 -709
- package/src/physics/bounds.js +0 -407
- package/src/physics/collision.js +0 -128
- package/src/physics/detector.js +0 -218
- package/src/physics/quadtree.js +0 -393
- package/src/physics/response.js +0 -48
- package/src/physics/sat.js +0 -483
- package/src/physics/world.js +0 -220
- package/src/plugin/plugin.js +0 -163
- package/src/polyfill/console.js +0 -11
- package/src/polyfill/index.js +0 -13
- package/src/polyfill/roundrect.js +0 -237
- package/src/renderable/collectable.js +0 -51
- package/src/renderable/colorlayer.js +0 -74
- package/src/renderable/container.js +0 -1008
- package/src/renderable/draggable.js +0 -114
- package/src/renderable/dragndrop.js +0 -110
- package/src/renderable/entity/entity.js +0 -254
- package/src/renderable/imagelayer.js +0 -284
- package/src/renderable/light2d.js +0 -163
- package/src/renderable/nineslicesprite.js +0 -239
- package/src/renderable/renderable.js +0 -869
- package/src/renderable/sprite.js +0 -691
- package/src/renderable/text/bitmaptext.js +0 -418
- package/src/renderable/text/bitmaptextdata.js +0 -186
- package/src/renderable/text/glyph.js +0 -57
- package/src/renderable/text/text.js +0 -415
- package/src/renderable/text/textmetrics.js +0 -167
- package/src/renderable/text/textstyle.js +0 -12
- package/src/renderable/trigger.js +0 -154
- package/src/renderable/ui/uibaseelement.js +0 -276
- package/src/renderable/ui/uispriteelement.js +0 -223
- package/src/renderable/ui/uitextbutton.js +0 -140
- package/src/state/stage.js +0 -226
- package/src/state/state.js +0 -541
- package/src/system/device.js +0 -863
- package/src/system/dom.js +0 -70
- package/src/system/event.js +0 -597
- package/src/system/platform.js +0 -34
- package/src/system/pooling.js +0 -190
- package/src/system/save.js +0 -148
- package/src/system/timer.js +0 -281
- package/src/tweens/easing.js +0 -325
- package/src/tweens/interpolation.js +0 -103
- package/src/tweens/tween.js +0 -470
- package/src/utils/agent.js +0 -68
- package/src/utils/array.js +0 -54
- package/src/utils/file.js +0 -46
- package/src/utils/function.js +0 -60
- package/src/utils/string.js +0 -73
- package/src/utils/utils.js +0 -127
- package/src/video/canvas/canvas_renderer.js +0 -905
- package/src/video/renderer.js +0 -393
- package/src/video/rendertarget/canvasrendertarget.js +0 -309
- package/src/video/texture/atlas.js +0 -456
- package/src/video/texture/cache.js +0 -178
- package/src/video/texture/parser/aseprite.js +0 -69
- package/src/video/texture/parser/spritesheet.js +0 -68
- package/src/video/texture/parser/texturepacker.js +0 -55
- package/src/video/utils/autodetect.js +0 -18
- package/src/video/video.js +0 -160
- package/src/video/webgl/buffer/vertex.js +0 -137
- package/src/video/webgl/compositors/compositor.js +0 -231
- package/src/video/webgl/compositors/primitive_compositor.js +0 -73
- package/src/video/webgl/compositors/quad_compositor.js +0 -250
- package/src/video/webgl/glshader.js +0 -158
- package/src/video/webgl/shaders/primitive.frag +0 -5
- package/src/video/webgl/shaders/primitive.vert +0 -15
- package/src/video/webgl/shaders/quad.frag +0 -7
- package/src/video/webgl/shaders/quad.vert +0 -18
- package/src/video/webgl/utils/attributes.js +0 -16
- package/src/video/webgl/utils/precision.js +0 -29
- package/src/video/webgl/utils/program.js +0 -58
- package/src/video/webgl/utils/string.js +0 -16
- package/src/video/webgl/utils/uniforms.js +0 -84
- package/src/video/webgl/webgl_renderer.js +0 -1237
|
@@ -1,717 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* melonJS Game Engine - v17.4.0
|
|
3
|
-
* http://www.melonjs.org
|
|
4
|
-
* melonjs is licensed under the MIT License.
|
|
5
|
-
* http://www.opensource.org/licenses/mit-license
|
|
6
|
-
* @copyright (C) 2011 - 2024 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
-
*/
|
|
8
|
-
import Rect from '../geometries/rectangle.js';
|
|
9
|
-
import Ellipse from '../geometries/ellipse.js';
|
|
10
|
-
import Polygon from '../geometries/poly.js';
|
|
11
|
-
import Bounds from './bounds.js';
|
|
12
|
-
import pool from '../system/pooling.js';
|
|
13
|
-
import collision from './collision.js';
|
|
14
|
-
import { remove } from '../utils/array.js';
|
|
15
|
-
import timer from '../system/timer.js';
|
|
16
|
-
import { clamp } from '../math/math.js';
|
|
17
|
-
import Point from '../geometries/point.js';
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @import Entity from "./../renderable/entity/entity.js";
|
|
21
|
-
* @import Container from "./../renderable/container.js";
|
|
22
|
-
* @import Renderable from "./../renderable/renderable.js";
|
|
23
|
-
* @import Sprite from "./../renderable/sprite.js";
|
|
24
|
-
* @import NineSliceSprite from "./../renderable/nineslicesprite.js";
|
|
25
|
-
* @import Line from "./../geometries/line.js";
|
|
26
|
-
* @import Vector2d from "./../math/vector2.js";
|
|
27
|
-
* @import ObservableVector2d from "./../math/observable_vector2.js";
|
|
28
|
-
**/
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* @classdesc
|
|
32
|
-
* a Generic Physic Body Object with some physic properties and behavior functionality, to add as a member of a Renderable.
|
|
33
|
-
* @see Renderable.body
|
|
34
|
-
*/
|
|
35
|
-
class Body {
|
|
36
|
-
/**
|
|
37
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} ancestor - the parent object this body is attached to
|
|
38
|
-
* @param {Rect|Rect[]|Polygon|Polygon[]|Line|Line[]|Ellipse|Ellipse[]|Point|Point[]|Bounds|Bounds[]|object} [shapes] - a initial shape, list of shapes, or JSON object defining the body
|
|
39
|
-
* @param {Function} [onBodyUpdate] - callback for when the body is updated (e.g. add/remove shapes)
|
|
40
|
-
*/
|
|
41
|
-
constructor(ancestor, shapes, onBodyUpdate) {
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* a reference to the parent object that contains this body,
|
|
45
|
-
* or undefined if it has not been added to one.
|
|
46
|
-
* @public
|
|
47
|
-
* @type {Renderable|Container|Entity|Sprite|NineSliceSprite}
|
|
48
|
-
* @default undefined
|
|
49
|
-
*/
|
|
50
|
-
this.ancestor = ancestor;
|
|
51
|
-
|
|
52
|
-
if (typeof this.bounds === "undefined") {
|
|
53
|
-
/**
|
|
54
|
-
* The AABB bounds box reprensenting this body
|
|
55
|
-
* @public
|
|
56
|
-
* @type {Bounds}
|
|
57
|
-
*/
|
|
58
|
-
this.bounds = pool.pull("Bounds");
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (typeof this.shapes === "undefined") {
|
|
62
|
-
/**
|
|
63
|
-
* The collision shapes of the body
|
|
64
|
-
* @ignore
|
|
65
|
-
* @type {Polygon[]|Line[]|Ellipse[]|Point|Point[]}
|
|
66
|
-
*/
|
|
67
|
-
this.shapes = [];
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* The body collision mask, that defines what should collide with what.<br>
|
|
72
|
-
* (by default will collide with all entities)
|
|
73
|
-
* @ignore
|
|
74
|
-
* @type {number}
|
|
75
|
-
* @default collision.types.ALL_OBJECT
|
|
76
|
-
* @see collision.types
|
|
77
|
-
*/
|
|
78
|
-
this.collisionMask = collision.types.ALL_OBJECT;
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* define the collision type of the body for collision filtering
|
|
82
|
-
* @public
|
|
83
|
-
* @type {number}
|
|
84
|
-
* @default collision.types.ENEMY_OBJECT
|
|
85
|
-
* @see collision.types
|
|
86
|
-
* @example
|
|
87
|
-
* // set the body collision type
|
|
88
|
-
* body.collisionType = me.collision.types.PLAYER_OBJECT;
|
|
89
|
-
*/
|
|
90
|
-
this.collisionType = collision.types.ENEMY_OBJECT;
|
|
91
|
-
|
|
92
|
-
if (typeof this.vel === "undefined") {
|
|
93
|
-
/**
|
|
94
|
-
* The current velocity of the body.
|
|
95
|
-
* See to apply a force if you need to modify a body velocity
|
|
96
|
-
* @see Body.force
|
|
97
|
-
* @public
|
|
98
|
-
* @type {Vector2d}
|
|
99
|
-
* @default <0,0>
|
|
100
|
-
*/
|
|
101
|
-
this.vel = pool.pull("Vector2d");
|
|
102
|
-
}
|
|
103
|
-
this.vel.set(0, 0);
|
|
104
|
-
|
|
105
|
-
if (typeof this.force === "undefined") {
|
|
106
|
-
/**
|
|
107
|
-
* body force to apply to this the body in the current step.
|
|
108
|
-
* (any positive or negative force will be cancelled after every world/body update cycle)
|
|
109
|
-
* @public
|
|
110
|
-
* @type {Vector2d}
|
|
111
|
-
* @default <0,0>
|
|
112
|
-
* @see Body.setMaxVelocity
|
|
113
|
-
* @example
|
|
114
|
-
* // define a default maximum acceleration, initial force and friction
|
|
115
|
-
* this.body.force.set(1, 0);
|
|
116
|
-
* this.body.friction.set(0.4, 0);
|
|
117
|
-
* this.body.setMaxVelocity(3, 15);
|
|
118
|
-
*
|
|
119
|
-
* // apply a postive or negative force when pressing left of right key
|
|
120
|
-
* update(dt) {
|
|
121
|
-
* if (me.input.isKeyPressed("left")) {
|
|
122
|
-
* this.body.force.x = -this.body.maxVel.x;
|
|
123
|
-
* } else if (me.input.isKeyPressed("right")) {
|
|
124
|
-
* this.body.force.x = this.body.maxVel.x;
|
|
125
|
-
* }
|
|
126
|
-
* }
|
|
127
|
-
*/
|
|
128
|
-
this.force = pool.pull("Vector2d");
|
|
129
|
-
}
|
|
130
|
-
this.force.set(0, 0);
|
|
131
|
-
|
|
132
|
-
if (typeof this.friction === "undefined") {
|
|
133
|
-
/**
|
|
134
|
-
* body friction
|
|
135
|
-
* @public
|
|
136
|
-
* @type {Vector2d}
|
|
137
|
-
* @default <0,0>
|
|
138
|
-
*/
|
|
139
|
-
this.friction = pool.pull("Vector2d");
|
|
140
|
-
}
|
|
141
|
-
this.friction.set(0, 0);
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* the body bouciness level when colliding with other solid bodies :
|
|
145
|
-
* a value of 0 will not bounce, a value of 1 will fully rebound.
|
|
146
|
-
* @public
|
|
147
|
-
* @type {number}
|
|
148
|
-
* @default 0
|
|
149
|
-
*/
|
|
150
|
-
this.bounce = 0;
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* the body mass
|
|
154
|
-
* @public
|
|
155
|
-
* @type {number}
|
|
156
|
-
* @default 1
|
|
157
|
-
*/
|
|
158
|
-
this.mass = 1;
|
|
159
|
-
|
|
160
|
-
if (typeof this.maxVel === "undefined") {
|
|
161
|
-
/**
|
|
162
|
-
* max velocity (to limit body velocity)
|
|
163
|
-
* @public
|
|
164
|
-
* @type {Vector2d}
|
|
165
|
-
* @default <490,490>
|
|
166
|
-
*/
|
|
167
|
-
this.maxVel = pool.pull("Vector2d");
|
|
168
|
-
}
|
|
169
|
-
// cap by default to half the default gravity force
|
|
170
|
-
this.maxVel.set(490, 490);
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Either this body is a static body or not.
|
|
175
|
-
* A static body is completely fixed and can never change position or angle.
|
|
176
|
-
* @readonly
|
|
177
|
-
* @public
|
|
178
|
-
* @type {boolean}
|
|
179
|
-
* @default false
|
|
180
|
-
*/
|
|
181
|
-
this.isStatic = false;
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* The degree to which this body is affected by the world gravity
|
|
186
|
-
* @public
|
|
187
|
-
* @see World.gravity
|
|
188
|
-
* @type {number}
|
|
189
|
-
* @default 1.0
|
|
190
|
-
*/
|
|
191
|
-
this.gravityScale = 1.0;
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* If true this body won't be affected by the world gravity
|
|
195
|
-
* @public
|
|
196
|
-
* @see World.gravity
|
|
197
|
-
* @type {boolean}
|
|
198
|
-
* @default false
|
|
199
|
-
*/
|
|
200
|
-
this.ignoreGravity = false;
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* falling state of the body<br>
|
|
204
|
-
* true if the object is falling<br>
|
|
205
|
-
* false if the object is standing on something<br>
|
|
206
|
-
* @readonly
|
|
207
|
-
* @public
|
|
208
|
-
* @type {boolean}
|
|
209
|
-
* @default false
|
|
210
|
-
*/
|
|
211
|
-
this.falling = false;
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* jumping state of the body<br>
|
|
215
|
-
* equal true if the body is jumping<br>
|
|
216
|
-
* @readonly
|
|
217
|
-
* @public
|
|
218
|
-
* @type {boolean}
|
|
219
|
-
* @default false
|
|
220
|
-
*/
|
|
221
|
-
this.jumping = false;
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
if (typeof onBodyUpdate === "function") {
|
|
225
|
-
this.onBodyUpdate = onBodyUpdate;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
this.bounds.clear();
|
|
229
|
-
|
|
230
|
-
// parses the given shapes array and add them
|
|
231
|
-
if (typeof shapes !== "undefined") {
|
|
232
|
-
if (Array.isArray(shapes)) {
|
|
233
|
-
for (let s = 0; s < shapes.length; s++) {
|
|
234
|
-
this.addShape(shapes[s]);
|
|
235
|
-
}
|
|
236
|
-
} else {
|
|
237
|
-
this.addShape(shapes);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
// automatically enable physic when a body is added to a renderable
|
|
242
|
-
this.ancestor.isKinematic = false;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* set the body as a static body
|
|
247
|
-
* static body do not move automatically and do not check againt collision with others
|
|
248
|
-
* @param {boolean} [isStatic=true]
|
|
249
|
-
*/
|
|
250
|
-
setStatic(isStatic = true) {
|
|
251
|
-
this.isStatic = isStatic === true;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* add a collision shape to this body <br>
|
|
256
|
-
* (note: me.Rect objects will be converted to me.Polygon before being added)
|
|
257
|
-
* @param {Rect|Polygon|Line|Ellipse|Point|Point[]|Bounds|object} shape - a shape or JSON object
|
|
258
|
-
* @returns {number} the shape array length
|
|
259
|
-
* @example
|
|
260
|
-
* // add a rectangle shape
|
|
261
|
-
* this.body.addShape(new me.Rect(0, 0, image.width, image.height));
|
|
262
|
-
* // add a shape from a JSON object
|
|
263
|
-
* this.body.addShape(me.loader.getJSON("shapesdef").banana);
|
|
264
|
-
*/
|
|
265
|
-
addShape(shape) {
|
|
266
|
-
if (shape instanceof Rect || shape instanceof Bounds) {
|
|
267
|
-
let poly = shape.toPolygon();
|
|
268
|
-
this.shapes.push(poly);
|
|
269
|
-
// update the body bounds
|
|
270
|
-
this.bounds.add(poly.points);
|
|
271
|
-
this.bounds.translate(poly.pos);
|
|
272
|
-
} else if (shape instanceof Ellipse) {
|
|
273
|
-
if (!this.shapes.includes(shape)) {
|
|
274
|
-
// see removeShape
|
|
275
|
-
this.shapes.push(shape);
|
|
276
|
-
}
|
|
277
|
-
// update the body bounds
|
|
278
|
-
this.bounds.addBounds(shape.getBounds());
|
|
279
|
-
// use bounds position as ellipse position is center
|
|
280
|
-
this.bounds.translate(
|
|
281
|
-
shape.getBounds().x,
|
|
282
|
-
shape.getBounds().y
|
|
283
|
-
);
|
|
284
|
-
} else if (shape instanceof Polygon) {
|
|
285
|
-
if (!this.shapes.includes(shape)) {
|
|
286
|
-
// see removeShape
|
|
287
|
-
this.shapes.push(shape);
|
|
288
|
-
}
|
|
289
|
-
// update the body bounds
|
|
290
|
-
this.bounds.add(shape.points);
|
|
291
|
-
this.bounds.translate(shape.pos);
|
|
292
|
-
} else if (shape instanceof Point) {
|
|
293
|
-
if (!this.shapes.includes(shape)) {
|
|
294
|
-
// see removeShape
|
|
295
|
-
this.shapes.push(shape);
|
|
296
|
-
}
|
|
297
|
-
this.bounds.addPoint(shape);
|
|
298
|
-
} else {
|
|
299
|
-
// JSON object
|
|
300
|
-
this.fromJSON(shape);
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
if (typeof this.onBodyUpdate === "function") {
|
|
304
|
-
this.onBodyUpdate(this);
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
// return the length of the shape list
|
|
308
|
-
return this.shapes.length;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* set the body vertices to the given one
|
|
313
|
-
* @param {Vector2d[]} vertices - an array of me.Vector2d points defining a convex hull
|
|
314
|
-
* @param {number} [index=0] - the shape object for which to set the vertices
|
|
315
|
-
* @param {boolean} [clear=true] - either to reset the body definition before adding the new vertices
|
|
316
|
-
*/
|
|
317
|
-
setVertices(vertices, index = 0, clear = true) {
|
|
318
|
-
let polygon = this.getShape(index);
|
|
319
|
-
if (polygon instanceof Polygon) {
|
|
320
|
-
polygon.setShape(0, 0, vertices);
|
|
321
|
-
} else {
|
|
322
|
-
// this will replace any other non polygon shape type if defined
|
|
323
|
-
this.shapes[index] = pool.pull("Polygon", 0, 0, vertices);
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
// update the body bounds to take in account the new vertices
|
|
327
|
-
this.bounds.add(this.shapes[index].points, clear);
|
|
328
|
-
|
|
329
|
-
if (typeof this.onBodyUpdate === "function") {
|
|
330
|
-
this.onBodyUpdate(this);
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* add the given vertices to the body shape
|
|
336
|
-
* @param {Vector2d[]} vertices - an array of me.Vector2d points defining a convex hull
|
|
337
|
-
* @param {number} [index=0] - the shape object for which to set the vertices
|
|
338
|
-
*/
|
|
339
|
-
addVertices(vertices, index = 0) {
|
|
340
|
-
this.setVertices(vertices, index, false);
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
/**
|
|
344
|
-
* add collision mesh based on a JSON object
|
|
345
|
-
* (this will also apply any physic properties defined in the given JSON file)
|
|
346
|
-
* @param {object} json - a JSON object as exported from a Physics Editor tool
|
|
347
|
-
* @param {string} [id] - an optional shape identifier within the given the json object
|
|
348
|
-
* @see https://www.codeandweb.com/physicseditor
|
|
349
|
-
* @returns {number} how many shapes were added to the body
|
|
350
|
-
* @example
|
|
351
|
-
* // define the body based on the banana shape
|
|
352
|
-
* this.body.fromJSON(me.loader.getJSON("shapesdef").banana);
|
|
353
|
-
* // or ...
|
|
354
|
-
* this.body.fromJSON(me.loader.getJSON("shapesdef"), "banana");
|
|
355
|
-
*/
|
|
356
|
-
fromJSON(json, id) {
|
|
357
|
-
let data = json;
|
|
358
|
-
|
|
359
|
-
if (typeof id !== "undefined") {
|
|
360
|
-
data = json[id];
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
// Physic Editor Format (https://www.codeandweb.com/physicseditor)
|
|
364
|
-
if (typeof data === "undefined") {
|
|
365
|
-
throw new Error("Identifier (" + id + ") undefined for the given JSON object)");
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
if (data.length) {
|
|
369
|
-
// go through all shapes and add them to the body
|
|
370
|
-
for (let i = 0; i < data.length; i++) {
|
|
371
|
-
this.addVertices(data[i].shape, i);
|
|
372
|
-
}
|
|
373
|
-
// apply density, friction and bounce properties from the first shape
|
|
374
|
-
// Note : how to manage different mass or friction for all different shapes?
|
|
375
|
-
this.mass = data[0].density || 0;
|
|
376
|
-
this.friction.set(data[0].friction || 0, data[0].friction || 0);
|
|
377
|
-
this.bounce = data[0].bounce || 0;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
// return the amount of shapes added to the body
|
|
381
|
-
return data.length;
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
/**
|
|
385
|
-
* return the collision shape at the given index
|
|
386
|
-
* @param {number} [index=0] - the shape object at the specified index
|
|
387
|
-
* @returns {Polygon|Line|Ellipse} shape a shape object if defined
|
|
388
|
-
*/
|
|
389
|
-
getShape(index) {
|
|
390
|
-
return this.shapes[index || 0];
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
/**
|
|
394
|
-
* returns the AABB bounding box for this body
|
|
395
|
-
* @returns {Bounds} bounding box Rectangle object
|
|
396
|
-
*/
|
|
397
|
-
getBounds() {
|
|
398
|
-
return this.bounds;
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
/**
|
|
402
|
-
* remove the specified shape from the body shape list
|
|
403
|
-
* @param {Polygon|Line|Ellipse} shape - a shape object
|
|
404
|
-
* @returns {number} the shape array length
|
|
405
|
-
*/
|
|
406
|
-
removeShape(shape) {
|
|
407
|
-
// clear the current bounds
|
|
408
|
-
this.bounds.clear();
|
|
409
|
-
// remove the shape from shape list
|
|
410
|
-
remove(this.shapes, shape);
|
|
411
|
-
// add everything left back
|
|
412
|
-
for (let s = 0; s < this.shapes.length; s++) {
|
|
413
|
-
this.addShape(this.shapes[s]);
|
|
414
|
-
}
|
|
415
|
-
// return the length of the shape list
|
|
416
|
-
return this.shapes.length;
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
/**
|
|
420
|
-
* remove the shape at the given index from the body shape list
|
|
421
|
-
* @param {number} index - the shape object at the specified index
|
|
422
|
-
* @returns {number} the shape array length
|
|
423
|
-
*/
|
|
424
|
-
removeShapeAt(index) {
|
|
425
|
-
return this.removeShape(this.getShape(index));
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
/**
|
|
429
|
-
* By default all physic bodies are able to collide with all other bodies, <br>
|
|
430
|
-
* but it's also possible to specify 'collision filters' to provide a finer <br>
|
|
431
|
-
* control over which body can collide with each other.
|
|
432
|
-
* @see collision.types
|
|
433
|
-
* @param {number} [bitmask = collision.types.ALL_OBJECT] - the collision mask
|
|
434
|
-
* @example
|
|
435
|
-
* // filter collision detection with collision shapes, enemies and collectables
|
|
436
|
-
* body.setCollisionMask(me.collision.types.WORLD_SHAPE | me.collision.types.ENEMY_OBJECT | me.collision.types.COLLECTABLE_OBJECT);
|
|
437
|
-
* ...
|
|
438
|
-
* // disable collision detection with all other objects
|
|
439
|
-
* body.setCollisionMask(me.collision.types.NO_OBJECT);
|
|
440
|
-
*/
|
|
441
|
-
setCollisionMask(bitmask = collision.types.ALL_OBJECT) {
|
|
442
|
-
this.collisionMask = bitmask;
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
/**
|
|
446
|
-
* define the collision type of the body for collision filtering
|
|
447
|
-
* @see collision.types
|
|
448
|
-
* @param {number} type - the collision type
|
|
449
|
-
* @example
|
|
450
|
-
* // set the body collision type
|
|
451
|
-
* body.collisionType = me.collision.types.PLAYER_OBJECT;
|
|
452
|
-
*/
|
|
453
|
-
setCollisionType(type) {
|
|
454
|
-
if (typeof type !== "undefined") {
|
|
455
|
-
if (typeof collision.types[type] !== "undefined") {
|
|
456
|
-
this.collisionType = collision.types[type];
|
|
457
|
-
} else {
|
|
458
|
-
throw new Error("Invalid value for the collisionType property");
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
/**
|
|
464
|
-
* the built-in function to solve the collision response
|
|
465
|
-
* @param {object} response - the collision response object (see {@link ResponseObject})
|
|
466
|
-
*/
|
|
467
|
-
respondToCollision(response) {
|
|
468
|
-
// the overlap vector
|
|
469
|
-
let overlap = response.overlapV;
|
|
470
|
-
|
|
471
|
-
// FIXME: Respond proportionally to object mass
|
|
472
|
-
|
|
473
|
-
// Move out of the other object shape
|
|
474
|
-
this.ancestor.pos.sub(overlap);
|
|
475
|
-
|
|
476
|
-
// adjust velocity
|
|
477
|
-
if (overlap.x !== 0) {
|
|
478
|
-
this.vel.x = ~~(0.5 + this.vel.x - overlap.x) || 0;
|
|
479
|
-
if (this.bounce > 0) {
|
|
480
|
-
this.vel.x *= -this.bounce;
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
if (overlap.y !== 0) {
|
|
484
|
-
this.vel.y = ~~(0.5 + this.vel.y - overlap.y) || 0;
|
|
485
|
-
if (this.bounce > 0) {
|
|
486
|
-
this.vel.y *= -this.bounce;
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
if (!this.ignoreGravity) {
|
|
490
|
-
// cancel the falling an jumping flags if necessary
|
|
491
|
-
let dir = this.falling === true ? 1 : this.jumping === true ? -1 : 0;
|
|
492
|
-
this.falling = overlap.y >= dir;
|
|
493
|
-
this.jumping = overlap.y <= -dir;
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
/**
|
|
499
|
-
* The forEach() method executes a provided function once per body shape element. <br>
|
|
500
|
-
* the callback function is invoked with three arguments: <br>
|
|
501
|
-
* - The current element being processed in the array <br>
|
|
502
|
-
* - The index of element in the array. <br>
|
|
503
|
-
* - The array forEach() was called upon. <br>
|
|
504
|
-
* @param {Function} callback - fnction to execute on each element
|
|
505
|
-
* @param {object} [thisArg] - value to use as this(i.e reference Object) when executing callback.
|
|
506
|
-
* @example
|
|
507
|
-
* // iterate through all shapes of the physic body
|
|
508
|
-
* mySprite.body.forEach((shape) => {
|
|
509
|
-
* shape.doSomething();
|
|
510
|
-
* });
|
|
511
|
-
* mySprite.body.forEach((shape, index) => { ... });
|
|
512
|
-
* mySprite.body.forEach((shape, index, array) => { ... });
|
|
513
|
-
* mySprite.body.forEach((shape, index, array) => { ... }, thisArg);
|
|
514
|
-
*/
|
|
515
|
-
forEach(callback, thisArg) {
|
|
516
|
-
let context = this, i = 0;
|
|
517
|
-
let shapes = this.shapes;
|
|
518
|
-
|
|
519
|
-
let len = shapes.length;
|
|
520
|
-
|
|
521
|
-
if (typeof callback !== "function") {
|
|
522
|
-
throw new Error(callback + " is not a function");
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
if (arguments.length > 1) {
|
|
526
|
-
context = thisArg;
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
while (i < len) {
|
|
530
|
-
callback.call(context, shapes[i], i, shapes);
|
|
531
|
-
i++;
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
/**
|
|
536
|
-
* Returns true if the any of the shape composing the body contains the given point.
|
|
537
|
-
* @param {number|Vector2d} x - x coordinate or a vector point to check
|
|
538
|
-
* @param {number} [y] - y coordinate
|
|
539
|
-
* @returns {boolean} true if contains
|
|
540
|
-
* @example
|
|
541
|
-
* if (mySprite.body.contains(10, 10)) {
|
|
542
|
-
* // do something
|
|
543
|
-
* }
|
|
544
|
-
* // or
|
|
545
|
-
* if (mySprite.body.contains(myVector2d)) {
|
|
546
|
-
* // do something
|
|
547
|
-
* }
|
|
548
|
-
*/
|
|
549
|
-
contains(...args) {
|
|
550
|
-
let _x, _y;
|
|
551
|
-
|
|
552
|
-
if (args.length === 2) {
|
|
553
|
-
// x, y
|
|
554
|
-
[_x, _y] = args;
|
|
555
|
-
} else {
|
|
556
|
-
// vector
|
|
557
|
-
[_x, _y] = [args[0].x, args[0].y];
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
if (this.getBounds().contains(_x, _y)) {
|
|
561
|
-
// cannot use forEach here as cannot break out with a return
|
|
562
|
-
for (let i = this.shapes.length, shape; i--, (shape = this.shapes[i]);) {
|
|
563
|
-
if (shape.contains(_x, _y)) {
|
|
564
|
-
return true;
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
return false;
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
/**
|
|
572
|
-
* Rotate this body (counter-clockwise) by the specified angle (in radians).
|
|
573
|
-
* Unless specified the body will be rotated around its center point
|
|
574
|
-
* @param {number} angle - The angle to rotate (in radians)
|
|
575
|
-
* @param {Vector2d|ObservableVector2d} [v=Body.getBounds().center] - an optional point to rotate around
|
|
576
|
-
* @returns {Body} Reference to this object for method chaining
|
|
577
|
-
*/
|
|
578
|
-
rotate(angle, v = this.getBounds().center) {
|
|
579
|
-
if (angle !== 0) {
|
|
580
|
-
this.bounds.clear();
|
|
581
|
-
this.forEach((shape) => {
|
|
582
|
-
shape.rotate(angle, v);
|
|
583
|
-
this.bounds.addBounds(shape.getBounds());
|
|
584
|
-
/*
|
|
585
|
-
if (!(shape instanceof Ellipse)) {
|
|
586
|
-
// ellipse position is center
|
|
587
|
-
this.bounds.translate(shape.pos);
|
|
588
|
-
}
|
|
589
|
-
*/
|
|
590
|
-
});
|
|
591
|
-
/*
|
|
592
|
-
if (typeof this.onBodyUpdate === "function") {
|
|
593
|
-
this.onBodyUpdate(this);
|
|
594
|
-
}
|
|
595
|
-
*/
|
|
596
|
-
}
|
|
597
|
-
return this;
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
/**
|
|
601
|
-
* cap the body velocity (body.maxVel property) to the specified value<br>
|
|
602
|
-
* @param {number} x - max velocity on x axis
|
|
603
|
-
* @param {number} y - max velocity on y axis
|
|
604
|
-
*/
|
|
605
|
-
setMaxVelocity(x, y) {
|
|
606
|
-
this.maxVel.x = x;
|
|
607
|
-
this.maxVel.y = y;
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
/**
|
|
611
|
-
* set the body default friction
|
|
612
|
-
* @param {number} x - horizontal friction
|
|
613
|
-
* @param {number} y - vertical friction
|
|
614
|
-
*/
|
|
615
|
-
setFriction(x = 0, y = 0) {
|
|
616
|
-
this.friction.x = x;
|
|
617
|
-
this.friction.y = y;
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
/**
|
|
621
|
-
* Updates the parent's position as well as computes the new body's velocity based
|
|
622
|
-
* on the values of force/friction. Velocity chages are proportional to the
|
|
623
|
-
* me.timer.tick value (which can be used to scale velocities). The approach to moving the
|
|
624
|
-
* parent renderable is to compute new values of the Body.vel property then add them to
|
|
625
|
-
* the parent.pos value thus changing the postion the amount of Body.vel each time the
|
|
626
|
-
* update call is made. <br>
|
|
627
|
-
* Updates to Body.vel are bounded by maxVel (which defaults to viewport size if not set) <br>
|
|
628
|
-
* At this time a call to Body.Update does not call the onBodyUpdate callback that is listed in the constructor arguments.
|
|
629
|
-
* @protected
|
|
630
|
-
* @param {number} dt - time since the last update in milliseconds.
|
|
631
|
-
* @returns {boolean} true if resulting velocity is different than 0
|
|
632
|
-
*/
|
|
633
|
-
update(dt) { // eslint-disable-line no-unused-vars
|
|
634
|
-
// apply timer.tick to delta time for linear interpolation (when enabled)
|
|
635
|
-
// #761 add delta time in body update
|
|
636
|
-
let deltaTime = /* dt * */ timer.tick;
|
|
637
|
-
|
|
638
|
-
// apply force if defined
|
|
639
|
-
if (this.force.x !== 0) {
|
|
640
|
-
this.vel.x += this.force.x * deltaTime;
|
|
641
|
-
}
|
|
642
|
-
if (this.force.y !== 0) {
|
|
643
|
-
this.vel.y += this.force.y * deltaTime;
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
// apply friction if defined
|
|
647
|
-
if (this.friction.x > 0) {
|
|
648
|
-
let fx = this.friction.x * deltaTime,
|
|
649
|
-
nx = this.vel.x + fx,
|
|
650
|
-
x = this.vel.x - fx;
|
|
651
|
-
|
|
652
|
-
this.vel.x = (
|
|
653
|
-
(nx < 0) ? nx :
|
|
654
|
-
(x > 0) ? x : 0
|
|
655
|
-
);
|
|
656
|
-
}
|
|
657
|
-
if (this.friction.y > 0) {
|
|
658
|
-
let fy = this.friction.y * deltaTime,
|
|
659
|
-
ny = this.vel.y + fy,
|
|
660
|
-
y = this.vel.y - fy;
|
|
661
|
-
|
|
662
|
-
this.vel.y = (
|
|
663
|
-
(ny < 0) ? ny :
|
|
664
|
-
(y > 0) ? y : 0
|
|
665
|
-
);
|
|
666
|
-
}
|
|
667
|
-
|
|
668
|
-
// cap velocity
|
|
669
|
-
if (this.vel.y !== 0) {
|
|
670
|
-
this.vel.y = clamp(this.vel.y, -this.maxVel.y, this.maxVel.y);
|
|
671
|
-
}
|
|
672
|
-
if (this.vel.x !== 0) {
|
|
673
|
-
this.vel.x = clamp(this.vel.x, -this.maxVel.x, this.maxVel.x);
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
// check if falling / jumping
|
|
677
|
-
this.falling = (this.vel.y * Math.sign(this.force.y)) > 0;
|
|
678
|
-
this.jumping = (this.falling ? false : this.jumping);
|
|
679
|
-
|
|
680
|
-
// update the body ancestor position
|
|
681
|
-
this.ancestor.pos.add(this.vel);
|
|
682
|
-
|
|
683
|
-
// returns true if vel is different from 0
|
|
684
|
-
return (this.vel.x !== 0 || this.vel.y !== 0);
|
|
685
|
-
}
|
|
686
|
-
|
|
687
|
-
/**
|
|
688
|
-
* Destroy function<br>
|
|
689
|
-
* @ignore
|
|
690
|
-
*/
|
|
691
|
-
destroy() {
|
|
692
|
-
// push back instance into object pool
|
|
693
|
-
pool.push(this.bounds);
|
|
694
|
-
pool.push(this.vel);
|
|
695
|
-
pool.push(this.force);
|
|
696
|
-
pool.push(this.friction);
|
|
697
|
-
pool.push(this.maxVel);
|
|
698
|
-
this.shapes.forEach((shape) => {
|
|
699
|
-
pool.push(shape, false);
|
|
700
|
-
});
|
|
701
|
-
|
|
702
|
-
// set to undefined
|
|
703
|
-
this.onBodyUpdate = undefined;
|
|
704
|
-
this.ancestor = undefined;
|
|
705
|
-
this.bounds = undefined;
|
|
706
|
-
this.vel = undefined;
|
|
707
|
-
this.force = undefined;
|
|
708
|
-
this.friction = undefined;
|
|
709
|
-
this.maxVel = undefined;
|
|
710
|
-
this.shapes.length = 0;
|
|
711
|
-
|
|
712
|
-
// reset some variable to default
|
|
713
|
-
this.setStatic(false);
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
export { Body as default };
|