melonjs 17.3.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 +16 -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/build/application/header.d.ts +11 -0
- package/build/application/header.d.ts.map +1 -0
- package/{dist/types → build}/application/resize.d.ts +2 -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 +37 -59
- package/build/audio/audio.d.ts.map +1 -0
- package/{dist/types → build}/camera/camera2d.d.ts +42 -75
- 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 +11 -5
- 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 -15
- 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 +3 -3
- 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 +29 -53
- 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 +16 -40
- 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 +39 -21
- 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 +6 -4
- package/build/physics/collision.d.ts.map +1 -0
- package/{dist/types → build}/physics/detector.d.ts +13 -5
- package/build/physics/detector.d.ts.map +1 -0
- package/{dist/types → build}/physics/quadtree.d.ts +7 -18
- 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 +8 -0
- package/build/physics/sat.d.ts.map +1 -0
- package/{dist/types → build}/physics/world.d.ts +9 -4
- package/build/physics/world.d.ts.map +1 -0
- package/{dist/types → build}/plugin/plugin.d.ts +11 -18
- 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/build/renderable/colorlayer.d.ts +41 -0
- package/build/renderable/colorlayer.d.ts.map +1 -0
- package/{dist/types → build}/renderable/container.d.ts +50 -19
- 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 +12 -21
- package/build/renderable/dragndrop.d.ts.map +1 -0
- package/{dist/types → build}/renderable/entity/entity.d.ts +17 -11
- package/build/renderable/entity/entity.d.ts.map +1 -0
- package/{dist/types → build}/renderable/imagelayer.d.ts +28 -8
- 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 +9 -3
- package/build/renderable/nineslicesprite.d.ts.map +1 -0
- package/{dist/types → build}/renderable/renderable.d.ts +71 -50
- package/build/renderable/renderable.d.ts.map +1 -0
- package/{dist/types → build}/renderable/sprite.d.ts +34 -13
- package/build/renderable/sprite.d.ts.map +1 -0
- package/{dist/types → build}/renderable/text/bitmaptext.d.ts +7 -8
- 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 +22 -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 +58 -22
- package/build/video/canvas/canvas_renderer.d.ts.map +1 -0
- package/{dist/types → build}/video/renderer.d.ts +38 -17
- package/build/video/renderer.d.ts.map +1 -0
- package/{dist/types → build}/video/rendertarget/canvasrendertarget.d.ts +20 -10
- package/build/video/rendertarget/canvasrendertarget.d.ts.map +1 -0
- package/{dist/types → build}/video/texture/atlas.d.ts +14 -9
- 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 +9 -2
- package/build/video/webgl/compositors/compositor.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/compositors/primitive_compositor.d.ts +7 -3
- package/build/video/webgl/compositors/primitive_compositor.d.ts.map +1 -0
- package/{dist/types → build}/video/webgl/compositors/quad_compositor.d.ts +5 -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 +55 -43
- package/build/video/webgl/webgl_renderer.d.ts.map +1 -0
- package/package.json +83 -105
- 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 -437
- package/dist/melonjs.mjs/application/header.js +0 -35
- package/dist/melonjs.mjs/application/resize.js +0 -123
- package/dist/melonjs.mjs/application/settings.js +0 -65
- package/dist/melonjs.mjs/audio/audio.js +0 -618
- package/dist/melonjs.mjs/camera/camera2d.js +0 -729
- package/dist/melonjs.mjs/const.js +0 -32
- package/dist/melonjs.mjs/geometries/ellipse.js +0 -245
- package/dist/melonjs.mjs/geometries/line.js +0 -108
- package/dist/melonjs.mjs/geometries/path2d.js +0 -474
- package/dist/melonjs.mjs/geometries/point.js +0 -80
- package/dist/melonjs.mjs/geometries/poly.js +0 -433
- package/dist/melonjs.mjs/geometries/rectangle.js +0 -330
- 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 -803
- 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 -728
- 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 -487
- package/dist/melonjs.mjs/math/matrix3.js +0 -621
- package/dist/melonjs.mjs/math/observable_vector2.js +0 -468
- package/dist/melonjs.mjs/math/observable_vector3.js +0 -558
- package/dist/melonjs.mjs/math/vector2.js +0 -431
- package/dist/melonjs.mjs/math/vector3.js +0 -468
- 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 -186
- package/dist/melonjs.mjs/particles/settings.js +0 -317
- package/dist/melonjs.mjs/physics/body.js +0 -706
- package/dist/melonjs.mjs/physics/bounds.js +0 -409
- package/dist/melonjs.mjs/physics/collision.js +0 -130
- package/dist/melonjs.mjs/physics/detector.js +0 -218
- package/dist/melonjs.mjs/physics/quadtree.js +0 -396
- package/dist/melonjs.mjs/physics/response.js +0 -57
- package/dist/melonjs.mjs/physics/sat.js +0 -483
- package/dist/melonjs.mjs/physics/world.js +0 -224
- package/dist/melonjs.mjs/plugin/plugin.js +0 -168
- package/dist/melonjs.mjs/renderable/collectable.js +0 -60
- package/dist/melonjs.mjs/renderable/colorlayer.js +0 -78
- package/dist/melonjs.mjs/renderable/container.js +0 -994
- package/dist/melonjs.mjs/renderable/draggable.js +0 -121
- package/dist/melonjs.mjs/renderable/dragndrop.js +0 -114
- package/dist/melonjs.mjs/renderable/entity/entity.js +0 -254
- package/dist/melonjs.mjs/renderable/imagelayer.js +0 -288
- package/dist/melonjs.mjs/renderable/light2d.js +0 -164
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +0 -242
- package/dist/melonjs.mjs/renderable/renderable.js +0 -860
- package/dist/melonjs.mjs/renderable/sprite.js +0 -694
- 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 -158
- 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 -883
- package/dist/melonjs.mjs/video/renderer.js +0 -393
- package/dist/melonjs.mjs/video/rendertarget/canvasrendertarget.js +0 -310
- package/dist/melonjs.mjs/video/texture/atlas.js +0 -460
- 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 -234
- package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +0 -77
- package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +0 -254
- 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 -1199
- package/dist/melonjs.module.js +0 -42838
- package/dist/types/application/header.d.ts +0 -5
- package/dist/types/application/settings.d.ts +0 -105
- package/dist/types/const.d.ts +0 -21
- package/dist/types/geometries/ellipse.d.ts +0 -127
- package/dist/types/geometries/line.d.ts +0 -11
- package/dist/types/geometries/point.d.ts +0 -46
- package/dist/types/geometries/poly.d.ts +0 -175
- package/dist/types/geometries/rectangle.d.ts +0 -130
- 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 -165
- package/dist/types/math/matrix3.d.ts +0 -177
- package/dist/types/math/observable_vector2.d.ts +0 -278
- package/dist/types/math/observable_vector3.d.ts +0 -277
- package/dist/types/math/vector2.d.ts +0 -255
- package/dist/types/math/vector3.d.ts +0 -266
- package/dist/types/particles/particle.d.ts +0 -32
- package/dist/types/physics/bounds.d.ts +0 -195
- 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/colorlayer.d.ts +0 -28
- package/dist/types/renderable/light2d.d.ts +0 -58
- 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 -429
- package/src/application/header.js +0 -26
- package/src/application/resize.js +0 -114
- package/src/application/settings.js +0 -56
- package/src/audio/audio.js +0 -617
- package/src/camera/camera2d.js +0 -724
- package/src/const.js +0 -23
- package/src/geometries/ellipse.js +0 -236
- package/src/geometries/line.js +0 -99
- package/src/geometries/path2d.js +0 -464
- package/src/geometries/point.js +0 -71
- package/src/geometries/poly.js +0 -424
- package/src/geometries/rectangle.js +0 -321
- 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 -794
- 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 -727
- 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 -479
- package/src/math/matrix3.js +0 -613
- package/src/math/observable_vector2.js +0 -460
- package/src/math/observable_vector3.js +0 -550
- package/src/math/vector2.js +0 -423
- package/src/math/vector3.js +0 -460
- package/src/particles/emitter.js +0 -258
- package/src/particles/particle.js +0 -178
- package/src/particles/settings.js +0 -310
- package/src/physics/body.js +0 -698
- package/src/physics/bounds.js +0 -401
- package/src/physics/collision.js +0 -123
- package/src/physics/detector.js +0 -209
- package/src/physics/quadtree.js +0 -387
- package/src/physics/response.js +0 -48
- package/src/physics/sat.js +0 -473
- package/src/physics/world.js +0 -216
- package/src/plugin/plugin.js +0 -159
- 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 -70
- package/src/renderable/container.js +0 -985
- package/src/renderable/draggable.js +0 -114
- package/src/renderable/dragndrop.js +0 -106
- package/src/renderable/entity/entity.js +0 -246
- package/src/renderable/imagelayer.js +0 -280
- package/src/renderable/light2d.js +0 -155
- package/src/renderable/nineslicesprite.js +0 -233
- package/src/renderable/renderable.js +0 -852
- package/src/renderable/sprite.js +0 -685
- 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 -149
- 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 -874
- package/src/video/renderer.js +0 -384
- package/src/video/rendertarget/canvasrendertarget.js +0 -303
- package/src/video/texture/atlas.js +0 -451
- 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 -225
- package/src/video/webgl/compositors/primitive_compositor.js +0 -68
- package/src/video/webgl/compositors/quad_compositor.js +0 -245
- 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 -1190
package/src/physics/sat.js
DELETED
|
@@ -1,473 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Separating Axis Theorem implementation, based on the SAT.js library by Jim Riecken <jimr@jimr.ca>
|
|
3
|
-
* Available under the MIT License - https://github.com/jriecken/sat-js
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import Vector2d from "./../math/vector2.js";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Constants for Vornoi regions
|
|
10
|
-
* @ignore
|
|
11
|
-
*/
|
|
12
|
-
const LEFT_VORNOI_REGION = -1;
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Constants for Vornoi regions
|
|
16
|
-
* @ignore
|
|
17
|
-
*/
|
|
18
|
-
const MIDDLE_VORNOI_REGION = 0;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Constants for Vornoi regions
|
|
22
|
-
* @ignore
|
|
23
|
-
*/
|
|
24
|
-
const RIGHT_VORNOI_REGION = 1;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* A pool of `Vector` objects that are used in calculations to avoid allocating memory.
|
|
29
|
-
* @type {Array.<Vector2d>}
|
|
30
|
-
* @ignore
|
|
31
|
-
*/
|
|
32
|
-
let T_VECTORS = [];
|
|
33
|
-
for (let v = 0; v < 10; v++) { T_VECTORS.push(new Vector2d()); }
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* A pool of arrays of numbers used in calculations to avoid allocating memory.
|
|
37
|
-
* @type {Array.<Array.<number>>}
|
|
38
|
-
* @ignore
|
|
39
|
-
*/
|
|
40
|
-
let T_ARRAYS = [];
|
|
41
|
-
for (let a = 0; a < 5; a++) { T_ARRAYS.push([]); }
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Flattens the specified array of points onto a unit vector axis,
|
|
46
|
-
* resulting in a one dimensional range of the minimum and
|
|
47
|
-
* maximum value on that axis.
|
|
48
|
-
* @ignore
|
|
49
|
-
* @param {Array.<Vector2d>} points - The points to flatten.
|
|
50
|
-
* @param {Vector2d} normal - The unit vector axis to flatten on.
|
|
51
|
-
* @param {Array.<number>} result - An array. After calling this function,
|
|
52
|
-
* result[0] will be the minimum value,
|
|
53
|
-
* result[1] will be the maximum value.
|
|
54
|
-
*/
|
|
55
|
-
function flattenPointsOn(points, normal, result) {
|
|
56
|
-
let min = Number.MAX_VALUE;
|
|
57
|
-
let max = -Number.MAX_VALUE;
|
|
58
|
-
let len = points.length;
|
|
59
|
-
for (let i = 0; i < len; i++) {
|
|
60
|
-
// The magnitude of the projection of the point onto the normal
|
|
61
|
-
const dot = points[i].dot(normal);
|
|
62
|
-
if (dot < min) { min = dot; }
|
|
63
|
-
if (dot > max) { max = dot; }
|
|
64
|
-
}
|
|
65
|
-
result[0] = min;
|
|
66
|
-
result[1] = max;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Check whether two convex polygons are separated by the specified
|
|
71
|
-
* axis (must be a unit vector).
|
|
72
|
-
* @ignore
|
|
73
|
-
* @param {Vector2d} aPos - The position of the first polygon.
|
|
74
|
-
* @param {Vector2d} bPos - The position of the second polygon.
|
|
75
|
-
* @param {Array.<Vector2d>} aPoints - The points in the first polygon.
|
|
76
|
-
* @param {Array.<Vector2d>} bPoints - The points in the second polygon.
|
|
77
|
-
* @param {Vector2d} axis - The axis (unit sized) to test against. The points of both polygons
|
|
78
|
-
* will be projected onto this axis.
|
|
79
|
-
* @param {Response=} response - A Response object (optional) which will be populated
|
|
80
|
-
* if the axis is not a separating axis.
|
|
81
|
-
* @returns {boolean} true if it is a separating axis, false otherwise. If false,
|
|
82
|
-
* and a response is passed in, information about how much overlap and
|
|
83
|
-
* the direction of the overlap will be populated.
|
|
84
|
-
*/
|
|
85
|
-
function isSeparatingAxis(aPos, bPos, aPoints, bPoints, axis, response) {
|
|
86
|
-
let rangeA = T_ARRAYS.pop();
|
|
87
|
-
let rangeB = T_ARRAYS.pop();
|
|
88
|
-
// The magnitude of the offset between the two polygons
|
|
89
|
-
let offsetV = T_VECTORS.pop().copy(bPos).sub(aPos);
|
|
90
|
-
let projectedOffset = offsetV.dot(axis);
|
|
91
|
-
|
|
92
|
-
// Project the polygons onto the axis.
|
|
93
|
-
flattenPointsOn(aPoints, axis, rangeA);
|
|
94
|
-
flattenPointsOn(bPoints, axis, rangeB);
|
|
95
|
-
// Move B's range to its position relative to A.
|
|
96
|
-
rangeB[0] += projectedOffset;
|
|
97
|
-
rangeB[1] += projectedOffset;
|
|
98
|
-
// Check if there is a gap. If there is, this is a separating axis and we can stop
|
|
99
|
-
if (rangeA[0] > rangeB[1] || rangeB[0] > rangeA[1]) {
|
|
100
|
-
T_VECTORS.push(offsetV);
|
|
101
|
-
T_ARRAYS.push(rangeA);
|
|
102
|
-
T_ARRAYS.push(rangeB);
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// This is not a separating axis. If we're calculating a response, calculate the overlap.
|
|
107
|
-
if (response) {
|
|
108
|
-
let overlap = 0;
|
|
109
|
-
// A starts further left than B
|
|
110
|
-
if (rangeA[0] < rangeB[0]) {
|
|
111
|
-
response.aInB = false;
|
|
112
|
-
// A ends before B does. We have to pull A out of B
|
|
113
|
-
if (rangeA[1] < rangeB[1]) {
|
|
114
|
-
overlap = rangeA[1] - rangeB[0];
|
|
115
|
-
response.bInA = false;
|
|
116
|
-
// B is fully inside A. Pick the shortest way out.
|
|
117
|
-
} else {
|
|
118
|
-
let option1 = rangeA[1] - rangeB[0];
|
|
119
|
-
let option2 = rangeB[1] - rangeA[0];
|
|
120
|
-
overlap = option1 < option2 ? option1 : -option2;
|
|
121
|
-
}
|
|
122
|
-
// B starts further left than A
|
|
123
|
-
} else {
|
|
124
|
-
response.bInA = false;
|
|
125
|
-
// B ends before A ends. We have to push A out of B
|
|
126
|
-
if (rangeA[1] > rangeB[1]) {
|
|
127
|
-
overlap = rangeA[0] - rangeB[1];
|
|
128
|
-
response.aInB = false;
|
|
129
|
-
// A is fully inside B. Pick the shortest way out.
|
|
130
|
-
} else {
|
|
131
|
-
let option11 = rangeA[1] - rangeB[0];
|
|
132
|
-
let option22 = rangeB[1] - rangeA[0];
|
|
133
|
-
overlap = option11 < option22 ? option11 : -option22;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// If this is the smallest amount of overlap we've seen so far, set it as the minimum overlap.
|
|
138
|
-
let absOverlap = Math.abs(overlap);
|
|
139
|
-
if (absOverlap < response.overlap) {
|
|
140
|
-
response.overlap = absOverlap;
|
|
141
|
-
response.overlapN.copy(axis);
|
|
142
|
-
if (overlap < 0) {
|
|
143
|
-
response.overlapN.negateSelf();
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
T_VECTORS.push(offsetV);
|
|
148
|
-
T_ARRAYS.push(rangeA);
|
|
149
|
-
T_ARRAYS.push(rangeB);
|
|
150
|
-
return false;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Calculates which Vornoi region a point is on a line segment. <br>
|
|
156
|
-
* It is assumed that both the line and the point are relative to `(0,0)`<br>
|
|
157
|
-
* <pre>
|
|
158
|
-
* | (0) |
|
|
159
|
-
* (-1) [S]--------------[E] (1)
|
|
160
|
-
* | (0) |
|
|
161
|
-
* </pre>
|
|
162
|
-
*
|
|
163
|
-
* @ignore
|
|
164
|
-
* @param {Vector2d} line - The line segment.
|
|
165
|
-
* @param {Vector2d} point - The point.
|
|
166
|
-
* @returns {number} LEFT_VORNOI_REGION (-1) if it is the left region,
|
|
167
|
-
* MIDDLE_VORNOI_REGION (0) if it is the middle region,
|
|
168
|
-
* RIGHT_VORNOI_REGION (1) if it is the right region.
|
|
169
|
-
*/
|
|
170
|
-
function vornoiRegion(line, point) {
|
|
171
|
-
let len2 = line.length2();
|
|
172
|
-
let dp = point.dot(line);
|
|
173
|
-
if (dp < 0) {
|
|
174
|
-
// If the point is beyond the start of the line, it is in the
|
|
175
|
-
// left vornoi region.
|
|
176
|
-
return LEFT_VORNOI_REGION;
|
|
177
|
-
} else if (dp > len2) {
|
|
178
|
-
// If the point is beyond the end of the line, it is in the
|
|
179
|
-
// right vornoi region.
|
|
180
|
-
return RIGHT_VORNOI_REGION;
|
|
181
|
-
} else {
|
|
182
|
-
// Otherwise, it's in the middle one.
|
|
183
|
-
return MIDDLE_VORNOI_REGION;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Checks whether polygons collide.
|
|
189
|
-
* @ignore
|
|
190
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} a - a reference to the object A.
|
|
191
|
-
* @param {Polygon} polyA - a reference to the object A Polygon to be tested
|
|
192
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} b - a reference to the object B.
|
|
193
|
-
* @param {Polygon} polyB - a reference to the object B Polygon to be tested
|
|
194
|
-
* @param {Response=} response - Response object (optional) that will be populated if they intersect.
|
|
195
|
-
* @returns {boolean} true if they intersect, false if they don't.
|
|
196
|
-
*/
|
|
197
|
-
export function testPolygonPolygon(a, polyA, b, polyB, response) {
|
|
198
|
-
// specific point for
|
|
199
|
-
let aPoints = polyA.points;
|
|
200
|
-
let aNormals = polyA.normals;
|
|
201
|
-
let aLen = aNormals.length;
|
|
202
|
-
let bPoints = polyB.points;
|
|
203
|
-
let bNormals = polyB.normals;
|
|
204
|
-
let bLen = bNormals.length;
|
|
205
|
-
// aboslute shape position
|
|
206
|
-
let posA = T_VECTORS.pop().copy(a.pos).add(a.ancestor.getAbsolutePosition()).add(polyA.pos);
|
|
207
|
-
let posB = T_VECTORS.pop().copy(b.pos).add(b.ancestor.getAbsolutePosition()).add(polyB.pos);
|
|
208
|
-
|
|
209
|
-
// If any of the edge normals of A is a separating axis, no intersection.
|
|
210
|
-
for (let i = 0; i < aLen; i++) {
|
|
211
|
-
if (isSeparatingAxis(posA, posB, aPoints, bPoints, aNormals[i], response)) {
|
|
212
|
-
T_VECTORS.push(posA);
|
|
213
|
-
T_VECTORS.push(posB);
|
|
214
|
-
return false;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
// If any of the edge normals of B is a separating axis, no intersection.
|
|
219
|
-
for (let i = 0; i < bLen; i++) {
|
|
220
|
-
if (isSeparatingAxis(posA, posB, aPoints, bPoints, bNormals[i], response)) {
|
|
221
|
-
T_VECTORS.push(posA);
|
|
222
|
-
T_VECTORS.push(posB);
|
|
223
|
-
return false;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
// Since none of the edge normals of A or B are a separating axis, there is an intersection
|
|
228
|
-
// and we've already calculated the smallest overlap (in isSeparatingAxis). Calculate the
|
|
229
|
-
// final overlap vector.
|
|
230
|
-
if (response) {
|
|
231
|
-
response.a = a;
|
|
232
|
-
response.b = b;
|
|
233
|
-
response.overlapV.copy(response.overlapN).scale(response.overlap);
|
|
234
|
-
}
|
|
235
|
-
T_VECTORS.push(posA);
|
|
236
|
-
T_VECTORS.push(posB);
|
|
237
|
-
return true;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Check if two Ellipse collide.
|
|
242
|
-
* @ignore
|
|
243
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} a - a reference to the object A.
|
|
244
|
-
* @param {Ellipse} ellipseA - a reference to the object A Ellipse to be tested
|
|
245
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} b - a reference to the object B.
|
|
246
|
-
* @param {Ellipse} ellipseB - a reference to the object B Ellipse to be tested
|
|
247
|
-
* @param {Response=} response - Response object (optional) that will be populated if
|
|
248
|
-
* the circles intersect.
|
|
249
|
-
* @returns {boolean} true if the circles intersect, false if they don't.
|
|
250
|
-
*/
|
|
251
|
-
export function testEllipseEllipse(a, ellipseA, b, ellipseB, response) {
|
|
252
|
-
// Check if the distance between the centers of the two
|
|
253
|
-
// circles is greater than their combined radius.
|
|
254
|
-
let differenceV = T_VECTORS.pop().copy(b.pos).add(b.ancestor.getAbsolutePosition()).add(ellipseB.pos)
|
|
255
|
-
.sub(a.pos).add(a.ancestor.getAbsolutePosition()).sub(ellipseA.pos);
|
|
256
|
-
let radiusA = ellipseA.radius;
|
|
257
|
-
let radiusB = ellipseB.radius;
|
|
258
|
-
let totalRadius = radiusA + radiusB;
|
|
259
|
-
let totalRadiusSq = totalRadius * totalRadius;
|
|
260
|
-
let distanceSq = differenceV.length2();
|
|
261
|
-
// If the distance is bigger than the combined radius, they don't intersect.
|
|
262
|
-
if (distanceSq > totalRadiusSq) {
|
|
263
|
-
T_VECTORS.push(differenceV);
|
|
264
|
-
return false;
|
|
265
|
-
}
|
|
266
|
-
// They intersect. If we're calculating a response, calculate the overlap.
|
|
267
|
-
if (response) {
|
|
268
|
-
let dist = Math.sqrt(distanceSq);
|
|
269
|
-
response.a = a;
|
|
270
|
-
response.b = b;
|
|
271
|
-
response.overlap = totalRadius - dist;
|
|
272
|
-
response.overlapN.copy(differenceV.normalize());
|
|
273
|
-
response.overlapV.copy(differenceV).scale(response.overlap);
|
|
274
|
-
response.aInB = radiusA <= radiusB && dist <= radiusB - radiusA;
|
|
275
|
-
response.bInA = radiusB <= radiusA && dist <= radiusA - radiusB;
|
|
276
|
-
}
|
|
277
|
-
T_VECTORS.push(differenceV);
|
|
278
|
-
return true;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
/**
|
|
282
|
-
* Check if a polygon and an ellipse collide.
|
|
283
|
-
* @ignore
|
|
284
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} a - a reference to the object A.
|
|
285
|
-
* @param {Polygon} polyA - a reference to the object A Polygon to be tested
|
|
286
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} b - a reference to the object B.
|
|
287
|
-
* @param {Ellipse} ellipseB - a reference to the object B Ellipse to be tested
|
|
288
|
-
* @param {Response=} response - Response object (optional) that will be populated if they intersect.
|
|
289
|
-
* @returns {boolean} true if they intersect, false if they don't.
|
|
290
|
-
*/
|
|
291
|
-
export function testPolygonEllipse(a, polyA, b, ellipseB, response) {
|
|
292
|
-
// Get the position of the circle relative to the polygon.
|
|
293
|
-
let circlePos = T_VECTORS.pop().copy(b.pos).add(b.ancestor.getAbsolutePosition()).add(ellipseB.pos)
|
|
294
|
-
.sub(a.pos).add(a.ancestor.getAbsolutePosition()).sub(polyA.pos);
|
|
295
|
-
let radius = ellipseB.radius;
|
|
296
|
-
let radius2 = radius * radius;
|
|
297
|
-
let points = polyA.points;
|
|
298
|
-
let edges = polyA.edges;
|
|
299
|
-
let len = edges.length;
|
|
300
|
-
let edge = T_VECTORS.pop();
|
|
301
|
-
let normal = T_VECTORS.pop();
|
|
302
|
-
let point = T_VECTORS.pop();
|
|
303
|
-
let dist = 0;
|
|
304
|
-
|
|
305
|
-
// For each edge in the polygon:
|
|
306
|
-
for (let i = 0; i < len; i++) {
|
|
307
|
-
const next = i === len - 1 ? 0 : i + 1;
|
|
308
|
-
const prev = i === 0 ? len - 1 : i - 1;
|
|
309
|
-
let overlap = 0;
|
|
310
|
-
let overlapN = null;
|
|
311
|
-
|
|
312
|
-
// Get the edge.
|
|
313
|
-
edge.copy(edges[i]);
|
|
314
|
-
// Calculate the center of the circle relative to the starting point of the edge.
|
|
315
|
-
point.copy(circlePos).sub(points[i]);
|
|
316
|
-
|
|
317
|
-
// If the distance between the center of the circle and the point
|
|
318
|
-
// is bigger than the radius, the polygon is definitely not fully in
|
|
319
|
-
// the circle.
|
|
320
|
-
if (response && point.length2() > radius2) {
|
|
321
|
-
response.aInB = false;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
// Calculate which Vornoi region the center of the circle is in.
|
|
325
|
-
let region = vornoiRegion(edge, point);
|
|
326
|
-
let inRegion = true;
|
|
327
|
-
// If it's the left region:
|
|
328
|
-
if (region === LEFT_VORNOI_REGION) {
|
|
329
|
-
let point2 = null;
|
|
330
|
-
if (len > 1) {
|
|
331
|
-
// We need to make sure we're in the RIGHT_VORNOI_REGION of the previous edge.
|
|
332
|
-
edge.copy(edges[prev]);
|
|
333
|
-
// Calculate the center of the circle relative the starting point of the previous edge
|
|
334
|
-
point2 = T_VECTORS.pop().copy(circlePos).sub(points[prev]);
|
|
335
|
-
region = vornoiRegion(edge, point2);
|
|
336
|
-
if (region !== RIGHT_VORNOI_REGION) {
|
|
337
|
-
inRegion = false;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
if (inRegion) {
|
|
342
|
-
// It's in the region we want. Check if the circle intersects the point.
|
|
343
|
-
dist = point.length();
|
|
344
|
-
if (dist > radius) {
|
|
345
|
-
// No intersection
|
|
346
|
-
T_VECTORS.push(circlePos);
|
|
347
|
-
T_VECTORS.push(edge);
|
|
348
|
-
T_VECTORS.push(normal);
|
|
349
|
-
T_VECTORS.push(point);
|
|
350
|
-
if (point2) {
|
|
351
|
-
T_VECTORS.push(point2);
|
|
352
|
-
}
|
|
353
|
-
return false;
|
|
354
|
-
} else if (response) {
|
|
355
|
-
// It intersects, calculate the overlap.
|
|
356
|
-
response.bInA = false;
|
|
357
|
-
overlapN = point.normalize();
|
|
358
|
-
overlap = radius - dist;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
if (point2) {
|
|
363
|
-
T_VECTORS.push(point2);
|
|
364
|
-
}
|
|
365
|
-
// If it's the right region:
|
|
366
|
-
} else if (region === RIGHT_VORNOI_REGION) {
|
|
367
|
-
if (len > 1) {
|
|
368
|
-
// We need to make sure we're in the left region on the next edge
|
|
369
|
-
edge.copy(edges[next]);
|
|
370
|
-
// Calculate the center of the circle relative to the starting point of the next edge.
|
|
371
|
-
point.copy(circlePos).sub(points[next]);
|
|
372
|
-
region = vornoiRegion(edge, point);
|
|
373
|
-
if (region !== LEFT_VORNOI_REGION) {
|
|
374
|
-
inRegion = false;
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
if (inRegion) {
|
|
379
|
-
// It's in the region we want. Check if the circle intersects the point.
|
|
380
|
-
dist = point.length();
|
|
381
|
-
if (dist > radius) {
|
|
382
|
-
// No intersection
|
|
383
|
-
T_VECTORS.push(circlePos);
|
|
384
|
-
T_VECTORS.push(edge);
|
|
385
|
-
T_VECTORS.push(normal);
|
|
386
|
-
T_VECTORS.push(point);
|
|
387
|
-
return false;
|
|
388
|
-
} else if (response) {
|
|
389
|
-
// It intersects, calculate the overlap.
|
|
390
|
-
response.bInA = false;
|
|
391
|
-
overlapN = point.normalize();
|
|
392
|
-
overlap = radius - dist;
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
// Otherwise, it's the middle region:
|
|
396
|
-
} else {
|
|
397
|
-
// Need to check if the circle is intersecting the edge,
|
|
398
|
-
// Get the normal.
|
|
399
|
-
normal.copy(polyA.normals[i]);
|
|
400
|
-
// Find the perpendicular distance between the center of the
|
|
401
|
-
// circle and the edge.
|
|
402
|
-
dist = point.dot(normal);
|
|
403
|
-
let distAbs = Math.abs(dist);
|
|
404
|
-
// If the circle is on the outside of the edge, there is no intersection.
|
|
405
|
-
if ((len === 1 || dist > 0) && distAbs > radius) {
|
|
406
|
-
// No intersection
|
|
407
|
-
T_VECTORS.push(circlePos);
|
|
408
|
-
T_VECTORS.push(edge);
|
|
409
|
-
T_VECTORS.push(normal);
|
|
410
|
-
T_VECTORS.push(point);
|
|
411
|
-
return false;
|
|
412
|
-
} else if (response) {
|
|
413
|
-
// It intersects, calculate the overlap.
|
|
414
|
-
overlapN = normal;
|
|
415
|
-
overlap = radius - dist;
|
|
416
|
-
// If the center of the circle is on the outside of the edge, or part of the
|
|
417
|
-
// circle is on the outside, the circle is not fully inside the polygon.
|
|
418
|
-
if (dist >= 0 || overlap < 2 * radius) {
|
|
419
|
-
response.bInA = false;
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
// If this is the smallest overlap we've seen, keep it.
|
|
425
|
-
// (overlapN may be null if the circle was in the wrong Vornoi region).
|
|
426
|
-
if (overlapN && response && Math.abs(overlap) < Math.abs(response.overlap)) {
|
|
427
|
-
response.overlap = overlap;
|
|
428
|
-
response.overlapN.copy(overlapN);
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
// Calculate the final overlap vector - based on the smallest overlap.
|
|
433
|
-
if (response) {
|
|
434
|
-
response.a = a;
|
|
435
|
-
response.b = b;
|
|
436
|
-
response.overlapV.copy(response.overlapN).scale(response.overlap);
|
|
437
|
-
}
|
|
438
|
-
T_VECTORS.push(circlePos);
|
|
439
|
-
T_VECTORS.push(edge);
|
|
440
|
-
T_VECTORS.push(normal);
|
|
441
|
-
T_VECTORS.push(point);
|
|
442
|
-
return true;
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
/**
|
|
446
|
-
* Check if an ellipse and a polygon collide. <br>
|
|
447
|
-
* **NOTE:** This is slightly less efficient than testPolygonEllipse as it just
|
|
448
|
-
* runs testPolygonEllipse and reverses the response at the end.
|
|
449
|
-
* @ignore
|
|
450
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} a - a reference to the object A.
|
|
451
|
-
* @param {Ellipse} ellipseA - a reference to the object A Ellipse to be tested
|
|
452
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} b - a reference to the object B.
|
|
453
|
-
* @param {Polygon} polyB - a reference to the object B Polygon to be tested
|
|
454
|
-
* @param {Response=} response - Response object (optional) that will be populated if
|
|
455
|
-
* they intersect.
|
|
456
|
-
* @returns {boolean} true if they intersect, false if they don't.
|
|
457
|
-
*/
|
|
458
|
-
export function testEllipsePolygon(a, ellipseA, b, polyB, response) {
|
|
459
|
-
// Test the polygon against the circle.
|
|
460
|
-
let result = testPolygonEllipse(b, polyB, a, ellipseA, response);
|
|
461
|
-
if (result && response) {
|
|
462
|
-
// Swap A and B in the response.
|
|
463
|
-
let resa = response.a;
|
|
464
|
-
let aInB = response.aInB;
|
|
465
|
-
response.overlapN.negateSelf();
|
|
466
|
-
response.overlapV.negateSelf();
|
|
467
|
-
response.a = response.b;
|
|
468
|
-
response.b = resa;
|
|
469
|
-
response.aInB = response.bInA;
|
|
470
|
-
response.bInA = aInB;
|
|
471
|
-
}
|
|
472
|
-
return result;
|
|
473
|
-
}
|
package/src/physics/world.js
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import Vector2d from "./../math/vector2.js";
|
|
2
|
-
import * as event from "./../system/event.js";
|
|
3
|
-
import QuadTree from "./quadtree.js";
|
|
4
|
-
import Container from "../renderable/container.js";
|
|
5
|
-
import collision from "./collision.js";
|
|
6
|
-
import Detector from "./detector.js";
|
|
7
|
-
import state from "./../state/state.js";
|
|
8
|
-
import { hasRegisteredEvents } from "../input/pointerevent.js";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @classdesc
|
|
12
|
-
* an object representing the physic world, and responsible for managing and updating all childs and physics
|
|
13
|
-
* @augments Container
|
|
14
|
-
*/
|
|
15
|
-
export default class World extends Container {
|
|
16
|
-
/**
|
|
17
|
-
* @param {number} [x=0] - position of the container (accessible via the inherited pos.x property)
|
|
18
|
-
* @param {number} [y=0] - position of the container (accessible via the inherited pos.y property)
|
|
19
|
-
* @param {number} [width=game.viewport.width] - width of the container
|
|
20
|
-
* @param {number} [height=game.viewport.height] - height of the container
|
|
21
|
-
*/
|
|
22
|
-
constructor(x = 0, y = 0, width = Infinity, height = Infinity) {
|
|
23
|
-
// call the super constructor
|
|
24
|
-
super(x, y, width, height, true);
|
|
25
|
-
|
|
26
|
-
// world is the root container
|
|
27
|
-
this.name = "rootContainer";
|
|
28
|
-
|
|
29
|
-
// to mimic the previous behavior
|
|
30
|
-
this.anchorPoint.set(0, 0);
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* the application (game) this physic world belong to
|
|
34
|
-
* @type {Application}
|
|
35
|
-
*/
|
|
36
|
-
this.app = undefined;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* the physic engine used by melonJS
|
|
40
|
-
* @see ApplicationSettings.physic
|
|
41
|
-
* @type {string}
|
|
42
|
-
* @default "builtin"
|
|
43
|
-
* @example
|
|
44
|
-
* // disable builtin physic
|
|
45
|
-
* me.game.world.physic = "none";
|
|
46
|
-
*/
|
|
47
|
-
this.physic = "builtin";
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* the rate at which the game world is updated,
|
|
51
|
-
* may be greater than or lower than the display fps
|
|
52
|
-
* @default 60
|
|
53
|
-
* @see timer.maxfps
|
|
54
|
-
*/
|
|
55
|
-
this.fps = 60;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* world gravity
|
|
59
|
-
* @type {Vector2d}
|
|
60
|
-
* @default <0,0.98>
|
|
61
|
-
*/
|
|
62
|
-
this.gravity = new Vector2d(0, 0.98);
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Enabled pre-rendering for all tile layers. <br>
|
|
66
|
-
* If false layers are rendered dynamically, if true layers are first fully rendered into an offscreen canvas.<br>
|
|
67
|
-
* the "best" rendering method depends of your game (amount of layer, layer size, amount of tiles per layer, etc.)<br>
|
|
68
|
-
* Note : rendering method is also configurable per layer by adding a boolean "preRender" property to your layer in Tiled ({@link https://doc.mapeditor.org/en/stable/manual/custom-properties/#adding-properties}).
|
|
69
|
-
* @type {boolean}
|
|
70
|
-
* @default false
|
|
71
|
-
*/
|
|
72
|
-
this.preRender = false;
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* the active physic bodies in this simulation
|
|
76
|
-
* @type {Set<Body>}
|
|
77
|
-
*/
|
|
78
|
-
this.bodies = new Set();
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* the instance of the game world quadtree used for broadphase (used by the builtin physic and pointer event implementation)
|
|
82
|
-
* @type {QuadTree}
|
|
83
|
-
*/
|
|
84
|
-
this.broadphase = new QuadTree(this, this.getBounds().clone(), collision.maxChildren, collision.maxDepth);
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* the collision detector instance used by this world instance
|
|
88
|
-
* @type {Detector}
|
|
89
|
-
*/
|
|
90
|
-
this.detector = new Detector(this);
|
|
91
|
-
|
|
92
|
-
// reset the world container on the game reset signal
|
|
93
|
-
event.on(event.GAME_RESET, this.reset, this);
|
|
94
|
-
|
|
95
|
-
// update the broadband world bounds if a new level is loaded
|
|
96
|
-
event.on(event.LEVEL_LOADED, () => {
|
|
97
|
-
// reset the quadtree
|
|
98
|
-
this.broadphase.clear(this.getBounds());
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* reset the game world
|
|
104
|
-
*/
|
|
105
|
-
reset() {
|
|
106
|
-
// clear the quadtree
|
|
107
|
-
this.broadphase.clear();
|
|
108
|
-
|
|
109
|
-
// reset the anchorPoint
|
|
110
|
-
this.anchorPoint.set(0, 0);
|
|
111
|
-
|
|
112
|
-
// call the parent method
|
|
113
|
-
super.reset();
|
|
114
|
-
|
|
115
|
-
// empty the list of active physic bodies
|
|
116
|
-
// Note: this should be empty already when calling the parent method
|
|
117
|
-
this.bodies.clear();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Add a physic body to the game world
|
|
122
|
-
* @see Container.addChild
|
|
123
|
-
* @param {Body} body
|
|
124
|
-
* @returns {World} this game world
|
|
125
|
-
*/
|
|
126
|
-
addBody(body) {
|
|
127
|
-
//add it to the list of active body if builtin physic is enabled
|
|
128
|
-
if (this.physic === "builtin") {
|
|
129
|
-
this.bodies.add(body);
|
|
130
|
-
}
|
|
131
|
-
return this;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Remove a physic body from the game world
|
|
136
|
-
* @see Container.removeChild
|
|
137
|
-
* @param {Body} body
|
|
138
|
-
* @returns {World} this game world
|
|
139
|
-
*/
|
|
140
|
-
removeBody(body) {
|
|
141
|
-
//remove from the list of active body if builtin physic is enabled
|
|
142
|
-
if (this.physic === "builtin") {
|
|
143
|
-
this.bodies.delete(body);
|
|
144
|
-
}
|
|
145
|
-
return this;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Apply gravity to the given body
|
|
150
|
-
* @private
|
|
151
|
-
* @param {Body} body
|
|
152
|
-
*/
|
|
153
|
-
bodyApplyGravity(body) {
|
|
154
|
-
// apply gravity to the current velocity
|
|
155
|
-
if (!body.ignoreGravity && body.gravityScale !== 0) {
|
|
156
|
-
let gravity = this.gravity;
|
|
157
|
-
|
|
158
|
-
// apply gravity if defined
|
|
159
|
-
body.force.x += (body.mass * gravity.x) * body.gravityScale;
|
|
160
|
-
body.force.y += (body.mass * gravity.y) * body.gravityScale;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* update the game world
|
|
166
|
-
* @param {number} dt - the time passed since the last frame update
|
|
167
|
-
* @returns {boolean} true if the world is dirty
|
|
168
|
-
*/
|
|
169
|
-
update(dt) {
|
|
170
|
-
// only update the quadtree if necessary
|
|
171
|
-
if (this.physic === "builtin" || hasRegisteredEvents() === true) {
|
|
172
|
-
// clear the quadtree
|
|
173
|
-
this.broadphase.clear();
|
|
174
|
-
// insert the world container (children) into the quadtree
|
|
175
|
-
this.broadphase.insertContainer(this);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// update the builtin physic simulation
|
|
179
|
-
this.step(dt);
|
|
180
|
-
|
|
181
|
-
// call the super constructor
|
|
182
|
-
return super.update(dt);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* update the builtin physic simulation by one step (called by the game world update method)
|
|
187
|
-
* @param {number} dt - the time passed since the last frame update
|
|
188
|
-
*/
|
|
189
|
-
step(dt) {
|
|
190
|
-
if (this.physic === "builtin") {
|
|
191
|
-
let isPaused = state.isPaused();
|
|
192
|
-
// iterate through all bodies
|
|
193
|
-
this.bodies.forEach((body) => {
|
|
194
|
-
if (!body.isStatic) {
|
|
195
|
-
let ancestor = body.ancestor;
|
|
196
|
-
// if the game is not paused, and ancestor can be updated
|
|
197
|
-
if (!(isPaused && (!ancestor.updateWhenPaused)) && (ancestor.inViewport || ancestor.alwaysUpdate)) {
|
|
198
|
-
// apply gravity to this body
|
|
199
|
-
this.bodyApplyGravity(body);
|
|
200
|
-
// body update function (this moves it)
|
|
201
|
-
if (body.update(dt) === true) {
|
|
202
|
-
// mark ancestor as dirty
|
|
203
|
-
ancestor.isDirty = true;
|
|
204
|
-
}
|
|
205
|
-
// handle collisions against other objects
|
|
206
|
-
this.detector.collisions(ancestor);
|
|
207
|
-
// clear body force
|
|
208
|
-
body.force.set(0, 0);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
event.emit(event.WORLD_STEP, dt);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|