melonjs 15.2.1 → 15.4.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.
Files changed (291) hide show
  1. package/README.md +1 -1
  2. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  3. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  5. package/dist/melonjs.mjs/_virtual/index.js +1 -1
  6. package/dist/melonjs.mjs/application/application.js +75 -23
  7. package/dist/melonjs.mjs/application/header.js +2 -2
  8. package/dist/melonjs.mjs/application/resize.js +13 -11
  9. package/dist/melonjs.mjs/application/settings.js +37 -1
  10. package/dist/melonjs.mjs/audio/audio.js +4 -6
  11. package/dist/melonjs.mjs/camera/camera2d.js +12 -14
  12. package/dist/melonjs.mjs/const.js +1 -1
  13. package/dist/melonjs.mjs/entity/entity.js +3 -4
  14. package/dist/melonjs.mjs/geometries/ellipse.js +26 -59
  15. package/dist/melonjs.mjs/geometries/line.js +18 -25
  16. package/dist/melonjs.mjs/geometries/path2d.js +16 -13
  17. package/dist/melonjs.mjs/geometries/point.js +8 -16
  18. package/dist/melonjs.mjs/geometries/poly.js +40 -97
  19. package/dist/melonjs.mjs/geometries/rectangle.js +37 -91
  20. package/dist/melonjs.mjs/geometries/roundrect.js +26 -35
  21. package/dist/melonjs.mjs/index.js +6 -6
  22. package/dist/melonjs.mjs/input/gamepad.js +1 -1
  23. package/dist/melonjs.mjs/input/input.js +1 -1
  24. package/dist/melonjs.mjs/input/keyboard.js +3 -3
  25. package/dist/melonjs.mjs/input/pointer.js +4 -4
  26. package/dist/melonjs.mjs/input/pointerevent.js +6 -7
  27. package/dist/melonjs.mjs/lang/console.js +1 -1
  28. package/dist/melonjs.mjs/lang/deprecated.js +2 -2
  29. package/dist/melonjs.mjs/level/level.js +1 -1
  30. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
  31. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +16 -33
  32. package/dist/melonjs.mjs/level/tiled/TMXObject.js +3 -4
  33. package/dist/melonjs.mjs/level/tiled/TMXTile.js +4 -4
  34. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +3 -3
  35. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +4 -7
  36. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +2 -2
  37. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +37 -47
  38. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  39. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +3 -3
  40. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +2 -2
  41. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +2 -2
  42. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
  43. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +2 -2
  44. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  45. package/dist/melonjs.mjs/loader/cache.js +1 -1
  46. package/dist/melonjs.mjs/loader/loader.js +1 -1
  47. package/dist/melonjs.mjs/loader/loadingscreen.js +1 -1
  48. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  49. package/dist/melonjs.mjs/loader/parser.js +4 -5
  50. package/dist/melonjs.mjs/loader/settings.js +1 -1
  51. package/dist/melonjs.mjs/math/color.js +5 -5
  52. package/dist/melonjs.mjs/math/math.js +1 -1
  53. package/dist/melonjs.mjs/math/matrix2.js +5 -59
  54. package/dist/melonjs.mjs/math/matrix3.js +82 -141
  55. package/dist/melonjs.mjs/math/observable_vector2.js +7 -7
  56. package/dist/melonjs.mjs/math/observable_vector3.js +5 -5
  57. package/dist/melonjs.mjs/math/vector2.js +7 -91
  58. package/dist/melonjs.mjs/math/vector3.js +6 -90
  59. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +1 -1
  60. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +1 -1
  61. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  62. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
  63. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  64. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  65. package/dist/melonjs.mjs/particles/emitter.js +2 -2
  66. package/dist/melonjs.mjs/particles/particle.js +2 -2
  67. package/dist/melonjs.mjs/particles/settings.js +1 -1
  68. package/dist/melonjs.mjs/physics/body.js +22 -20
  69. package/dist/melonjs.mjs/physics/bounds.js +27 -33
  70. package/dist/melonjs.mjs/physics/collision.js +5 -5
  71. package/dist/melonjs.mjs/physics/detector.js +10 -10
  72. package/dist/melonjs.mjs/physics/quadtree.js +5 -5
  73. package/dist/melonjs.mjs/physics/response.js +1 -1
  74. package/dist/melonjs.mjs/physics/sat.js +3 -4
  75. package/dist/melonjs.mjs/physics/world.js +6 -9
  76. package/dist/melonjs.mjs/plugin/plugin.js +3 -3
  77. package/dist/melonjs.mjs/renderable/collectable.js +2 -2
  78. package/dist/melonjs.mjs/renderable/colorlayer.js +4 -4
  79. package/dist/melonjs.mjs/renderable/container.js +25 -25
  80. package/dist/melonjs.mjs/renderable/draggable.js +1 -1
  81. package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
  82. package/dist/melonjs.mjs/renderable/imagelayer.js +4 -4
  83. package/dist/melonjs.mjs/renderable/light2d.js +3 -3
  84. package/dist/melonjs.mjs/renderable/nineslicesprite.js +2 -2
  85. package/dist/melonjs.mjs/renderable/renderable.js +31 -39
  86. package/dist/melonjs.mjs/renderable/sprite.js +3 -3
  87. package/dist/melonjs.mjs/renderable/text/bitmaptext.js +421 -0
  88. package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +195 -0
  89. package/dist/melonjs.mjs/renderable/text/glyph.js +65 -0
  90. package/dist/melonjs.mjs/renderable/text/text.js +422 -0
  91. package/dist/melonjs.mjs/renderable/text/textmetrics.js +175 -0
  92. package/dist/melonjs.mjs/renderable/text/textstyle.js +21 -0
  93. package/dist/melonjs.mjs/renderable/trigger.js +10 -10
  94. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +7 -7
  95. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +7 -7
  96. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +3 -3
  97. package/dist/melonjs.mjs/state/stage.js +13 -14
  98. package/dist/melonjs.mjs/state/state.js +4 -51
  99. package/dist/melonjs.mjs/system/device.js +51 -10
  100. package/dist/melonjs.mjs/system/dom.js +1 -1
  101. package/dist/melonjs.mjs/system/event.js +46 -2
  102. package/dist/melonjs.mjs/system/platform.js +18 -18
  103. package/dist/melonjs.mjs/system/pooling.js +10 -10
  104. package/dist/melonjs.mjs/system/save.js +1 -1
  105. package/dist/melonjs.mjs/system/timer.js +1 -1
  106. package/dist/melonjs.mjs/text/bitmaptext.js +1 -1
  107. package/dist/melonjs.mjs/text/bitmaptextdata.js +3 -6
  108. package/dist/melonjs.mjs/text/glyph.js +1 -1
  109. package/dist/melonjs.mjs/text/text.js +1 -1
  110. package/dist/melonjs.mjs/text/textmetrics.js +1 -1
  111. package/dist/melonjs.mjs/text/textstyle.js +1 -1
  112. package/dist/melonjs.mjs/tweens/easing.js +1 -1
  113. package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
  114. package/dist/melonjs.mjs/tweens/tween.js +2 -2
  115. package/dist/melonjs.mjs/utils/agent.js +1 -1
  116. package/dist/melonjs.mjs/utils/array.js +1 -1
  117. package/dist/melonjs.mjs/utils/file.js +1 -1
  118. package/dist/melonjs.mjs/utils/function.js +2 -3
  119. package/dist/melonjs.mjs/utils/string.js +1 -1
  120. package/dist/melonjs.mjs/utils/utils.js +1 -1
  121. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +5 -18
  122. package/dist/melonjs.mjs/video/renderer.js +17 -30
  123. package/dist/melonjs.mjs/video/texture/atlas.js +13 -13
  124. package/dist/melonjs.mjs/video/texture/cache.js +1 -1
  125. package/dist/melonjs.mjs/video/texture/canvas_texture.js +15 -15
  126. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  127. package/dist/melonjs.mjs/video/video.js +5 -29
  128. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +3 -3
  129. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +13 -14
  130. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +5 -5
  131. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +2 -3
  132. package/dist/melonjs.mjs/video/webgl/glshader.js +2 -2
  133. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  134. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  136. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
  137. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
  138. package/dist/melonjs.mjs/video/webgl/utils/precision.js +4 -4
  139. package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
  140. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  141. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
  142. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +62 -67
  143. package/dist/melonjs.module.js +1272 -1713
  144. package/dist/types/application/application.d.ts +32 -31
  145. package/dist/types/application/header.d.ts +2 -2
  146. package/dist/types/application/settings.d.ts +80 -16
  147. package/dist/types/audio/audio.d.ts +4 -6
  148. package/dist/types/camera/camera2d.d.ts +13 -16
  149. package/dist/types/entity/entity.d.ts +0 -1
  150. package/dist/types/geometries/ellipse.d.ts +18 -50
  151. package/dist/types/geometries/path2d.d.ts +1 -1
  152. package/dist/types/geometries/point.d.ts +5 -13
  153. package/dist/types/geometries/poly.d.ts +26 -75
  154. package/dist/types/geometries/rectangle.d.ts +12 -58
  155. package/dist/types/geometries/roundrect.d.ts +2 -11
  156. package/dist/types/index.d.ts +3 -3
  157. package/dist/types/input/gamepad.d.ts +31 -31
  158. package/dist/types/input/keyboard.d.ts +105 -105
  159. package/dist/types/input/pointer.d.ts +21 -21
  160. package/dist/types/input/pointerevent.d.ts +6 -6
  161. package/dist/types/level/tiled/TMXLayer.d.ts +1 -1
  162. package/dist/types/level/tiled/TMXUtils.d.ts +4 -6
  163. package/dist/types/math/matrix2.d.ts +9 -63
  164. package/dist/types/math/matrix3.d.ts +9 -68
  165. package/dist/types/math/observable_vector2.d.ts +2 -2
  166. package/dist/types/math/observable_vector3.d.ts +2 -2
  167. package/dist/types/math/vector2.d.ts +8 -92
  168. package/dist/types/math/vector3.d.ts +8 -92
  169. package/dist/types/particles/settings.d.ts +29 -29
  170. package/dist/types/physics/body.d.ts +10 -8
  171. package/dist/types/physics/bounds.d.ts +24 -30
  172. package/dist/types/physics/collision.d.ts +12 -12
  173. package/dist/types/physics/detector.d.ts +1 -1
  174. package/dist/types/physics/world.d.ts +4 -7
  175. package/dist/types/renderable/container.d.ts +19 -19
  176. package/dist/types/renderable/imagelayer.d.ts +6 -6
  177. package/dist/types/renderable/light2d.d.ts +7 -7
  178. package/dist/types/renderable/renderable.d.ts +10 -18
  179. package/dist/types/renderable/text/bitmaptext.d.ts +151 -0
  180. package/dist/types/renderable/text/bitmaptextdata.d.ts +35 -0
  181. package/dist/types/renderable/text/glyph.d.ts +28 -0
  182. package/dist/types/renderable/text/text.d.ts +159 -0
  183. package/dist/types/renderable/text/textmetrics.d.ts +47 -0
  184. package/dist/types/renderable/text/textstyle.d.ts +5 -0
  185. package/dist/types/renderable/ui/uibaseelement.d.ts +0 -1
  186. package/dist/types/renderable/ui/uispriteelement.d.ts +0 -1
  187. package/dist/types/renderable/ui/uitextbutton.d.ts +2 -7
  188. package/dist/types/state/stage.d.ts +3 -2
  189. package/dist/types/state/state.d.ts +11 -11
  190. package/dist/types/system/device.d.ts +16 -9
  191. package/dist/types/system/event.d.ts +40 -0
  192. package/dist/types/system/platform.d.ts +17 -17
  193. package/dist/types/utils/function.d.ts +1 -2
  194. package/dist/types/video/canvas/canvas_renderer.d.ts +0 -23
  195. package/dist/types/video/renderer.d.ts +16 -43
  196. package/dist/types/video/texture/canvas_texture.d.ts +14 -14
  197. package/dist/types/video/video.d.ts +4 -38
  198. package/dist/types/video/webgl/buffer/vertex.d.ts +2 -2
  199. package/dist/types/video/webgl/compositors/compositor.d.ts +24 -13
  200. package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +0 -1
  201. package/dist/types/video/webgl/compositors/quad_compositor.d.ts +0 -1
  202. package/dist/types/video/webgl/utils/precision.d.ts +1 -1
  203. package/dist/types/video/webgl/webgl_renderer.d.ts +48 -84
  204. package/package.json +15 -15
  205. package/src/application/application.js +73 -21
  206. package/src/application/header.js +1 -1
  207. package/src/application/resize.js +11 -9
  208. package/src/application/settings.js +36 -0
  209. package/src/audio/audio.js +3 -5
  210. package/src/camera/camera2d.js +11 -13
  211. package/src/entity/entity.js +2 -3
  212. package/src/geometries/ellipse.js +25 -58
  213. package/src/geometries/line.js +17 -24
  214. package/src/geometries/path2d.js +15 -12
  215. package/src/geometries/point.js +7 -15
  216. package/src/geometries/poly.js +39 -96
  217. package/src/geometries/rectangle.js +36 -90
  218. package/src/geometries/roundrect.js +25 -34
  219. package/src/index.js +4 -4
  220. package/src/input/keyboard.js +2 -2
  221. package/src/input/pointer.js +3 -3
  222. package/src/input/pointerevent.js +5 -6
  223. package/src/lang/deprecated.js +1 -1
  224. package/src/level/tiled/TMXLayer.js +15 -32
  225. package/src/level/tiled/TMXObject.js +2 -3
  226. package/src/level/tiled/TMXTile.js +3 -3
  227. package/src/level/tiled/TMXTileMap.js +2 -2
  228. package/src/level/tiled/TMXTileset.js +3 -6
  229. package/src/level/tiled/TMXTilesetGroup.js +1 -1
  230. package/src/level/tiled/TMXUtils.js +36 -46
  231. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -2
  232. package/src/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  233. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  234. package/src/level/tiled/renderer/TMXRenderer.js +1 -1
  235. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  236. package/src/loader/parser.js +3 -4
  237. package/src/math/color.js +4 -4
  238. package/src/math/matrix2.js +4 -58
  239. package/src/math/matrix3.js +81 -140
  240. package/src/math/observable_vector2.js +6 -6
  241. package/src/math/observable_vector3.js +4 -4
  242. package/src/math/vector2.js +6 -90
  243. package/src/math/vector3.js +5 -89
  244. package/src/particles/emitter.js +1 -1
  245. package/src/particles/particle.js +1 -1
  246. package/src/physics/body.js +21 -19
  247. package/src/physics/bounds.js +26 -32
  248. package/src/physics/collision.js +4 -4
  249. package/src/physics/detector.js +9 -9
  250. package/src/physics/quadtree.js +4 -4
  251. package/src/physics/sat.js +2 -3
  252. package/src/physics/world.js +5 -8
  253. package/src/polyfill/roundrect.js +163 -163
  254. package/src/renderable/collectable.js +1 -1
  255. package/src/renderable/colorlayer.js +3 -3
  256. package/src/renderable/container.js +24 -24
  257. package/src/renderable/imagelayer.js +3 -3
  258. package/src/renderable/light2d.js +2 -2
  259. package/src/renderable/nineslicesprite.js +1 -1
  260. package/src/renderable/renderable.js +30 -38
  261. package/src/renderable/sprite.js +2 -2
  262. package/src/{text → renderable/text}/bitmaptext.js +8 -8
  263. package/src/{text → renderable/text}/bitmaptextdata.js +4 -7
  264. package/src/{text → renderable/text}/glyph.js +1 -1
  265. package/src/{text → renderable/text}/text.js +16 -17
  266. package/src/{text → renderable/text}/textmetrics.js +2 -2
  267. package/src/renderable/trigger.js +9 -9
  268. package/src/renderable/ui/uibaseelement.js +6 -6
  269. package/src/renderable/ui/uispriteelement.js +6 -6
  270. package/src/renderable/ui/uitextbutton.js +2 -2
  271. package/src/state/stage.js +12 -13
  272. package/src/state/state.js +2 -61
  273. package/src/system/device.js +50 -9
  274. package/src/system/event.js +44 -0
  275. package/src/system/platform.js +18 -18
  276. package/src/system/pooling.js +9 -9
  277. package/src/tweens/tween.js +1 -1
  278. package/src/utils/function.js +1 -2
  279. package/src/video/canvas/canvas_renderer.js +4 -17
  280. package/src/video/renderer.js +16 -29
  281. package/src/video/texture/atlas.js +12 -12
  282. package/src/video/texture/canvas_texture.js +14 -14
  283. package/src/video/video.js +7 -28
  284. package/src/video/webgl/buffer/vertex.js +2 -2
  285. package/src/video/webgl/compositors/compositor.js +12 -13
  286. package/src/video/webgl/compositors/primitive_compositor.js +4 -4
  287. package/src/video/webgl/compositors/quad_compositor.js +1 -2
  288. package/src/video/webgl/glshader.js +1 -1
  289. package/src/video/webgl/utils/precision.js +3 -3
  290. package/src/video/webgl/webgl_renderer.js +61 -66
  291. /package/src/{text → renderable/text}/textstyle.js +0 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.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
