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
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* melonJS Game Engine - v17.3.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 * as sat from './sat.js';
|
|
9
|
-
import ResponseObject from './response.js';
|
|
10
|
-
import Vector2d from '../math/vector2.js';
|
|
11
|
-
import Bounds from './bounds.js';
|
|
12
|
-
|
|
13
|
-
// a dummy object when using Line for raycasting
|
|
14
|
-
let dummyObj = {
|
|
15
|
-
pos : new Vector2d(0, 0),
|
|
16
|
-
ancestor : {
|
|
17
|
-
_absPos : new Vector2d(0, 0),
|
|
18
|
-
getAbsolutePosition : function () {
|
|
19
|
-
return this._absPos;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// some cache bounds object used for collision detection
|
|
25
|
-
let boundsA = new Bounds();
|
|
26
|
-
let boundsB = new Bounds();
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* the Detector class contains methods for detecting collisions between bodies using a broadphase algorithm.
|
|
30
|
-
*/
|
|
31
|
-
class Detector {
|
|
32
|
-
/**
|
|
33
|
-
* @param {Container} world - the physic world this detector is bind to
|
|
34
|
-
*/
|
|
35
|
-
constructor(world) {
|
|
36
|
-
// @ignore
|
|
37
|
-
this.world = world;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* the default response object used for collisions
|
|
41
|
-
* (will be automatically populated by the collides functions)
|
|
42
|
-
* @type {ResponseObject}
|
|
43
|
-
*/
|
|
44
|
-
this.response = new ResponseObject();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* determine if two objects should collide (based on both respective objects body collision mask and type).<br>
|
|
49
|
-
* you can redefine this function if you need any specific rules over what should collide with what.
|
|
50
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} a - a reference to the object A.
|
|
51
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} b - a reference to the object B.
|
|
52
|
-
* @returns {boolean} true if they should collide, false otherwise
|
|
53
|
-
*/
|
|
54
|
-
shouldCollide(a, b) {
|
|
55
|
-
let bodyA = a.body,
|
|
56
|
-
bodyB = b.body;
|
|
57
|
-
return (
|
|
58
|
-
(typeof bodyA === "object" && typeof bodyB === "object") &&
|
|
59
|
-
a !== b &&
|
|
60
|
-
a.isKinematic !== true && b.isKinematic !== true &&
|
|
61
|
-
bodyA.shapes.length > 0 && bodyB.shapes.length > 0 &&
|
|
62
|
-
!(bodyA.isStatic === true && bodyB.isStatic === true) &&
|
|
63
|
-
(bodyA.collisionMask & bodyB.collisionType) !== 0 &&
|
|
64
|
-
(bodyA.collisionType & bodyB.collisionMask) !== 0
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* detect collision between two bodies.
|
|
70
|
-
* @param {Body} bodyA - a reference to body A.
|
|
71
|
-
* @param {Body} bodyB - a reference to body B.
|
|
72
|
-
* @returns {boolean} true if colliding
|
|
73
|
-
*/
|
|
74
|
-
collides(bodyA, bodyB, response = this.response) {
|
|
75
|
-
// for each shape in body A
|
|
76
|
-
for (let indexA = bodyA.shapes.length, shapeA; indexA--, (shapeA = bodyA.shapes[indexA]);) {
|
|
77
|
-
// for each shape in body B
|
|
78
|
-
for (let indexB = bodyB.shapes.length, shapeB; indexB--, (shapeB = bodyB.shapes[indexB]);) {
|
|
79
|
-
// full SAT collision check
|
|
80
|
-
if (sat["test" + shapeA.type + shapeB.type].call(
|
|
81
|
-
this,
|
|
82
|
-
bodyA.ancestor, // a reference to the object A
|
|
83
|
-
shapeA,
|
|
84
|
-
bodyB.ancestor, // a reference to the object B
|
|
85
|
-
shapeB,
|
|
86
|
-
// clear response object before reusing
|
|
87
|
-
response.clear()) === true
|
|
88
|
-
) {
|
|
89
|
-
|
|
90
|
-
// set the shape index
|
|
91
|
-
response.indexShapeA = indexA;
|
|
92
|
-
response.indexShapeB = indexB;
|
|
93
|
-
|
|
94
|
-
return true;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return false;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* find all the collisions for the specified object using a broadphase algorithm
|
|
103
|
-
* @ignore
|
|
104
|
-
* @param {Renderable|Container|Entity|Sprite|NineSliceSprite} objA - object to be tested for collision
|
|
105
|
-
* @returns {boolean} in case of collision, false otherwise
|
|
106
|
-
*/
|
|
107
|
-
collisions(objA) {
|
|
108
|
-
let collisionCounter = 0;
|
|
109
|
-
// retreive a list of potential colliding objects from the game world
|
|
110
|
-
let candidates = this.world.broadphase.retrieve(objA);
|
|
111
|
-
|
|
112
|
-
boundsA.addBounds(objA.getBounds(), true);
|
|
113
|
-
boundsA.addBounds(objA.body.getBounds());
|
|
114
|
-
|
|
115
|
-
candidates.forEach((objB) => {
|
|
116
|
-
// check if both objects "should" collide
|
|
117
|
-
if (this.shouldCollide(objA, objB)) {
|
|
118
|
-
|
|
119
|
-
boundsB.addBounds(objB.getBounds(), true);
|
|
120
|
-
boundsB.addBounds(objB.body.getBounds());
|
|
121
|
-
|
|
122
|
-
// fast AABB check if both bounding boxes are overlaping
|
|
123
|
-
if (boundsA.overlaps(boundsB)) {
|
|
124
|
-
|
|
125
|
-
if (this.collides(objA.body, objB.body)) {
|
|
126
|
-
// we touched something !
|
|
127
|
-
collisionCounter++;
|
|
128
|
-
|
|
129
|
-
// execute the onCollision callback
|
|
130
|
-
if (objA.onCollision && objA.onCollision(this.response, objB) !== false && objA.body.isStatic === false) {
|
|
131
|
-
objA.body.respondToCollision.call(objA.body, this.response);
|
|
132
|
-
}
|
|
133
|
-
if (objB.onCollision && objB.onCollision(this.response, objA) !== false && objB.body.isStatic === false) {
|
|
134
|
-
objB.body.respondToCollision.call(objB.body, this.response);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
// we could return the amount of objects we collided with ?
|
|
141
|
-
return collisionCounter > 0;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Checks for object colliding with the given line
|
|
146
|
-
* @ignore
|
|
147
|
-
* @param {Line} line - line to be tested for collision
|
|
148
|
-
* @param {Array.<Renderable>} [result] - a user defined array that will be populated with intersecting physic objects.
|
|
149
|
-
* @returns {Array.<Renderable>} an array of intersecting physic objects
|
|
150
|
-
* @example
|
|
151
|
-
* // define a line accross the viewport
|
|
152
|
-
* let ray = new me.Line(
|
|
153
|
-
* // absolute position of the line
|
|
154
|
-
* 0, 0, [
|
|
155
|
-
* // starting point relative to the initial position
|
|
156
|
-
* new me.Vector2d(0, 0),
|
|
157
|
-
* // ending point
|
|
158
|
-
* new me.Vector2d(me.game.viewport.width, me.game.viewport.height)
|
|
159
|
-
* ]);
|
|
160
|
-
*
|
|
161
|
-
* // check for collition
|
|
162
|
-
* result = me.collision.rayCast(ray);
|
|
163
|
-
*
|
|
164
|
-
* if (result.length > 0) {
|
|
165
|
-
* // ...
|
|
166
|
-
* }
|
|
167
|
-
*/
|
|
168
|
-
rayCast(line, result = []) {
|
|
169
|
-
let collisionCounter = 0;
|
|
170
|
-
|
|
171
|
-
// retrieve a list of potential colliding objects from the game world
|
|
172
|
-
let candidates = this.world.broadphase.retrieve(line);
|
|
173
|
-
|
|
174
|
-
for (let i = candidates.length, objB; i--, (objB = candidates[i]);) {
|
|
175
|
-
|
|
176
|
-
// fast AABB check if both bounding boxes are overlaping
|
|
177
|
-
if (objB.body && line.getBounds().overlaps(objB.getBounds())) {
|
|
178
|
-
|
|
179
|
-
// go trough all defined shapes in B (if any)
|
|
180
|
-
const bLen = objB.body.shapes.length;
|
|
181
|
-
if (objB.body.shapes.length === 0) {
|
|
182
|
-
continue;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
let shapeA = line;
|
|
186
|
-
|
|
187
|
-
// go through all defined shapes in B
|
|
188
|
-
let indexB = 0;
|
|
189
|
-
do {
|
|
190
|
-
let shapeB = objB.body.getShape(indexB);
|
|
191
|
-
|
|
192
|
-
// full SAT collision check
|
|
193
|
-
if (sat["test" + shapeA.type + shapeB.type]
|
|
194
|
-
.call(
|
|
195
|
-
this,
|
|
196
|
-
dummyObj, // a reference to the object A
|
|
197
|
-
shapeA,
|
|
198
|
-
objB, // a reference to the object B
|
|
199
|
-
shapeB
|
|
200
|
-
)) {
|
|
201
|
-
// we touched something !
|
|
202
|
-
result[collisionCounter] = objB;
|
|
203
|
-
collisionCounter++;
|
|
204
|
-
}
|
|
205
|
-
indexB++;
|
|
206
|
-
} while (indexB < bLen);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// cap result in case it was not empty
|
|
211
|
-
result.length = collisionCounter;
|
|
212
|
-
|
|
213
|
-
// return the list of colliding objects
|
|
214
|
-
return result;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
export { Detector as default };
|
|
@@ -1,396 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* melonJS Game Engine - v17.3.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 Vector2d from '../math/vector2.js';
|
|
9
|
-
import { remove } from '../utils/array.js';
|
|
10
|
-
|
|
11
|
-
/*
|
|
12
|
-
* A QuadTree implementation in JavaScript, a 2d spatial subdivision algorithm.
|
|
13
|
-
* Based on the QuadTree Library by Timo Hausmann and released under the MIT license
|
|
14
|
-
* https://github.com/timohausmann/quadtree-js/
|
|
15
|
-
**/
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* a pool of `QuadTree` objects
|
|
19
|
-
* @ignore
|
|
20
|
-
*/
|
|
21
|
-
let QT_ARRAY = [];
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* will pop a quadtree object from the array
|
|
25
|
-
* or create a new one if the array is empty
|
|
26
|
-
* @ignore
|
|
27
|
-
*/
|
|
28
|
-
function QT_ARRAY_POP(world, bounds, max_objects = 4, max_levels = 4, level = 0) {
|
|
29
|
-
if (QT_ARRAY.length > 0) {
|
|
30
|
-
let _qt = QT_ARRAY.pop();
|
|
31
|
-
_qt.world = world;
|
|
32
|
-
_qt.bounds = bounds;
|
|
33
|
-
_qt.max_objects = max_objects;
|
|
34
|
-
_qt.max_levels = max_levels;
|
|
35
|
-
_qt.level = level;
|
|
36
|
-
return _qt;
|
|
37
|
-
} else {
|
|
38
|
-
return new QuadTree(world, bounds, max_objects, max_levels, level);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Push back a quadtree back into the array
|
|
44
|
-
* @ignore
|
|
45
|
-
*/
|
|
46
|
-
function QT_ARRAY_PUSH(qt) {
|
|
47
|
-
QT_ARRAY.push(qt);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* a temporary vector object to be reused
|
|
52
|
-
* @ignore
|
|
53
|
-
*/
|
|
54
|
-
let QT_VECTOR = new Vector2d();
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* @classdesc
|
|
58
|
-
* a QuadTree implementation in JavaScript, a 2d spatial subdivision algorithm.
|
|
59
|
-
* @see game.world.broadphase
|
|
60
|
-
*/
|
|
61
|
-
class QuadTree {
|
|
62
|
-
/**
|
|
63
|
-
* @param {World} world - the physic world this QuadTree belongs to
|
|
64
|
-
* @param {Bounds} bounds - bounds of the node
|
|
65
|
-
* @param {number} [max_objects=4] - max objects a node can hold before splitting into 4 subnodes
|
|
66
|
-
* @param {number} [max_levels=4] - total max levels inside root Quadtree
|
|
67
|
-
* @param {number} [level] - deepth level, required for subnodes
|
|
68
|
-
*/
|
|
69
|
-
constructor(world, bounds, max_objects = 4, max_levels = 4, level = 0) {
|
|
70
|
-
|
|
71
|
-
this.world = world;
|
|
72
|
-
this.bounds = bounds;
|
|
73
|
-
|
|
74
|
-
this.max_objects = max_objects;
|
|
75
|
-
this.max_levels = max_levels;
|
|
76
|
-
|
|
77
|
-
this.level = level;
|
|
78
|
-
|
|
79
|
-
this.objects = [];
|
|
80
|
-
this.nodes = [];
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/*
|
|
84
|
-
* Split the node into 4 subnodes
|
|
85
|
-
*/
|
|
86
|
-
split() {
|
|
87
|
-
let nextLevel = this.level + 1,
|
|
88
|
-
subWidth = this.bounds.width / 2,
|
|
89
|
-
subHeight = this.bounds.height / 2,
|
|
90
|
-
left = this.bounds.left,
|
|
91
|
-
top = this.bounds.top;
|
|
92
|
-
|
|
93
|
-
//top right node
|
|
94
|
-
this.nodes[0] = QT_ARRAY_POP(
|
|
95
|
-
this.world,
|
|
96
|
-
{
|
|
97
|
-
left : left + subWidth,
|
|
98
|
-
top : top,
|
|
99
|
-
width : subWidth,
|
|
100
|
-
height : subHeight
|
|
101
|
-
},
|
|
102
|
-
this.max_objects,
|
|
103
|
-
this.max_levels,
|
|
104
|
-
nextLevel
|
|
105
|
-
);
|
|
106
|
-
|
|
107
|
-
//top left node
|
|
108
|
-
this.nodes[1] = QT_ARRAY_POP(
|
|
109
|
-
this.world,
|
|
110
|
-
{
|
|
111
|
-
left : left,
|
|
112
|
-
top: top,
|
|
113
|
-
width : subWidth,
|
|
114
|
-
height : subHeight
|
|
115
|
-
},
|
|
116
|
-
this.max_objects,
|
|
117
|
-
this.max_levels,
|
|
118
|
-
nextLevel
|
|
119
|
-
);
|
|
120
|
-
|
|
121
|
-
//bottom left node
|
|
122
|
-
this.nodes[2] = QT_ARRAY_POP(
|
|
123
|
-
this.world,
|
|
124
|
-
{
|
|
125
|
-
left : left,
|
|
126
|
-
top : top + subHeight,
|
|
127
|
-
width : subWidth,
|
|
128
|
-
height : subHeight
|
|
129
|
-
},
|
|
130
|
-
this.max_objects,
|
|
131
|
-
this.max_levels,
|
|
132
|
-
nextLevel
|
|
133
|
-
);
|
|
134
|
-
|
|
135
|
-
//bottom right node
|
|
136
|
-
this.nodes[3] = QT_ARRAY_POP(
|
|
137
|
-
this.world,
|
|
138
|
-
{
|
|
139
|
-
left : left + subWidth,
|
|
140
|
-
top : top + subHeight,
|
|
141
|
-
width : subWidth,
|
|
142
|
-
height : subHeight
|
|
143
|
-
},
|
|
144
|
-
this.max_objects,
|
|
145
|
-
this.max_levels,
|
|
146
|
-
nextLevel
|
|
147
|
-
);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/*
|
|
151
|
-
* Determine which node the object belongs to
|
|
152
|
-
* @param {Rect} rect bounds of the area to be checked
|
|
153
|
-
* @returns Integer index of the subnode (0-3), or -1 if rect cannot completely fit within a subnode and is part of the parent node
|
|
154
|
-
*/
|
|
155
|
-
getIndex(item) {
|
|
156
|
-
let pos;
|
|
157
|
-
let bounds = item.getBounds();
|
|
158
|
-
|
|
159
|
-
// use game world coordinates for floating items
|
|
160
|
-
if (item.isFloating === true) {
|
|
161
|
-
pos = this.world.app.viewport.localToWorld(bounds.left, bounds.top, QT_VECTOR);
|
|
162
|
-
} else {
|
|
163
|
-
pos = QT_VECTOR.set(item.left, item.top);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
let index = -1,
|
|
167
|
-
rx = pos.x,
|
|
168
|
-
ry = pos.y,
|
|
169
|
-
rw = bounds.width,
|
|
170
|
-
rh = bounds.height,
|
|
171
|
-
verticalMidpoint = this.bounds.left + (this.bounds.width / 2),
|
|
172
|
-
horizontalMidpoint = this.bounds.top + (this.bounds.height / 2),
|
|
173
|
-
//rect can completely fit within the top quadrants
|
|
174
|
-
topQuadrant = (ry < horizontalMidpoint && ry + rh < horizontalMidpoint),
|
|
175
|
-
//rect can completely fit within the bottom quadrants
|
|
176
|
-
bottomQuadrant = (ry > horizontalMidpoint);
|
|
177
|
-
|
|
178
|
-
//rect can completely fit within the left quadrants
|
|
179
|
-
if (rx < verticalMidpoint && rx + rw < verticalMidpoint) {
|
|
180
|
-
if (topQuadrant) {
|
|
181
|
-
index = 1;
|
|
182
|
-
} else if (bottomQuadrant) {
|
|
183
|
-
index = 2;
|
|
184
|
-
}
|
|
185
|
-
} else if (rx > verticalMidpoint) {
|
|
186
|
-
//rect can completely fit within the right quadrants
|
|
187
|
-
if (topQuadrant) {
|
|
188
|
-
index = 0;
|
|
189
|
-
} else if (bottomQuadrant) {
|
|
190
|
-
index = 3;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
return index;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Insert the given object container into the node.
|
|
199
|
-
* @name insertContainer
|
|
200
|
-
* @memberof QuadTree
|
|
201
|
-
* @param {Container} container - group of objects to be added
|
|
202
|
-
*/
|
|
203
|
-
insertContainer(container) {
|
|
204
|
-
const children = container.children;
|
|
205
|
-
const childrenLength = children.length;
|
|
206
|
-
for (let i = childrenLength, child; i--, (child = children[i]);) {
|
|
207
|
-
if (child.isKinematic !== true) {
|
|
208
|
-
if (typeof child.addChild === "function") {
|
|
209
|
-
if (child.name !== "rootContainer") {
|
|
210
|
-
this.insert(child);
|
|
211
|
-
}
|
|
212
|
-
// recursivly insert all childs
|
|
213
|
-
this.insertContainer(child);
|
|
214
|
-
} else {
|
|
215
|
-
// only insert object with a bounding box
|
|
216
|
-
// Probably redundant with `isKinematic`
|
|
217
|
-
if (typeof (child.getBounds) === "function") {
|
|
218
|
-
this.insert(child);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Insert the given object into the node. If the node
|
|
227
|
-
* exceeds the capacity, it will split and add all
|
|
228
|
-
* objects to their corresponding subnodes.
|
|
229
|
-
* @name insert
|
|
230
|
-
* @memberof QuadTree
|
|
231
|
-
* @param {object} item - object to be added
|
|
232
|
-
*/
|
|
233
|
-
insert(item) {
|
|
234
|
-
let index = -1;
|
|
235
|
-
|
|
236
|
-
//if we have subnodes ...
|
|
237
|
-
if (this.nodes.length > 0) {
|
|
238
|
-
index = this.getIndex(item);
|
|
239
|
-
|
|
240
|
-
if (index !== -1) {
|
|
241
|
-
this.nodes[index].insert(item);
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
this.objects.push(item);
|
|
247
|
-
|
|
248
|
-
if (this.objects.length > this.max_objects && this.level < this.max_levels) {
|
|
249
|
-
|
|
250
|
-
//split if we don't already have subnodes
|
|
251
|
-
if (this.nodes.length === 0) {
|
|
252
|
-
this.split();
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
let i = 0;
|
|
256
|
-
|
|
257
|
-
//add all objects to there corresponding subnodes
|
|
258
|
-
while (i < this.objects.length) {
|
|
259
|
-
|
|
260
|
-
index = this.getIndex(this.objects[i]);
|
|
261
|
-
|
|
262
|
-
if (index !== -1) {
|
|
263
|
-
this.nodes[index].insert(this.objects.splice(i, 1)[0]);
|
|
264
|
-
} else {
|
|
265
|
-
i = i + 1;
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* Return all objects that could collide with the given object
|
|
273
|
-
* @name retrieve
|
|
274
|
-
* @memberof QuadTree
|
|
275
|
-
* @param {object} item - object to be checked against
|
|
276
|
-
* @param {object} [fn] - a sorting function for the returned array
|
|
277
|
-
* @returns {object[]} array with all detected objects
|
|
278
|
-
*/
|
|
279
|
-
retrieve(item, fn) {
|
|
280
|
-
let returnObjects = this.objects;
|
|
281
|
-
|
|
282
|
-
//if we have subnodes ...
|
|
283
|
-
if (this.nodes.length > 0) {
|
|
284
|
-
|
|
285
|
-
let index = this.getIndex(item);
|
|
286
|
-
|
|
287
|
-
//if rect fits into a subnode ..
|
|
288
|
-
if (index !== -1) {
|
|
289
|
-
returnObjects = returnObjects.concat(this.nodes[index].retrieve(item));
|
|
290
|
-
} else {
|
|
291
|
-
//if rect does not fit into a subnode, check it against all subnodes
|
|
292
|
-
for (let i = 0; i < this.nodes.length; i = i + 1) {
|
|
293
|
-
returnObjects = returnObjects.concat(this.nodes[i].retrieve(item));
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
if (typeof(fn) === "function") {
|
|
299
|
-
returnObjects.sort(fn);
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
return returnObjects;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* Remove the given item from the quadtree.
|
|
307
|
-
* (this function won't recalculate the impacted node)
|
|
308
|
-
* @name remove
|
|
309
|
-
* @memberof QuadTree
|
|
310
|
-
* @param {object} item - object to be removed
|
|
311
|
-
* @returns {boolean} true if the item was found and removed.
|
|
312
|
-
*/
|
|
313
|
-
remove(item) {
|
|
314
|
-
let found = false;
|
|
315
|
-
|
|
316
|
-
if (typeof (item.getBounds) === "undefined") {
|
|
317
|
-
// ignore object that cannot be added in the first place
|
|
318
|
-
return false;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
//if we have subnodes ...
|
|
322
|
-
if (this.nodes.length > 0) {
|
|
323
|
-
// determine to which node the item belongs to
|
|
324
|
-
let index = this.getIndex(item);
|
|
325
|
-
|
|
326
|
-
if (index !== -1) {
|
|
327
|
-
found = remove(this.nodes[index], item);
|
|
328
|
-
// trim node if empty
|
|
329
|
-
if (found && this.nodes[index].isPrunable()) {
|
|
330
|
-
this.nodes.splice(index, 1);
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
if (found === false) {
|
|
336
|
-
// try and remove the item from the list of items in this node
|
|
337
|
-
if (this.objects.indexOf(item) !== -1) {
|
|
338
|
-
remove(this.objects, item);
|
|
339
|
-
found = true;
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
return found;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
/**
|
|
347
|
-
* return true if the node is prunable
|
|
348
|
-
* @name isPrunable
|
|
349
|
-
* @memberof QuadTree
|
|
350
|
-
* @returns {boolean} true if the node is prunable
|
|
351
|
-
*/
|
|
352
|
-
isPrunable() {
|
|
353
|
-
return !(this.hasChildren() || (this.objects.length > 0));
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* return true if the node has any children
|
|
358
|
-
* @name hasChildren
|
|
359
|
-
* @memberof QuadTree
|
|
360
|
-
* @returns {boolean} true if the node has any children
|
|
361
|
-
*/
|
|
362
|
-
hasChildren() {
|
|
363
|
-
for (let i = 0; i < this.nodes.length; i = i + 1) {
|
|
364
|
-
const subnode = this.nodes[i];
|
|
365
|
-
if (subnode.length > 0 || subnode.objects.length > 0) {
|
|
366
|
-
return true;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
return false;
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
/**
|
|
373
|
-
* clear the quadtree
|
|
374
|
-
* @name clear
|
|
375
|
-
* @memberof QuadTree
|
|
376
|
-
* @param {Bounds} [bounds=this.bounds] - the bounds to be cleared
|
|
377
|
-
*/
|
|
378
|
-
clear(bounds) {
|
|
379
|
-
this.objects.length = 0;
|
|
380
|
-
|
|
381
|
-
for (let i = 0; i < this.nodes.length; i++) {
|
|
382
|
-
this.nodes[i].clear();
|
|
383
|
-
// recycle the quadTree object
|
|
384
|
-
QT_ARRAY_PUSH(this.nodes[i]);
|
|
385
|
-
}
|
|
386
|
-
// empty the array
|
|
387
|
-
this.nodes.length = 0;
|
|
388
|
-
|
|
389
|
-
// resize the root bounds if required
|
|
390
|
-
if (typeof bounds !== "undefined") {
|
|
391
|
-
this.bounds.setMinMax(bounds.min.x, bounds.min.y, bounds.max.x, bounds.max.y);
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
export { QuadTree as default };
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* melonJS Game Engine - v17.3.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 Vector2d from '../math/vector2.js';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @classdesc
|
|
12
|
-
* An object representing the result of an intersection.
|
|
13
|
-
* @property {Renderable} a The first object participating in the intersection
|
|
14
|
-
* @property {Renderable} b The second object participating in the intersection
|
|
15
|
-
* @property {number} overlap Magnitude of the overlap on the shortest colliding axis
|
|
16
|
-
* @property {Vector2d} overlapV The overlap vector (i.e. `overlapN.scale(overlap, overlap)`). If this vector is subtracted from the position of a, a and b will no longer be colliding
|
|
17
|
-
* @property {Vector2d} overlapN The shortest colliding axis (unit-vector)
|
|
18
|
-
* @property {boolean} aInB Whether the first object is entirely inside the second
|
|
19
|
-
* @property {boolean} bInA Whether the second object is entirely inside the first
|
|
20
|
-
* @property {number} indexShapeA The index of the colliding shape for the object a body
|
|
21
|
-
* @property {number} indexShapeB The index of the colliding shape for the object b body
|
|
22
|
-
* @name ResponseObject
|
|
23
|
-
* @public
|
|
24
|
-
*/
|
|
25
|
-
class ResponseObject {
|
|
26
|
-
constructor() {
|
|
27
|
-
this.a = null;
|
|
28
|
-
this.b = null;
|
|
29
|
-
this.overlapN = new Vector2d();
|
|
30
|
-
this.overlapV = new Vector2d();
|
|
31
|
-
this.aInB = true;
|
|
32
|
-
this.bInA = true;
|
|
33
|
-
this.indexShapeA = -1;
|
|
34
|
-
this.indexShapeB = -1;
|
|
35
|
-
this.overlap = Number.MAX_VALUE;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Set some values of the response back to their defaults. <br>
|
|
40
|
-
* Call this between tests if you are going to reuse a single <br>
|
|
41
|
-
* Response object for multiple intersection tests <br>
|
|
42
|
-
* (recommended as it will avoid allocating extra memory) <br>
|
|
43
|
-
* @name clear
|
|
44
|
-
* @public
|
|
45
|
-
* @returns {object} this object for chaining
|
|
46
|
-
*/
|
|
47
|
-
clear () {
|
|
48
|
-
this.aInB = true;
|
|
49
|
-
this.bInA = true;
|
|
50
|
-
this.overlap = Number.MAX_VALUE;
|
|
51
|
-
this.indexShapeA = -1;
|
|
52
|
-
this.indexShapeB = -1;
|
|
53
|
-
return this;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export { ResponseObject as default };
|