melonjs 14.5.0 → 15.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- package/README.md +6 -6
- package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
- package/dist/melonjs.mjs/_virtual/arraymultimap.js +1 -1
- package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
- package/dist/melonjs.mjs/_virtual/howler.js +1 -1
- package/dist/melonjs.mjs/_virtual/index.js +7 -3
- package/dist/melonjs.mjs/_virtual/index2.js +1 -1
- package/dist/melonjs.mjs/_virtual/multimap.js +1 -1
- package/dist/melonjs.mjs/_virtual/setmultimap.js +1 -1
- package/dist/melonjs.mjs/application/application.js +27 -17
- package/dist/melonjs.mjs/application/header.js +6 -5
- package/dist/melonjs.mjs/application/resize.js +20 -20
- package/dist/melonjs.mjs/application/settings.js +1 -1
- package/dist/melonjs.mjs/audio/audio.js +18 -20
- package/dist/melonjs.mjs/camera/camera2d.js +10 -10
- package/dist/melonjs.mjs/const.js +1 -1
- package/dist/melonjs.mjs/entity/entity.js +4 -4
- package/dist/melonjs.mjs/geometries/ellipse.js +6 -6
- package/dist/melonjs.mjs/geometries/line.js +9 -9
- package/dist/melonjs.mjs/geometries/path2d.js +56 -56
- package/dist/melonjs.mjs/geometries/point.js +2 -2
- package/dist/melonjs.mjs/geometries/poly.js +29 -29
- package/dist/melonjs.mjs/geometries/rectangle.js +8 -8
- package/dist/melonjs.mjs/geometries/roundrect.js +6 -6
- package/dist/melonjs.mjs/index.js +8 -6
- package/dist/melonjs.mjs/input/gamepad.js +30 -30
- package/dist/melonjs.mjs/input/input.js +2 -2
- package/dist/melonjs.mjs/input/keyboard.js +15 -15
- package/dist/melonjs.mjs/input/pointer.js +2 -2
- package/dist/melonjs.mjs/input/pointerevent.js +59 -59
- package/dist/melonjs.mjs/lang/console.js +3 -3
- package/dist/melonjs.mjs/lang/deprecated.js +2 -2
- package/dist/melonjs.mjs/level/level.js +9 -9
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +3 -3
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +31 -31
- package/dist/melonjs.mjs/level/tiled/TMXObject.js +8 -8
- package/dist/melonjs.mjs/level/tiled/TMXTile.js +8 -8
- package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +19 -19
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +15 -15
- package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +3 -3
- package/dist/melonjs.mjs/level/tiled/TMXUtils.js +46 -41
- package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +30 -30
- package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +21 -21
- package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +10 -10
- package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
- package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +6 -6
- package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
- package/dist/melonjs.mjs/loader/cache.js +1 -1
- package/dist/melonjs.mjs/loader/loader.js +7 -7
- package/dist/melonjs.mjs/loader/loadingscreen.js +2 -2
- package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
- package/dist/melonjs.mjs/loader/parser.js +13 -13
- package/dist/melonjs.mjs/loader/settings.js +3 -3
- package/dist/melonjs.mjs/math/color.js +25 -24
- package/dist/melonjs.mjs/math/math.js +2 -2
- package/dist/melonjs.mjs/math/matrix2.js +22 -22
- package/dist/melonjs.mjs/math/matrix3.js +52 -52
- package/dist/melonjs.mjs/math/observable_vector2.js +12 -12
- package/dist/melonjs.mjs/math/observable_vector3.js +22 -22
- package/dist/melonjs.mjs/math/vector2.js +11 -11
- package/dist/melonjs.mjs/math/vector3.js +21 -21
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +45 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +130 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +2 -2
- package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
- package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
- package/dist/melonjs.mjs/particles/emitter.js +5 -5
- package/dist/melonjs.mjs/particles/particle.js +8 -8
- package/dist/melonjs.mjs/particles/settings.js +3 -3
- package/dist/melonjs.mjs/physics/body.js +17 -17
- package/dist/melonjs.mjs/physics/bounds.js +12 -12
- package/dist/melonjs.mjs/physics/collision.js +3 -3
- package/dist/melonjs.mjs/physics/detector.js +14 -14
- package/dist/melonjs.mjs/physics/quadtree.js +19 -19
- package/dist/melonjs.mjs/physics/response.js +1 -1
- package/dist/melonjs.mjs/physics/sat.js +60 -60
- package/dist/melonjs.mjs/physics/world.js +4 -4
- package/dist/melonjs.mjs/plugin/plugin.js +11 -11
- package/dist/melonjs.mjs/renderable/collectable.js +2 -2
- package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
- package/dist/melonjs.mjs/renderable/container.js +77 -59
- package/dist/melonjs.mjs/renderable/dragndrop.js +5 -5
- package/dist/melonjs.mjs/renderable/imagelayer.js +7 -6
- package/dist/melonjs.mjs/renderable/light2d.js +6 -6
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +12 -12
- package/dist/melonjs.mjs/renderable/renderable.js +35 -13
- package/dist/melonjs.mjs/renderable/sprite.js +25 -25
- package/dist/melonjs.mjs/renderable/trigger.js +11 -9
- package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +97 -27
- package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +25 -25
- package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +83 -65
- package/dist/melonjs.mjs/state/stage.js +7 -7
- package/dist/melonjs.mjs/state/state.js +15 -15
- package/dist/melonjs.mjs/system/device.js +3 -3
- package/dist/melonjs.mjs/system/dom.js +1 -1
- package/dist/melonjs.mjs/system/event.js +2 -2
- package/dist/melonjs.mjs/system/platform.js +1 -1
- package/dist/melonjs.mjs/system/pooling.js +9 -9
- package/dist/melonjs.mjs/system/save.js +6 -6
- package/dist/melonjs.mjs/system/timer.js +16 -12
- package/dist/melonjs.mjs/text/bitmaptext.js +20 -20
- package/dist/melonjs.mjs/text/bitmaptextdata.js +22 -22
- package/dist/melonjs.mjs/text/glyph.js +3 -3
- package/dist/melonjs.mjs/text/text.js +63 -92
- package/dist/melonjs.mjs/text/textmetrics.js +15 -15
- package/dist/melonjs.mjs/text/textstyle.js +4 -6
- package/dist/melonjs.mjs/tweens/easing.js +4 -4
- package/dist/melonjs.mjs/tweens/interpolation.js +8 -8
- package/dist/melonjs.mjs/tweens/tween.js +11 -11
- package/dist/melonjs.mjs/utils/agent.js +6 -6
- package/dist/melonjs.mjs/utils/array.js +4 -4
- package/dist/melonjs.mjs/utils/file.js +1 -1
- package/dist/melonjs.mjs/utils/function.js +5 -5
- package/dist/melonjs.mjs/utils/string.js +3 -3
- package/dist/melonjs.mjs/utils/utils.js +16 -16
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +41 -119
- package/dist/melonjs.mjs/video/renderer.js +70 -14
- package/dist/melonjs.mjs/video/texture/atlas.js +39 -45
- package/dist/melonjs.mjs/video/texture/cache.js +9 -10
- package/dist/melonjs.mjs/video/texture/canvas_texture.js +63 -3
- package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
- package/dist/melonjs.mjs/video/video.js +2 -2
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +23 -19
- package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +80 -80
- package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +77 -0
- package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +252 -0
- package/dist/melonjs.mjs/video/webgl/compositors/webgl_compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/glshader.js +7 -7
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +2 -2
- package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +2 -2
- package/dist/melonjs.mjs/video/webgl/utils/attributes.js +2 -2
- package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/program.js +7 -7
- package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +4 -4
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +188 -181
- package/dist/melonjs.module.js +25040 -25193
- package/dist/types/application/application.d.ts +11 -8
- package/dist/types/audio/audio.d.ts +3 -3
- package/dist/types/entity/entity.d.ts +1 -1
- package/dist/types/index.d.ts +7 -4
- package/dist/types/input/input.d.ts +1 -1
- package/dist/types/input/keyboard.d.ts +1 -1
- package/dist/types/input/pointerevent.d.ts +6 -6
- package/dist/types/level/level.d.ts +2 -2
- package/dist/types/level/tiled/TMXLayer.d.ts +4 -4
- package/dist/types/level/tiled/TMXTileMap.d.ts +2 -2
- package/dist/types/level/tiled/TMXUtils.d.ts +5 -4
- package/dist/types/loader/loader.d.ts +2 -2
- package/dist/types/loader/settings.d.ts +2 -2
- package/dist/types/particles/emitter.d.ts +1 -1
- package/dist/types/physics/collision.d.ts +1 -1
- package/dist/types/physics/detector.d.ts +1 -1
- package/dist/types/plugin/plugin.d.ts +2 -2
- package/dist/types/renderable/container.d.ts +21 -17
- package/dist/types/renderable/renderable.d.ts +6 -0
- package/dist/types/renderable/sprite.d.ts +11 -11
- package/dist/types/renderable/trigger.d.ts +1 -1
- package/dist/types/renderable/ui/uibaseelement.d.ts +28 -6
- package/dist/types/renderable/ui/uispriteelement.d.ts +12 -14
- package/dist/types/renderable/ui/uitextbutton.d.ts +52 -12
- package/dist/types/state/stage.d.ts +1 -1
- package/dist/types/system/device.d.ts +1 -1
- package/dist/types/system/pooling.d.ts +3 -3
- package/dist/types/system/timer.d.ts +5 -5
- package/dist/types/text/bitmaptext.d.ts +1 -1
- package/dist/types/text/text.d.ts +7 -21
- package/dist/types/text/textstyle.d.ts +1 -1
- package/dist/types/utils/array.d.ts +2 -2
- package/dist/types/video/canvas/canvas_renderer.d.ts +8 -81
- package/dist/types/video/renderer.d.ts +48 -4
- package/dist/types/video/texture/atlas.d.ts +3 -3
- package/dist/types/video/texture/canvas_texture.d.ts +40 -0
- package/dist/types/video/webgl/buffer/vertex.d.ts +3 -3
- package/dist/types/video/webgl/compositors/compositor.d.ts +38 -32
- package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +22 -0
- package/dist/types/video/webgl/compositors/quad_compositor.d.ts +72 -0
- package/dist/types/video/webgl/glshader.d.ts +1 -1
- package/dist/types/video/webgl/webgl_renderer.d.ts +47 -37
- package/package.json +16 -17
- package/src/application/application.js +26 -16
- package/src/application/header.js +5 -4
- package/src/application/resize.js +19 -19
- package/src/audio/audio.js +17 -19
- package/src/camera/camera2d.js +9 -9
- package/src/entity/entity.js +3 -3
- package/src/geometries/ellipse.js +5 -5
- package/src/geometries/line.js +8 -8
- package/src/geometries/path2d.js +55 -55
- package/src/geometries/point.js +1 -1
- package/src/geometries/poly.js +28 -28
- package/src/geometries/rectangle.js +7 -7
- package/src/geometries/roundrect.js +5 -5
- package/src/index.js +9 -4
- package/src/input/gamepad.js +29 -29
- package/src/input/input.js +1 -1
- package/src/input/keyboard.js +14 -14
- package/src/input/pointer.js +1 -1
- package/src/input/pointerevent.js +52 -52
- package/src/lang/console.js +2 -2
- package/src/lang/deprecated.js +1 -1
- package/src/level/level.js +8 -8
- package/src/level/tiled/TMXGroup.js +2 -2
- package/src/level/tiled/TMXLayer.js +30 -30
- package/src/level/tiled/TMXObject.js +7 -7
- package/src/level/tiled/TMXTile.js +7 -7
- package/src/level/tiled/TMXTileMap.js +18 -18
- package/src/level/tiled/TMXTileset.js +14 -14
- package/src/level/tiled/TMXTilesetGroup.js +2 -2
- package/src/level/tiled/TMXUtils.js +45 -40
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +29 -29
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +20 -20
- package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +9 -9
- package/src/level/tiled/renderer/TMXRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXStaggeredRenderer.js +5 -5
- package/src/loader/loader.js +6 -6
- package/src/loader/loadingscreen.js +1 -1
- package/src/loader/parser.js +12 -12
- package/src/loader/settings.js +2 -2
- package/src/math/color.js +24 -23
- package/src/math/math.js +1 -1
- package/src/math/matrix2.js +21 -21
- package/src/math/matrix3.js +51 -51
- package/src/math/observable_vector2.js +11 -11
- package/src/math/observable_vector3.js +21 -21
- package/src/math/vector2.js +10 -10
- package/src/math/vector3.js +20 -20
- package/src/particles/emitter.js +4 -4
- package/src/particles/particle.js +7 -7
- package/src/particles/settings.js +2 -2
- package/src/physics/body.js +16 -16
- package/src/physics/bounds.js +11 -11
- package/src/physics/collision.js +2 -2
- package/src/physics/detector.js +13 -13
- package/src/physics/quadtree.js +18 -18
- package/src/physics/sat.js +59 -59
- package/src/physics/world.js +3 -3
- package/src/plugin/plugin.js +8 -8
- package/src/polyfill/index.js +0 -2
- package/src/renderable/collectable.js +1 -1
- package/src/renderable/container.js +76 -58
- package/src/renderable/dragndrop.js +4 -4
- package/src/renderable/imagelayer.js +6 -5
- package/src/renderable/light2d.js +5 -5
- package/src/renderable/nineslicesprite.js +11 -11
- package/src/renderable/renderable.js +34 -12
- package/src/renderable/sprite.js +24 -24
- package/src/renderable/trigger.js +10 -8
- package/src/renderable/ui/uibaseelement.js +96 -26
- package/src/renderable/ui/uispriteelement.js +24 -24
- package/src/renderable/ui/uitextbutton.js +85 -67
- package/src/state/stage.js +6 -6
- package/src/state/state.js +14 -14
- package/src/system/device.js +2 -2
- package/src/system/event.js +1 -1
- package/src/system/pooling.js +8 -8
- package/src/system/save.js +5 -5
- package/src/system/timer.js +15 -11
- package/src/text/bitmaptext.js +19 -19
- package/src/text/bitmaptextdata.js +21 -21
- package/src/text/glyph.js +2 -2
- package/src/text/text.js +62 -91
- package/src/text/textmetrics.js +14 -14
- package/src/text/textstyle.js +3 -5
- package/src/tweens/easing.js +3 -3
- package/src/tweens/interpolation.js +7 -7
- package/src/tweens/tween.js +10 -10
- package/src/utils/agent.js +5 -5
- package/src/utils/array.js +3 -3
- package/src/utils/function.js +4 -4
- package/src/utils/string.js +2 -2
- package/src/utils/utils.js +15 -15
- package/src/video/canvas/canvas_renderer.js +39 -117
- package/src/video/renderer.js +68 -12
- package/src/video/texture/atlas.js +38 -44
- package/src/video/texture/cache.js +6 -6
- package/src/video/texture/canvas_texture.js +62 -2
- package/src/video/video.js +1 -1
- package/src/video/webgl/buffer/vertex.js +22 -18
- package/src/video/webgl/compositors/compositor.js +79 -80
- package/src/video/webgl/compositors/primitive_compositor.js +68 -0
- package/src/video/webgl/compositors/{webgl_compositor.js → quad_compositor.js} +52 -109
- package/src/video/webgl/glshader.js +6 -6
- package/src/video/webgl/shaders/primitive.vert +2 -5
- package/src/video/webgl/shaders/quad.vert +3 -1
- package/src/video/webgl/utils/attributes.js +1 -1
- package/src/video/webgl/utils/program.js +6 -6
- package/src/video/webgl/utils/uniforms.js +3 -3
- package/src/video/webgl/webgl_renderer.js +186 -179
- package/dist/melonjs.mjs/_virtual/make-built-in.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-define-property.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-get-own-property-descriptor.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-get-own-property-names.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-get-own-property-symbols.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-property-is-enumerable.js +0 -10
- package/dist/melonjs.mjs/_virtual/shared.js +0 -10
- package/dist/melonjs.mjs/game.js +0 -29
- package/dist/melonjs.mjs/polyfill/console.js +0 -18
- package/dist/melonjs.mjs/polyfill/performance.js +0 -27
- package/dist/melonjs.mjs/polyfill/requestAnimationFrame.js +0 -46
- package/dist/melonjs.mjs/polyfill/roundrect.js +0 -242
- package/dist/melonjs.mjs/renderable/re_container.js +0 -1016
- package/dist/melonjs.mjs/video/utils/resize.js +0 -116
- package/dist/melonjs.mjs/video/webgl/webgl_compositor.js +0 -494
- package/src/polyfill/performance.js +0 -20
- package/src/polyfill/requestAnimationFrame.js +0 -39
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -112,7 +112,7 @@ import { EPSILON } from './math.js';
|
|
|
112
112
|
* @returns {Matrix3d} Reference to this object for method chaining
|
|
113
113
|
*/
|
|
114
114
|
setTransform(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {
|
|
115
|
-
|
|
115
|
+
let a = this.val;
|
|
116
116
|
|
|
117
117
|
a[0] = m00;
|
|
118
118
|
a[1] = m01;
|
|
@@ -154,7 +154,7 @@ import { EPSILON } from './math.js';
|
|
|
154
154
|
* @returns {Matrix2d} Reference to this object for method chaining
|
|
155
155
|
*/
|
|
156
156
|
fromMat2d(m) {
|
|
157
|
-
|
|
157
|
+
let b = m.val;
|
|
158
158
|
return this.setTransform(
|
|
159
159
|
b[0], b[3], b[6], 0,
|
|
160
160
|
b[1], b[4], b[7], 0,
|
|
@@ -172,14 +172,14 @@ import { EPSILON } from './math.js';
|
|
|
172
172
|
* @returns {Matrix3d} Reference to this object for method chaining
|
|
173
173
|
*/
|
|
174
174
|
multiply(m) {
|
|
175
|
-
|
|
176
|
-
|
|
175
|
+
let a = this.val;
|
|
176
|
+
let b = m.val;
|
|
177
177
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
178
|
+
let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
|
|
179
|
+
let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
|
|
180
|
+
let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
|
|
181
|
+
let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
|
|
182
|
+
let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
|
|
183
183
|
|
|
184
184
|
a[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
|
|
185
185
|
a[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
|
|
@@ -226,7 +226,7 @@ import { EPSILON } from './math.js';
|
|
|
226
226
|
* @returns {Matrix3d} Reference to this object for method chaining
|
|
227
227
|
*/
|
|
228
228
|
transpose() {
|
|
229
|
-
|
|
229
|
+
let a = this.val,
|
|
230
230
|
a01 = a[1],
|
|
231
231
|
a02 = a[2],
|
|
232
232
|
a03 = a[3],
|
|
@@ -257,30 +257,30 @@ import { EPSILON } from './math.js';
|
|
|
257
257
|
* @returns {Matrix3d} Reference to this object for method chaining
|
|
258
258
|
*/
|
|
259
259
|
invert() {
|
|
260
|
-
|
|
260
|
+
let a = this.val;
|
|
261
261
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
262
|
+
let a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
|
|
263
|
+
let a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
|
|
264
|
+
let a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
|
|
265
|
+
let a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
|
|
266
266
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
267
|
+
let b00 = a00 * a11 - a01 * a10;
|
|
268
|
+
let b01 = a00 * a12 - a02 * a10;
|
|
269
|
+
let b02 = a00 * a13 - a03 * a10;
|
|
270
|
+
let b03 = a01 * a12 - a02 * a11;
|
|
271
271
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
272
|
+
let b04 = a01 * a13 - a03 * a11;
|
|
273
|
+
let b05 = a02 * a13 - a03 * a12;
|
|
274
|
+
let b06 = a20 * a31 - a21 * a30;
|
|
275
|
+
let b07 = a20 * a32 - a22 * a30;
|
|
276
276
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
277
|
+
let b08 = a20 * a33 - a23 * a30;
|
|
278
|
+
let b09 = a21 * a32 - a22 * a31;
|
|
279
|
+
let b10 = a21 * a33 - a23 * a31;
|
|
280
|
+
let b11 = a22 * a33 - a23 * a32;
|
|
281
281
|
|
|
282
282
|
// Calculate the determinant
|
|
283
|
-
|
|
283
|
+
let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
|
|
284
284
|
|
|
285
285
|
if (!det)
|
|
286
286
|
{
|
|
@@ -317,12 +317,12 @@ import { EPSILON } from './math.js';
|
|
|
317
317
|
* @returns {Vector2d|Vector3d} result vector object.
|
|
318
318
|
*/
|
|
319
319
|
apply(v) {
|
|
320
|
-
|
|
320
|
+
let a = this.val,
|
|
321
321
|
x = v.x,
|
|
322
322
|
y = v.y,
|
|
323
323
|
z = (typeof v.z !== "undefined") ? v.z : 1;
|
|
324
324
|
|
|
325
|
-
|
|
325
|
+
let w = (a[3] * x + a[7] * y + a[11] * z + a[15]) || 1.0;
|
|
326
326
|
|
|
327
327
|
v.x = (a[0] * x + a[4] * y + a[8] * z + a[12]) / w;
|
|
328
328
|
v.y = (a[1] * x + a[5] * y + a[9] * z + a[13]) / w;
|
|
@@ -343,7 +343,7 @@ import { EPSILON } from './math.js';
|
|
|
343
343
|
*/
|
|
344
344
|
applyInverse(v) {
|
|
345
345
|
// invert the current matrix
|
|
346
|
-
|
|
346
|
+
let im = pool.pull("Matrix3d", this).invert();
|
|
347
347
|
|
|
348
348
|
// apply the inverted matrix
|
|
349
349
|
im.apply(v);
|
|
@@ -367,10 +367,10 @@ import { EPSILON } from './math.js';
|
|
|
367
367
|
* @returns {Matrix3d} Reference to this object for method chaining
|
|
368
368
|
*/
|
|
369
369
|
ortho(left, right, bottom, top, near, far) {
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
370
|
+
let a = this.val;
|
|
371
|
+
let leftRight = 1.0 / (left - right);
|
|
372
|
+
let bottomTop = 1.0 / (bottom - top);
|
|
373
|
+
let nearFar = 1.0 / (near - far);
|
|
374
374
|
|
|
375
375
|
a[0] = -2.0 * leftRight;
|
|
376
376
|
a[1] = 0.0;
|
|
@@ -402,7 +402,7 @@ import { EPSILON } from './math.js';
|
|
|
402
402
|
* @returns {Matrix3d} Reference to this object for method chaining
|
|
403
403
|
*/
|
|
404
404
|
scale(x, y = x, z = 0) {
|
|
405
|
-
|
|
405
|
+
let a = this.val;
|
|
406
406
|
|
|
407
407
|
a[0] = a[0] * x;
|
|
408
408
|
a[1] = a[1] * x;
|
|
@@ -465,20 +465,20 @@ import { EPSILON } from './math.js';
|
|
|
465
465
|
*/
|
|
466
466
|
rotate(angle, v) {
|
|
467
467
|
if (angle !== 0) {
|
|
468
|
-
|
|
468
|
+
let a = this.val,
|
|
469
469
|
x = v.x,
|
|
470
470
|
y = v.y,
|
|
471
471
|
z = v.z;
|
|
472
472
|
|
|
473
|
-
|
|
473
|
+
let len = Math.sqrt(x * x + y * y + z * z);
|
|
474
474
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
475
|
+
let s, c, t;
|
|
476
|
+
let a00, a01, a02, a03;
|
|
477
|
+
let a10, a11, a12, a13;
|
|
478
|
+
let a20, a21, a22, a23;
|
|
479
|
+
let b00, b01, b02;
|
|
480
|
+
let b10, b11, b12;
|
|
481
|
+
let b20, b21, b22;
|
|
482
482
|
|
|
483
483
|
if (len < EPSILON) {
|
|
484
484
|
return null;
|
|
@@ -552,8 +552,8 @@ import { EPSILON } from './math.js';
|
|
|
552
552
|
* @returns {Matrix3d} Reference to this object for method chaining
|
|
553
553
|
*/
|
|
554
554
|
translate() {
|
|
555
|
-
|
|
556
|
-
|
|
555
|
+
let a = this.val;
|
|
556
|
+
let _x, _y, _z;
|
|
557
557
|
|
|
558
558
|
if (arguments.length > 1 ) {
|
|
559
559
|
// x, y (, z)
|
|
@@ -582,7 +582,7 @@ import { EPSILON } from './math.js';
|
|
|
582
582
|
* @returns {boolean}
|
|
583
583
|
*/
|
|
584
584
|
isIdentity() {
|
|
585
|
-
|
|
585
|
+
let a = this.val;
|
|
586
586
|
|
|
587
587
|
return (
|
|
588
588
|
(a[0] === 1) &&
|
|
@@ -612,8 +612,8 @@ import { EPSILON } from './math.js';
|
|
|
612
612
|
* @returns {boolean} true if both are equals
|
|
613
613
|
*/
|
|
614
614
|
equals(m) {
|
|
615
|
-
|
|
616
|
-
|
|
615
|
+
let b = m.val;
|
|
616
|
+
let a = this.val;
|
|
617
617
|
|
|
618
618
|
return (
|
|
619
619
|
(a[0] === b[0]) &&
|
|
@@ -662,7 +662,7 @@ import { EPSILON } from './math.js';
|
|
|
662
662
|
* @returns {string}
|
|
663
663
|
*/
|
|
664
664
|
toString() {
|
|
665
|
-
|
|
665
|
+
let a = this.val;
|
|
666
666
|
|
|
667
667
|
return "me.Matrix3d(" +
|
|
668
668
|
a[0] + ", " + a[1] + ", " + a[2] + ", " + a[3] + ", " +
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -57,7 +57,7 @@ import { clamp } from './math.js';
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
set x(value) {
|
|
60
|
-
|
|
60
|
+
let ret = this.onUpdate.call(this.scope, value, this._y, this._x, this._y);
|
|
61
61
|
if (ret && "x" in ret) {
|
|
62
62
|
this._x = ret.x;
|
|
63
63
|
} else {
|
|
@@ -79,7 +79,7 @@ import { clamp } from './math.js';
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
set y(value) {
|
|
82
|
-
|
|
82
|
+
let ret = this.onUpdate.call(this.scope, this._x, value, this._x, this._y);
|
|
83
83
|
if (ret && "y" in ret) {
|
|
84
84
|
this._y = ret.y;
|
|
85
85
|
} else {
|
|
@@ -89,7 +89,7 @@ import { clamp } from './math.js';
|
|
|
89
89
|
|
|
90
90
|
/** @ignore */
|
|
91
91
|
_set(x, y) {
|
|
92
|
-
|
|
92
|
+
let ret = this.onUpdate.call(this.scope, x, y, this._x, this._y);
|
|
93
93
|
if (ret && "x" in ret && "y" in ret) {
|
|
94
94
|
this._x = ret.x;
|
|
95
95
|
this._y = ret.y;
|
|
@@ -347,19 +347,19 @@ import { clamp } from './math.js';
|
|
|
347
347
|
* @returns {ObservableVector2d} Reference to this object for method chaining
|
|
348
348
|
*/
|
|
349
349
|
rotate(angle, v) {
|
|
350
|
-
|
|
351
|
-
|
|
350
|
+
let cx = 0;
|
|
351
|
+
let cy = 0;
|
|
352
352
|
|
|
353
353
|
if (typeof v === "object") {
|
|
354
354
|
cx = v.x;
|
|
355
355
|
cy = v.y;
|
|
356
356
|
}
|
|
357
357
|
|
|
358
|
-
|
|
359
|
-
|
|
358
|
+
let x = this._x - cx;
|
|
359
|
+
let y = this._y - cy;
|
|
360
360
|
|
|
361
|
-
|
|
362
|
-
|
|
361
|
+
let c = Math.cos(angle);
|
|
362
|
+
let s = Math.sin(angle);
|
|
363
363
|
|
|
364
364
|
return this._set(x * c - y * s + cx, x * s + y * c + cy);
|
|
365
365
|
}
|
|
@@ -410,9 +410,9 @@ import { clamp } from './math.js';
|
|
|
410
410
|
* @returns {ObservableVector2d} Reference to this object for method chaining
|
|
411
411
|
*/
|
|
412
412
|
moveTowards(target, step) {
|
|
413
|
-
|
|
413
|
+
let angle = Math.atan2(target.y - this._y, target.x - this._x);
|
|
414
414
|
|
|
415
|
-
|
|
415
|
+
let distance = this.distance(target);
|
|
416
416
|
|
|
417
417
|
if (distance === 0 || (step >= 0 && distance <= step * step)) {
|
|
418
418
|
return target;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -58,7 +58,7 @@ import pool from '../system/pooling.js';
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
set x(value) {
|
|
61
|
-
|
|
61
|
+
let ret = this.onUpdate.call(this.scope, value, this._y, this._z, this._x, this._y, this._z);
|
|
62
62
|
if (ret && "x" in ret) {
|
|
63
63
|
this._x = ret.x;
|
|
64
64
|
} else {
|
|
@@ -79,7 +79,7 @@ import pool from '../system/pooling.js';
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
set y(value) {
|
|
82
|
-
|
|
82
|
+
let ret = this.onUpdate.call(this.scope, this._x, value, this._z, this._x, this._y, this._z);
|
|
83
83
|
if (ret && "y" in ret) {
|
|
84
84
|
this._y = ret.y;
|
|
85
85
|
} else {
|
|
@@ -102,7 +102,7 @@ import pool from '../system/pooling.js';
|
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
set z(value) {
|
|
105
|
-
|
|
105
|
+
let ret = this.onUpdate.call(this.scope, this._x, this._y, value, this._x, this._y, this._z);
|
|
106
106
|
if (ret && "z" in ret) {
|
|
107
107
|
this._z = ret.z;
|
|
108
108
|
} else {
|
|
@@ -114,7 +114,7 @@ import pool from '../system/pooling.js';
|
|
|
114
114
|
* @ignore
|
|
115
115
|
*/
|
|
116
116
|
_set(x, y, z) {
|
|
117
|
-
|
|
117
|
+
let ret = this.onUpdate.call(this.scope, x, y, z, this._x, this._y, this._z);
|
|
118
118
|
if (ret && "x" in ret && "y" in ret && "z" in ret) {
|
|
119
119
|
this._x = ret.x;
|
|
120
120
|
this._y = ret.y;
|
|
@@ -274,7 +274,7 @@ import pool from '../system/pooling.js';
|
|
|
274
274
|
* @returns {ObservableVector3d} Reference to this object for method chaining
|
|
275
275
|
*/
|
|
276
276
|
minV(v) {
|
|
277
|
-
|
|
277
|
+
let _vz = v.z || 0;
|
|
278
278
|
return this._set(
|
|
279
279
|
(this._x < v.x) ? this._x : v.x,
|
|
280
280
|
(this._y < v.y) ? this._y : v.y,
|
|
@@ -290,7 +290,7 @@ import pool from '../system/pooling.js';
|
|
|
290
290
|
* @returns {ObservableVector3d} Reference to this object for method chaining
|
|
291
291
|
*/
|
|
292
292
|
maxV(v) {
|
|
293
|
-
|
|
293
|
+
let _vz = v.z || 0;
|
|
294
294
|
return this._set(
|
|
295
295
|
(this._x > v.x) ? this._x : v.x,
|
|
296
296
|
(this._y > v.y) ? this._y : v.y,
|
|
@@ -415,8 +415,8 @@ import pool from '../system/pooling.js';
|
|
|
415
415
|
* @returns {ObservableVector3d} Reference to this object for method chaining
|
|
416
416
|
*/
|
|
417
417
|
rotate(angle, v) {
|
|
418
|
-
|
|
419
|
-
|
|
418
|
+
let cx = 0;
|
|
419
|
+
let cy = 0;
|
|
420
420
|
|
|
421
421
|
if (typeof v === "object") {
|
|
422
422
|
cx = v.x;
|
|
@@ -424,11 +424,11 @@ import pool from '../system/pooling.js';
|
|
|
424
424
|
}
|
|
425
425
|
|
|
426
426
|
// TODO also rotate on the z axis if the given vector is a 3d one
|
|
427
|
-
|
|
428
|
-
|
|
427
|
+
let x = this.x - cx;
|
|
428
|
+
let y = this.y - cy;
|
|
429
429
|
|
|
430
|
-
|
|
431
|
-
|
|
430
|
+
let c = Math.cos(angle);
|
|
431
|
+
let s = Math.sin(angle);
|
|
432
432
|
|
|
433
433
|
return this._set(x * c - y * s + cx, x * s + y * c + cy, this.z);
|
|
434
434
|
}
|
|
@@ -452,8 +452,8 @@ import pool from '../system/pooling.js';
|
|
|
452
452
|
* @returns {ObservableVector3d} Reference to this object for method chaining
|
|
453
453
|
*/
|
|
454
454
|
cross(v) {
|
|
455
|
-
|
|
456
|
-
|
|
455
|
+
let ax = this._x, ay = this._y, az = this._z;
|
|
456
|
+
let bx = v.x, by = v.y, bz = v.z;
|
|
457
457
|
|
|
458
458
|
return this._set(
|
|
459
459
|
ay * bz - az * by,
|
|
@@ -487,12 +487,12 @@ import pool from '../system/pooling.js';
|
|
|
487
487
|
* @returns {ObservableVector3d} Reference to this object for method chaining
|
|
488
488
|
*/
|
|
489
489
|
moveTowards(target, step) {
|
|
490
|
-
|
|
490
|
+
let angle = Math.atan2(target.y - this._y, target.x - this._x);
|
|
491
491
|
|
|
492
|
-
|
|
493
|
-
|
|
492
|
+
let dx = this._x - target.x;
|
|
493
|
+
let dy = this._y - target.y;
|
|
494
494
|
|
|
495
|
-
|
|
495
|
+
let distance = Math.sqrt(dx * dx + dy * dy);
|
|
496
496
|
|
|
497
497
|
if (distance === 0 || (step >= 0 && distance <= step * step)) {
|
|
498
498
|
return target;
|
|
@@ -513,9 +513,9 @@ import pool from '../system/pooling.js';
|
|
|
513
513
|
* @returns {number}
|
|
514
514
|
*/
|
|
515
515
|
distance(v) {
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
516
|
+
let dx = this._x - v.x;
|
|
517
|
+
let dy = this._y - v.y;
|
|
518
|
+
let dz = this._z - (v.z || 0);
|
|
519
519
|
return Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
520
520
|
}
|
|
521
521
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -317,7 +317,7 @@ import pool from '../system/pooling.js';
|
|
|
317
317
|
* @returns {boolean}
|
|
318
318
|
*/
|
|
319
319
|
equals() {
|
|
320
|
-
|
|
320
|
+
let _x, _y;
|
|
321
321
|
if (arguments.length === 2) {
|
|
322
322
|
// x, y
|
|
323
323
|
_x = arguments[0];
|
|
@@ -360,19 +360,19 @@ import pool from '../system/pooling.js';
|
|
|
360
360
|
* @returns {Vector2d} Reference to this object for method chaining
|
|
361
361
|
*/
|
|
362
362
|
rotate(angle, v) {
|
|
363
|
-
|
|
364
|
-
|
|
363
|
+
let cx = 0;
|
|
364
|
+
let cy = 0;
|
|
365
365
|
|
|
366
366
|
if (typeof v === "object") {
|
|
367
367
|
cx = v.x;
|
|
368
368
|
cy = v.y;
|
|
369
369
|
}
|
|
370
370
|
|
|
371
|
-
|
|
372
|
-
|
|
371
|
+
let x = this.x - cx;
|
|
372
|
+
let y = this.y - cy;
|
|
373
373
|
|
|
374
|
-
|
|
375
|
-
|
|
374
|
+
let c = Math.cos(angle);
|
|
375
|
+
let s = Math.sin(angle);
|
|
376
376
|
|
|
377
377
|
return this._set(x * c - y * s + cx, x * s + y * c + cy);
|
|
378
378
|
}
|
|
@@ -442,9 +442,9 @@ import pool from '../system/pooling.js';
|
|
|
442
442
|
* @returns {Vector2d} Reference to this object for method chaining
|
|
443
443
|
*/
|
|
444
444
|
moveTowards(target, step) {
|
|
445
|
-
|
|
445
|
+
let angle = Math.atan2(target.y - this.y, target.x - this.x);
|
|
446
446
|
|
|
447
|
-
|
|
447
|
+
let distance = this.distance(target);
|
|
448
448
|
|
|
449
449
|
if (distance === 0 || (step >= 0 && distance <= step * step)) {
|
|
450
450
|
return target;
|
|
@@ -464,7 +464,7 @@ import pool from '../system/pooling.js';
|
|
|
464
464
|
* @returns {number}
|
|
465
465
|
*/
|
|
466
466
|
distance(v) {
|
|
467
|
-
|
|
467
|
+
let dx = this.x - v.x, dy = this.y - v.y;
|
|
468
468
|
return Math.sqrt(dx * dx + dy * dy);
|
|
469
469
|
}
|
|
470
470
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -229,7 +229,7 @@ import pool from '../system/pooling.js';
|
|
|
229
229
|
* @returns {Vector3d} Reference to this object for method chaining
|
|
230
230
|
*/
|
|
231
231
|
minV(v) {
|
|
232
|
-
|
|
232
|
+
let _vz = v.z || 0;
|
|
233
233
|
return this._set((this.x < v.x) ? this.x : v.x, (this.y < v.y) ? this.y : v.y, (this.z < _vz) ? this.z : _vz);
|
|
234
234
|
}
|
|
235
235
|
|
|
@@ -241,7 +241,7 @@ import pool from '../system/pooling.js';
|
|
|
241
241
|
* @returns {Vector3d} Reference to this object for method chaining
|
|
242
242
|
*/
|
|
243
243
|
maxV(v) {
|
|
244
|
-
|
|
244
|
+
let _vz = v.z || 0;
|
|
245
245
|
return this._set((this.x > v.x) ? this.x : v.x, (this.y > v.y) ? this.y : v.y, (this.z > _vz) ? this.z : _vz);
|
|
246
246
|
}
|
|
247
247
|
|
|
@@ -334,7 +334,7 @@ import pool from '../system/pooling.js';
|
|
|
334
334
|
* @returns {boolean}
|
|
335
335
|
*/
|
|
336
336
|
equals() {
|
|
337
|
-
|
|
337
|
+
let _x, _y, _z;
|
|
338
338
|
if (arguments.length >= 2) {
|
|
339
339
|
// x, y, z
|
|
340
340
|
_x = arguments[0];
|
|
@@ -384,8 +384,8 @@ import pool from '../system/pooling.js';
|
|
|
384
384
|
* @returns {Vector3d} Reference to this object for method chaining
|
|
385
385
|
*/
|
|
386
386
|
rotate(angle, v) {
|
|
387
|
-
|
|
388
|
-
|
|
387
|
+
let cx = 0;
|
|
388
|
+
let cy = 0;
|
|
389
389
|
|
|
390
390
|
if (typeof v === "object") {
|
|
391
391
|
cx = v.x;
|
|
@@ -393,11 +393,11 @@ import pool from '../system/pooling.js';
|
|
|
393
393
|
}
|
|
394
394
|
|
|
395
395
|
// TODO also rotate on the z axis if the given vector is a 3d one
|
|
396
|
-
|
|
397
|
-
|
|
396
|
+
let x = this.x - cx;
|
|
397
|
+
let y = this.y - cy;
|
|
398
398
|
|
|
399
|
-
|
|
400
|
-
|
|
399
|
+
let c = Math.cos(angle);
|
|
400
|
+
let s = Math.sin(angle);
|
|
401
401
|
|
|
402
402
|
return this._set(x * c - y * s + cx, x * s + y * c + cy, this.z);
|
|
403
403
|
}
|
|
@@ -421,8 +421,8 @@ import pool from '../system/pooling.js';
|
|
|
421
421
|
* @returns {Vector3d} Reference to this object for method chaining
|
|
422
422
|
*/
|
|
423
423
|
cross(v) {
|
|
424
|
-
|
|
425
|
-
|
|
424
|
+
let ax = this.x, ay = this.y, az = this.z;
|
|
425
|
+
let bx = v.x, by = v.y, bz = v.z;
|
|
426
426
|
|
|
427
427
|
this.x = ay * bz - az * by;
|
|
428
428
|
this.y = az * bx - ax * bz;
|
|
@@ -475,12 +475,12 @@ import pool from '../system/pooling.js';
|
|
|
475
475
|
* @returns {Vector3d} Reference to this object for method chaining
|
|
476
476
|
*/
|
|
477
477
|
moveTowards(target, step) {
|
|
478
|
-
|
|
478
|
+
let angle = Math.atan2(target.y - this.y, target.x - this.x);
|
|
479
479
|
|
|
480
|
-
|
|
481
|
-
|
|
480
|
+
let dx = this.x - target.x;
|
|
481
|
+
let dy = this.y - target.y;
|
|
482
482
|
|
|
483
|
-
|
|
483
|
+
let distance = Math.sqrt(dx * dx + dy * dy);
|
|
484
484
|
|
|
485
485
|
if (distance === 0 || (step >= 0 && distance <= step * step)) {
|
|
486
486
|
return target;
|
|
@@ -500,9 +500,9 @@ import pool from '../system/pooling.js';
|
|
|
500
500
|
* @returns {number}
|
|
501
501
|
*/
|
|
502
502
|
distance(v) {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
503
|
+
let dx = this.x - v.x;
|
|
504
|
+
let dy = this.y - v.y;
|
|
505
|
+
let dz = this.z - (v.z || 0);
|
|
506
506
|
return Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
507
507
|
}
|
|
508
508
|
|
|
@@ -525,7 +525,7 @@ import pool from '../system/pooling.js';
|
|
|
525
525
|
* @returns {Vector3d} Reference to this object for method chaining
|
|
526
526
|
*/
|
|
527
527
|
project(v) {
|
|
528
|
-
|
|
528
|
+
let ratio = this.dot(v) / v.length2();
|
|
529
529
|
return this.scale(ratio, ratio, ratio);
|
|
530
530
|
}
|
|
531
531
|
|
|
@@ -538,7 +538,7 @@ import pool from '../system/pooling.js';
|
|
|
538
538
|
* @returns {Vector3d} Reference to this object for method chaining
|
|
539
539
|
*/
|
|
540
540
|
projectN(v) {
|
|
541
|
-
|
|
541
|
+
let ratio = this.dot(v) / v.length2();
|
|
542
542
|
return this.scale(ratio, ratio, ratio);
|
|
543
543
|
}
|
|
544
544
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v15.1.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 - 2023 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
import { Multimap } from './multimap.js';
|
|
9
|
+
|
|
10
|
+
class ArrayMultimap extends Multimap {
|
|
11
|
+
constructor(iterable) {
|
|
12
|
+
super(new ArrayOperator(), iterable);
|
|
13
|
+
}
|
|
14
|
+
get [Symbol.toStringTag]() {
|
|
15
|
+
return "ArrayMultimap";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
class ArrayOperator {
|
|
19
|
+
create() {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
clone(collection) {
|
|
23
|
+
return collection.slice();
|
|
24
|
+
}
|
|
25
|
+
add(value, collection) {
|
|
26
|
+
collection.push(value);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
size(collection) {
|
|
30
|
+
return collection.length;
|
|
31
|
+
}
|
|
32
|
+
delete(value, collection) {
|
|
33
|
+
const index = collection.indexOf(value);
|
|
34
|
+
if (index > -1) {
|
|
35
|
+
collection.splice(index, 1);
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
has(value, collection) {
|
|
41
|
+
return collection.includes(value);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { ArrayMultimap };
|