@@ -19,7 +19,7 @@ import pool from '../system/pooling.js';
19
19
  *
20
20
  * A polygon's `winding` is clockwise if its vertices (points) are declared turning to the right. The image above shows COUNTERCLOCKWISE winding.
21
21
  */
22
- class Polygon {
22
+ class Polygon {
23
23
  /**
24
24
  * @param {number} x - origin point of the Polygon
25
25
  * @param {number} y - origin point of the Polygon
@@ -28,10 +28,7 @@ import pool from '../system/pooling.js';
28
28
  constructor(x, y, points) {
29
29
  /**
30
30
  * origin point of the Polygon
31
- * @public
32
31
  * @type {Vector2d}
33
- * @name pos
34
- * @memberof Polygon
35
32
  */
36
33
  this.pos = pool.pull("Vector2d");
37
34
 
@@ -39,18 +36,13 @@ import pool from '../system/pooling.js';
39
36
  * The bounding rectangle for this shape
40
37
  * @ignore
41
38
  * @member {Bounds}
42
- * @name _bounds
43
- * @memberof Polygon
44
39
  */
45
40
  this._bounds;
46
41
 
47
42
  /**
48
43
  * Array of points defining the Polygon <br>
49
44
  * Note: If you manually change `points`, you **must** call `recalc`afterwards so that the changes get applied correctly.
50
- * @public
51
45
  * @type {Vector2d[]}
52
- * @name points
53
- * @memberof Polygon
54
46
  */
55
47
  this.points = [];
56
48
 
@@ -88,8 +80,6 @@ import pool from '../system/pooling.js';
88
80
 
89
81
  /**
90
82
  * set new value to the Polygon
91
- * @name setShape
92
- * @memberof Polygon
93
83
  * @param {number} x - position of the Polygon
94
84
  * @param {number} y - position of the Polygon
95
85
  * @param {Vector2d[]|number[]} points - array of vector or vertice defining the Polygon
@@ -103,8 +93,6 @@ import pool from '../system/pooling.js';
103
93
 
104
94
  /**
105
95
  * set the vertices defining this Polygon
106
- * @name setVertices
107
- * @memberof Polygon
108
96
  * @param {Vector2d[]} vertices - array of vector or vertice defining the Polygon
109
97
  * @returns {Polygon} this instance for objecf chaining
110
98
  */
@@ -121,7 +109,7 @@ import pool from '../system/pooling.js';
121
109
  if (typeof vertices[0] === "object") {
122
110
  // array of {x,y} object
123
111
  vertices.forEach((vertice) => {
124
- this.points.push(pool.pull("Vector2d", vertice.x, vertice.y));
112
+ this.points.push(pool.pull("Vector2d", vertice.x, vertice.y));
125
113
  });
126
114
 
127
115
  } else {
@@ -142,8 +130,6 @@ import pool from '../system/pooling.js';
142
130
 
143
131
  /**
144
132
  * apply the given transformation matrix to this Polygon
145
- * @name transform
146
- * @memberof Polygon
147
133
  * @param {Matrix2d} m - the transformation matrix
148
134
  * @returns {Polygon} Reference to this object for method chaining
149
135
  */
@@ -160,8 +146,6 @@ import pool from '../system/pooling.js';
160
146
 
161
147
  /**
162
148
  * apply an isometric projection to this shape
163
- * @name toIso
164
- * @memberof Polygon
165
149
  * @returns {Polygon} Reference to this object for method chaining
166
150
  */
167
151
  toIso() {
@@ -169,9 +153,7 @@ import pool from '../system/pooling.js';
169
153
  }
170
154
 
171
155
  /**
172
- * apply a 2d projection to this shape
173
- * @name to2d
174
- * @memberof Polygon
156
+ * apply a 2d projection to this shapen
175
157
  * @returns {Polygon} Reference to this object for method chaining
176
158
  */
177
159
  to2d() {
@@ -180,8 +162,6 @@ import pool from '../system/pooling.js';
180
162
 
181
163
  /**
182
164
  * Rotate this Polygon (counter-clockwise) by the specified angle (in radians).
183
- * @name rotate
184
- * @memberof Polygon
185
165
  * @param {number} angle - The angle to rotate (in radians)
186
166
  * @param {Vector2d|ObservableVector2d} [v] - an optional point to rotate around
187
167
  * @returns {Polygon} Reference to this object for method chaining
@@ -201,8 +181,6 @@ import pool from '../system/pooling.js';
201
181
 
202
182
  /**
203
183
  * Scale this Polygon by the given scalar.
204
- * @name scale
205
- * @memberof Polygon
206
184
  * @param {number} x
207
185
  * @param {number} [y=x]
208
186
  * @returns {Polygon} Reference to this object for method chaining
@@ -220,8 +198,6 @@ import pool from '../system/pooling.js';
220
198
 
221
199
  /**
222
200
  * Scale this Polygon by the given vector
223
- * @name scaleV
224
- * @memberof Polygon
225
201
  * @param {Vector2d} v
226
202
  * @returns {Polygon} Reference to this object for method chaining
227
203
  */
@@ -232,12 +208,9 @@ import pool from '../system/pooling.js';
232
208
  /**
233
209
  * Computes the calculated collision polygon.
234
210
  * This **must** be called if the `points` array, `angle`, or `offset` is modified manually.
235
- * @name recalc
236
- * @memberof Polygon
237
211
  * @returns {Polygon} Reference to this object for method chaining
238
212
  */
239
213
  recalc() {
240
- let i;
241
214
  let edges = this.edges;
242
215
  let normals = this.normals;
243
216
  let indices = this.indices;
@@ -251,7 +224,7 @@ import pool from '../system/pooling.js';
251
224
  }
252
225
 
253
226
  // Calculate the edges/normals
254
- for (i = 0; i < len; i++) {
227
+ for (let i = 0; i < len; i++) {
255
228
  if (edges[i] === undefined) {
256
229
  edges[i] = pool.pull("Vector2d");
257
230
  }
@@ -275,8 +248,6 @@ import pool from '../system/pooling.js';
275
248
 
276
249
  /**
277
250
  * returns a list of indices for all triangles defined in this polygon
278
- * @name getIndices
279
- * @memberof Polygon
280
251
  * @returns {Array} an array of vertex indices for all triangles forming this polygon.
281
252
  */
282
253
  getIndices() {
@@ -288,8 +259,6 @@ import pool from '../system/pooling.js';
288
259
 
289
260
  /**
290
261
  * Returns true if the vertices composing this polygon form a convex shape (vertices must be in clockwise order).
291
- * @name isConvex
292
- * @memberof Polygon
293
262
  * @returns {boolean} true if the vertices are convex, false if not, null if not computable
294
263
  */
295
264
  isConvex() {
@@ -298,20 +267,16 @@ import pool from '../system/pooling.js';
298
267
 
299
268
  let flag = 0,
300
269
  vertices = this.points,
301
- n = vertices.length,
302
- i,
303
- j,
304
- k,
305
- z;
270
+ n = vertices.length;
306
271
 
307
272
  if (n < 3) {
308
273
  return null;
309
274
  }
310
275
 
311
- for (i = 0; i < n; i++) {
312
- j = (i + 1) % n;
313
- k = (i + 2) % n;
314
- z = (vertices[j].x - vertices[i].x) * (vertices[k].y - vertices[j].y);
276
+ for (let i = 0; i < n; i++) {
277
+ let j = (i + 1) % n;
278
+ let k = (i + 2) % n;
279
+ let z = (vertices[j].x - vertices[i].x) * (vertices[k].y - vertices[j].y);
315
280
  z -= (vertices[j].y - vertices[i].y) * (vertices[k].x - vertices[j].x);
316
281
 
317
282
  if (z < 0) {
@@ -334,19 +299,13 @@ import pool from '../system/pooling.js';
334
299
 
335
300
  /**
336
301
  * translate the Polygon by the specified offset
337
- * @name translate
338
- * @memberof Polygon
339
- * @method
340
- * @param {number} x - x offset
341
- * @param {number} y - y offset
342
- * @returns {Polygon} this Polygon
343
- */
344
- /**
345
- * translate the Polygon by the specified vector
346
- * @name translate
347
- * @memberof Polygon
348
- * @param {Vector2d} v - vector offset
302
+ * @param {number|Vector2d} x - x offset or a vector point to translate by
303
+ * @param {number} [y] - y offset
349
304
  * @returns {Polygon} Reference to this object for method chaining
305
+ * @example
306
+ * polygon.translate(10, 10);
307
+ * // or
308
+ * polygon.translate(myVector2d);
350
309
  */
351
310
  translate() {
352
311
  let _x, _y;
@@ -370,17 +329,12 @@ import pool from '../system/pooling.js';
370
329
 
371
330
  /**
372
331
  * Shifts the Polygon to the given position vector.
373
- * @name shift
374
- * @memberof Polygon
375
- * @method
376
- * @param {Vector2d} position
377
- */
378
- /**
379
- * Shifts the Polygon to the given x, y position.
380
- * @name shift
381
- * @memberof Polygon
382
- * @param {number} x
383
- * @param {number} y
332
+ * @param {number|Vector2d} x - x coordinate or a vector point to shift to
333
+ * @param {number} [y]
334
+ * @example
335
+ * polygon.shift(10, 10);
336
+ * // or
337
+ * polygon.shift(myVector2d);
384
338
  */
385
339
  shift() {
386
340
  let _x, _y;
@@ -398,38 +352,33 @@ import pool from '../system/pooling.js';
398
352
  this.updateBounds();
399
353
  }
400
354
 
401
- /**
402
- * Returns true if the polygon contains the given point.
403
- * (Note: it is highly recommended to first do a hit test on the corresponding <br>
404
- * bounding rect, as the function can be highly consuming with complex shapes)
405
- * @name contains
406
- * @memberof Polygon
407
- * @method
408
- * @param {Vector2d} point
409
- * @returns {boolean} true if contains
410
- */
411
-
412
355
  /**
413
356
  * Returns true if the polygon contains the given point. <br>
414
357
  * (Note: it is highly recommended to first do a hit test on the corresponding <br>
415
358
  * bounding rect, as the function can be highly consuming with complex shapes)
416
- * @name contains
417
- * @memberof Polygon
418
- * @param {number} x - x coordinate
419
- * @param {number} y - y coordinate
420
- * @returns {boolean} true if contains
359
+ * @param {number|Vector2d} x - x coordinate or a vector point to check
360
+ * @param {number} [y] - y coordinate
361
+ * @returns {boolean} True if the polygon contain the point, otherwise false
362
+ * @example
363
+ * if (polygon.contains(10, 10)) {
364
+ * // do something
365
+ * }
366
+ * // or
367
+ * if (polygon.contains(myVector2d)) {
368
+ * // do something
369
+ * }
421
370
  */
422
371
  contains() {
423
372
  let _x, _y;
424
373
 
425
374
  if (arguments.length === 2) {
426
- // x, y
427
- _x = arguments[0];
428
- _y = arguments[1];
375
+ // x, y
376
+ _x = arguments[0];
377
+ _y = arguments[1];
429
378
  } else {
430
- // vector
431
- _x = arguments[0].x;
432
- _y = arguments[0].y;
379
+ // vector
380
+ _x = arguments[0].x;
381
+ _y = arguments[0].y;
433
382
  }
434
383
 
435
384
  let intersects = false;
@@ -440,7 +389,7 @@ import pool from '../system/pooling.js';
440
389
  //http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
441
390
  for (let i = 0, j = len - 1; i < len; j = i++) {
442
391
  const iy = points[i].y + posy, ix = points[i].x + posx,
443
- jy = points[j].y + posy, jx = points[j].x + posx;
392
+ jy = points[j].y + posy, jx = points[j].x + posx;
444
393
  if (((iy > _y) !== (jy > _y)) && (_x < (jx - ix) * (_y - iy) / (jy - iy) + ix)) {
445
394
  intersects = !intersects;
446
395
  }
@@ -450,8 +399,6 @@ import pool from '../system/pooling.js';
450
399
 
451
400
  /**
452
401
  * returns the bounding box for this shape, the smallest Rectangle object completely containing this shape.
453
- * @name getBounds
454
- * @memberof Polygon
455
402
  * @returns {Bounds} this shape bounding box Rectangle object
456
403
  */
457
404
  getBounds() {
@@ -463,8 +410,6 @@ import pool from '../system/pooling.js';
463
410
 
464
411
  /**
465
412
  * update the bounding box for this shape.
466
- * @name updateBounds
467
- * @memberof Polygon
468
413
  * @returns {Bounds} this shape bounding box Rectangle object
469
414
  */
470
415
  updateBounds() {
@@ -478,8 +423,6 @@ import pool from '../system/pooling.js';
478
423
 
479
424
  /**
480
425
  * clone this Polygon
481
- * @name clone
482
- * @memberof Polygon
483
426
  * @returns {Polygon} new Polygon
484
427
  */
485
428
  clone() {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.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
@@ -13,7 +13,7 @@ import Polygon from './poly.js';
13
13
  * a rectangle Object
14
14
  * @augments Polygon
15
15
  */
16
- class Rect extends Polygon {
16
+ class Rect extends Polygon {
17
17
  /**
18
18
  * @param {number} x - position of the Rectangle
19
19
  * @param {number} y - position of the Rectangle
@@ -38,8 +38,6 @@ import Polygon from './poly.js';
38
38
 
39
39
  /**
40
40
  * set new value to the rectangle shape
41
- * @name setShape
42
- * @memberof Rect
43
41
  * @param {number} x - position of the Rectangle
44
42
  * @param {number} y - position of the Rectangle
45
43
  * @param {number|Vector2d[]} w - width of the rectangle, or an array of vector defining the rectangle
@@ -66,10 +64,7 @@ import Polygon from './poly.js';
66
64
 
67
65
  /**
68
66
  * left coordinate of the Rectangle
69
- * @public
70
67
  * @type {number}
71
- * @name left
72
- * @memberof Rect
73
68
  */
74
69
  get left() {
75
70
  return this.pos.x;
@@ -77,10 +72,7 @@ import Polygon from './poly.js';
77
72
 
78
73
  /**
79
74
  * right coordinate of the Rectangle
80
- * @public
81
75
  * @type {number}
82
- * @name right
83
- * @memberof Rect
84
76
  */
85
77
  get right() {
86
78
  let w = this.width;
@@ -89,10 +81,7 @@ import Polygon from './poly.js';
89
81
 
90
82
  /**
91
83
  * top coordinate of the Rectangle
92
- * @public
93
84
  * @type {number}
94
- * @name top
95
- * @memberof Rect
96
85
  */
97
86
  get top() {
98
87
  return this.pos.y;
@@ -100,10 +89,7 @@ import Polygon from './poly.js';
100
89
 
101
90
  /**
102
91
  * bottom coordinate of the Rectangle
103
- * @public
104
92
  * @type {number}
105
- * @name bottom
106
- * @memberof Rect
107
93
  */
108
94
  get bottom() {
109
95
  let h = this.height;
@@ -112,10 +98,7 @@ import Polygon from './poly.js';
112
98
 
113
99
  /**
114
100
  * width of the Rectangle
115
- * @public
116
101
  * @type {number}
117
- * @name width
118
- * @memberof Rect
119
102
  */
120
103
  get width() {
121
104
  return this.points[2].x;
@@ -128,10 +111,7 @@ import Polygon from './poly.js';
128
111
 
129
112
  /**
130
113
  * height of the Rectangle
131
- * @public
132
114
  * @type {number}
133
- * @name height
134
- * @memberof Rect
135
115
  */
136
116
  get height() {
137
117
  return this.points[2].y;
@@ -144,10 +124,7 @@ import Polygon from './poly.js';
144
124
 
145
125
  /**
146
126
  * absolute center of this rectangle on the horizontal axis
147
- * @public
148
127
  * @type {number}
149
- * @name centerX
150
- * @memberof Rect
151
128
  */
152
129
  get centerX() {
153
130
  if (isFinite(this.width)) {
@@ -164,10 +141,7 @@ import Polygon from './poly.js';
164
141
 
165
142
  /**
166
143
  * absolute center of this rectangle on the vertical axis
167
- * @public
168
144
  * @type {number}
169
- * @name centerY
170
- * @memberof Rect
171
145
  */
172
146
  get centerY() {
173
147
  if (isFinite(this.height)) {
@@ -184,8 +158,6 @@ import Polygon from './poly.js';
184
158
 
185
159
  /**
186
160
  * center the rectangle position around the given coordinates
187
- * @name centerOn
188
- * @memberof Rect
189
161
  * @param {number} x - the x coordinate around which to center this rectangle
190
162
  * @param {number} y - the y coordinate around which to center this rectangle
191
163
  * @returns {Rect} this rectangle
@@ -198,8 +170,6 @@ import Polygon from './poly.js';
198
170
 
199
171
  /**
200
172
  * resize the rectangle
201
- * @name resize
202
- * @memberof Rect
203
173
  * @param {number} w - new width of the rectangle
204
174
  * @param {number} h - new height of the rectangle
205
175
  * @returns {Rect} this rectangle
@@ -212,8 +182,6 @@ import Polygon from './poly.js';
212
182
 
213
183
  /**
214
184
  * scale the rectangle
215
- * @name scale
216
- * @memberof Rect
217
185
  * @param {number} x - a number representing the abscissa of the scaling vector.
218
186
  * @param {number} [y=x] - a number representing the ordinate of the scaling vector.
219
187
  * @returns {Rect} this rectangle
@@ -226,8 +194,6 @@ import Polygon from './poly.js';
226
194
 
227
195
  /**
228
196
  * clone this rectangle
229
- * @name clone
230
- * @memberof Rect
231
197
  * @returns {Rect} new rectangle
232
198
  */
233
199
  clone() {
@@ -236,8 +202,6 @@ import Polygon from './poly.js';
236
202
 
237
203
  /**
238
204
  * copy the position and size of the given rectangle into this one
239
- * @name copy
240
- * @memberof Rect
241
205
  * @param {Rect} rect - Source rectangle
242
206
  * @returns {Rect} new rectangle
243
207
  */
@@ -247,8 +211,6 @@ import Polygon from './poly.js';
247
211
 
248
212
  /**
249
213
  * merge this rectangle with another one
250
- * @name union
251
- * @memberof Rect
252
214
  * @param {Rect} rect - other rectangle to union with
253
215
  * @returns {Rect} the union(ed) rectangle
254
216
  */
@@ -268,8 +230,6 @@ import Polygon from './poly.js';
268
230
 
269
231
  /**
270
232
  * check if this rectangle is intersecting with the specified one
271
- * @name overlaps
272
- * @memberof Rect
273
233
  * @param {Rect} rect
274
234
  * @returns {boolean} true if overlaps
275
235
  */
@@ -283,63 +243,53 @@ import Polygon from './poly.js';
283
243
  }
284
244
 
285
245
  /**
286
- * Returns true if the rectangle contains the given rectangle
287
- * @name contains
288
- * @memberof Rect
289
- * @method
290
- * @param {Rect} rect
291
- * @returns {boolean} true if contains
292
- */
293
-
294
- /**
295
- * Returns true if the rectangle contains the given point
296
- * @name contains
297
- * @memberof Rect
298
- * @method
299
- * @param {number} x - x coordinate
300
- * @param {number} y - y coordinate
301
- * @returns {boolean} true if contains
302
- */
303
-
304
- /**
305
- * Returns true if the rectangle contains the given point
306
- * @name contains
307
- * @memberof Rect
308
- * @param {Vector2d} point
309
- * @returns {boolean} true if contains
246
+ * Returns true if the rectangle contains the given point or rectangle
247
+ * @param {number|Vector2d|Rect} x - x coordinate or a vector point, or a rectangle to test
248
+ * @param {number} [y] - y coordinate
249
+ * @returns {boolean} True if the rectangle contain the given point or rectangle, otherwise false
250
+ * @example
251
+ * if (rect.contains(10, 10)) {
252
+ * // do something
253
+ * }
254
+ * // or
255
+ * if (rect.contains(myVector2d)) {
256
+ * // do something
257
+ * }
258
+ * if (rect.contains(myRect)) {
259
+ * // do something
260
+ * }
310
261
  */
311
262
  contains() {
312
263
  let arg0 = arguments[0];
313
264
  let _x1, _x2, _y1, _y2;
314
265
  if (arguments.length === 2) {
315
- // x, y
316
- _x1 = _x2 = arg0;
317
- _y1 = _y2 = arguments[1];
318
- } else {
319
- if (arg0 instanceof Rect) {
320
- // me.Rect
321
- _x1 = arg0.left;
322
- _x2 = arg0.right;
323
- _y1 = arg0.top;
324
- _y2 = arg0.bottom;
325
- } else {
326
- // vector
327
- _x1 = _x2 = arg0.x;
328
- _y1 = _y2 = arg0.y;
329
- }
330
- }
331
- return (
332
- _x1 >= this.left &&
266
+ // x, y
267
+ _x1 = _x2 = arg0;
268
+ _y1 = _y2 = arguments[1];
269
+ } else {
270
+ // only Rect based objects define a top and bottom properties
271
+ if (typeof arg0.bottom === "number") {
272
+ // me.Rect
273
+ _x1 = arg0.left;
274
+ _x2 = arg0.right;
275
+ _y1 = arg0.top;
276
+ _y2 = arg0.bottom;
277
+ } else {
278
+ // vector
279
+ _x1 = _x2 = arg0.x;
280
+ _y1 = _y2 = arg0.y;
281
+ }
282
+ }
283
+ return (
284
+ _x1 >= this.left &&
333
285
  _x2 <= this.right &&
334
286
  _y1 >= this.top &&
335
287
  _y2 <= this.bottom
336
- );
288
+ );
337
289
  }
338
290
 
339
291
  /**
340
292
  * check if this rectangle is identical to the specified one
341
- * @name equals
342
- * @memberof Rect
343
293
  * @param {Rect} rect
344
294
  * @returns {boolean} true if equals
345
295
  */
@@ -354,8 +304,6 @@ import Polygon from './poly.js';
354
304
 
355
305
  /**
356
306
  * determines whether all coordinates of this rectangle are finite numbers.
357
- * @name isFinite
358
- * @memberof Rect
359
307
  * @returns {boolean} false if all coordinates are positive or negative Infinity or NaN; otherwise, true.
360
308
  */
361
309
  isFinite() {
@@ -364,8 +312,6 @@ import Polygon from './poly.js';
364
312
 
365
313
  /**
366
314
  * Returns a polygon whose edges are the same as this box.
367
- * @name toPolygon
368
- * @memberof Rect
369
315
  * @returns {Polygon} a new Polygon that represents this rectangle.
370
316
  */
371
317
  toPolygon() {