melonjs 15.15.0 → 16.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.
Files changed (204) hide show
  1. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +2 -2
  2. package/dist/melonjs.mjs/_virtual/earcut.js +2 -2
  3. package/dist/melonjs.mjs/_virtual/howler.js +2 -2
  4. package/dist/melonjs.mjs/_virtual/index.js +2 -2
  5. package/dist/melonjs.mjs/application/application.js +2 -2
  6. package/dist/melonjs.mjs/application/header.js +2 -2
  7. package/dist/melonjs.mjs/application/resize.js +2 -2
  8. package/dist/melonjs.mjs/application/settings.js +5 -3
  9. package/dist/melonjs.mjs/audio/audio.js +5 -3
  10. package/dist/melonjs.mjs/camera/camera2d.js +2 -2
  11. package/dist/melonjs.mjs/const.js +2 -2
  12. package/dist/melonjs.mjs/geometries/ellipse.js +6 -8
  13. package/dist/melonjs.mjs/geometries/line.js +2 -2
  14. package/dist/melonjs.mjs/geometries/path2d.js +131 -5
  15. package/dist/melonjs.mjs/geometries/point.js +7 -9
  16. package/dist/melonjs.mjs/geometries/poly.js +4 -14
  17. package/dist/melonjs.mjs/geometries/rectangle.js +2 -2
  18. package/dist/melonjs.mjs/geometries/roundrect.js +2 -2
  19. package/dist/melonjs.mjs/geometries/toarccanvas.js +103 -0
  20. package/dist/melonjs.mjs/index.js +3 -3
  21. package/dist/melonjs.mjs/input/gamepad.js +2 -2
  22. package/dist/melonjs.mjs/input/input.js +2 -2
  23. package/dist/melonjs.mjs/input/keyboard.js +2 -2
  24. package/dist/melonjs.mjs/input/pointer.js +2 -2
  25. package/dist/melonjs.mjs/input/pointerevent.js +2 -2
  26. package/dist/melonjs.mjs/lang/console.js +2 -2
  27. package/dist/melonjs.mjs/lang/deprecated.js +2 -2
  28. package/dist/melonjs.mjs/level/level.js +2 -2
  29. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +2 -2
  30. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +2 -2
  31. package/dist/melonjs.mjs/level/tiled/TMXObject.js +2 -2
  32. package/dist/melonjs.mjs/level/tiled/TMXTile.js +2 -2
  33. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +2 -2
  34. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +2 -2
  35. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +2 -2
  36. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +2 -2
  37. package/dist/melonjs.mjs/level/tiled/constants.js +2 -2
  38. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +2 -2
  39. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +2 -2
  40. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +2 -2
  41. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
  42. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +2 -2
  43. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +2 -2
  44. package/dist/melonjs.mjs/loader/cache.js +6 -3
  45. package/dist/melonjs.mjs/loader/loader.js +59 -10
  46. package/dist/melonjs.mjs/loader/loadingscreen.js +4 -4
  47. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +3 -4
  48. package/dist/melonjs.mjs/loader/parsers/binary.js +15 -22
  49. package/dist/melonjs.mjs/loader/parsers/fetchdata.js +62 -0
  50. package/dist/melonjs.mjs/loader/parsers/fontface.js +2 -2
  51. package/dist/melonjs.mjs/loader/parsers/image.js +47 -11
  52. package/dist/melonjs.mjs/loader/parsers/json.js +14 -31
  53. package/dist/melonjs.mjs/loader/parsers/script.js +2 -2
  54. package/dist/melonjs.mjs/loader/parsers/tmx.js +48 -74
  55. package/dist/melonjs.mjs/loader/parsers/video.js +98 -0
  56. package/dist/melonjs.mjs/loader/settings.js +6 -5
  57. package/dist/melonjs.mjs/math/color.js +2 -2
  58. package/dist/melonjs.mjs/math/math.js +13 -3
  59. package/dist/melonjs.mjs/math/matrix2.js +2 -2
  60. package/dist/melonjs.mjs/math/matrix3.js +2 -2
  61. package/dist/melonjs.mjs/math/observable_vector2.js +2 -2
  62. package/dist/melonjs.mjs/math/observable_vector3.js +2 -2
  63. package/dist/melonjs.mjs/math/vector2.js +7 -9
  64. package/dist/melonjs.mjs/math/vector3.js +6 -10
  65. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +2 -2
  66. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +2 -2
  67. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +2 -2
  68. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +2 -2
  69. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +2 -2
  70. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +2 -2
  71. package/dist/melonjs.mjs/particles/emitter.js +2 -2
  72. package/dist/melonjs.mjs/particles/particle.js +2 -2
  73. package/dist/melonjs.mjs/particles/settings.js +3 -5
  74. package/dist/melonjs.mjs/physics/body.js +6 -8
  75. package/dist/melonjs.mjs/physics/bounds.js +2 -2
  76. package/dist/melonjs.mjs/physics/collision.js +3 -5
  77. package/dist/melonjs.mjs/physics/detector.js +2 -2
  78. package/dist/melonjs.mjs/physics/quadtree.js +2 -2
  79. package/dist/melonjs.mjs/physics/response.js +2 -2
  80. package/dist/melonjs.mjs/physics/sat.js +2 -2
  81. package/dist/melonjs.mjs/physics/world.js +2 -2
  82. package/dist/melonjs.mjs/plugin/plugin.js +5 -5
  83. package/dist/melonjs.mjs/renderable/collectable.js +2 -2
  84. package/dist/melonjs.mjs/renderable/colorlayer.js +2 -2
  85. package/dist/melonjs.mjs/renderable/container.js +2 -2
  86. package/dist/melonjs.mjs/renderable/draggable.js +2 -2
  87. package/dist/melonjs.mjs/renderable/dragndrop.js +2 -2
  88. package/dist/melonjs.mjs/renderable/entity/entity.js +2 -2
  89. package/dist/melonjs.mjs/renderable/imagelayer.js +2 -2
  90. package/dist/melonjs.mjs/renderable/light2d.js +2 -2
  91. package/dist/melonjs.mjs/renderable/nineslicesprite.js +2 -6
  92. package/dist/melonjs.mjs/renderable/renderable.js +2 -2
  93. package/dist/melonjs.mjs/renderable/sprite.js +136 -81
  94. package/dist/melonjs.mjs/renderable/text/bitmaptext.js +2 -2
  95. package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +2 -2
  96. package/dist/melonjs.mjs/renderable/text/glyph.js +2 -2
  97. package/dist/melonjs.mjs/renderable/text/text.js +2 -2
  98. package/dist/melonjs.mjs/renderable/text/textmetrics.js +2 -2
  99. package/dist/melonjs.mjs/renderable/text/textstyle.js +2 -2
  100. package/dist/melonjs.mjs/renderable/trigger.js +2 -2
  101. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +2 -2
  102. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +2 -2
  103. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +2 -2
  104. package/dist/melonjs.mjs/state/stage.js +2 -2
  105. package/dist/melonjs.mjs/state/state.js +3 -4
  106. package/dist/melonjs.mjs/system/device.js +46 -3
  107. package/dist/melonjs.mjs/system/dom.js +2 -2
  108. package/dist/melonjs.mjs/system/event.js +2 -2
  109. package/dist/melonjs.mjs/system/platform.js +2 -2
  110. package/dist/melonjs.mjs/system/pooling.js +3 -20
  111. package/dist/melonjs.mjs/system/save.js +2 -2
  112. package/dist/melonjs.mjs/system/timer.js +3 -19
  113. package/dist/melonjs.mjs/tweens/easing.js +2 -2
  114. package/dist/melonjs.mjs/tweens/interpolation.js +2 -2
  115. package/dist/melonjs.mjs/tweens/tween.js +2 -2
  116. package/dist/melonjs.mjs/utils/agent.js +2 -2
  117. package/dist/melonjs.mjs/utils/array.js +2 -2
  118. package/dist/melonjs.mjs/utils/file.js +2 -2
  119. package/dist/melonjs.mjs/utils/function.js +2 -2
  120. package/dist/melonjs.mjs/utils/string.js +2 -2
  121. package/dist/melonjs.mjs/utils/utils.js +2 -2
  122. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +2 -2
  123. package/dist/melonjs.mjs/video/renderer.js +14 -17
  124. package/dist/melonjs.mjs/video/texture/atlas.js +28 -14
  125. package/dist/melonjs.mjs/video/texture/cache.js +6 -7
  126. package/dist/melonjs.mjs/video/texture/canvas_texture.js +16 -19
  127. package/dist/melonjs.mjs/video/utils/autodetect.js +2 -2
  128. package/dist/melonjs.mjs/video/video.js +2 -2
  129. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +2 -2
  130. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +2 -2
  131. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +2 -2
  132. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +8 -5
  133. package/dist/melonjs.mjs/video/webgl/glshader.js +2 -2
  134. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +2 -2
  135. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +2 -2
  136. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +2 -2
  137. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +2 -2
  138. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +2 -2
  139. package/dist/melonjs.mjs/video/webgl/utils/precision.js +2 -2
  140. package/dist/melonjs.mjs/video/webgl/utils/program.js +2 -2
  141. package/dist/melonjs.mjs/video/webgl/utils/string.js +2 -2
  142. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +2 -2
  143. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +5 -4
  144. package/dist/melonjs.module.js +1475 -398
  145. package/dist/types/application/application.d.ts +1 -1
  146. package/dist/types/application/settings.d.ts +5 -0
  147. package/dist/types/geometries/path2d.d.ts +24 -0
  148. package/dist/types/geometries/rectangle.d.ts +4 -4
  149. package/dist/types/geometries/roundrect.d.ts +1 -1
  150. package/dist/types/geometries/toarccanvas.d.ts +10 -0
  151. package/dist/types/loader/cache.d.ts +1 -0
  152. package/dist/types/loader/loader.d.ts +37 -8
  153. package/dist/types/loader/parsers/binary.d.ts +0 -8
  154. package/dist/types/loader/parsers/fetchdata.d.ts +15 -0
  155. package/dist/types/loader/parsers/tmx.d.ts +1 -0
  156. package/dist/types/loader/parsers/video.d.ts +9 -0
  157. package/dist/types/loader/settings.d.ts +3 -3
  158. package/dist/types/math/color.d.ts +4 -4
  159. package/dist/types/math/math.d.ts +6 -0
  160. package/dist/types/math/observable_vector2.d.ts +2 -2
  161. package/dist/types/math/observable_vector3.d.ts +3 -3
  162. package/dist/types/physics/bounds.d.ts +4 -4
  163. package/dist/types/renderable/entity/entity.d.ts +1 -1
  164. package/dist/types/renderable/imagelayer.d.ts +1 -1
  165. package/dist/types/renderable/nineslicesprite.d.ts +12 -0
  166. package/dist/types/renderable/renderable.d.ts +3 -3
  167. package/dist/types/renderable/sprite.d.ts +41 -40
  168. package/dist/types/renderable/text/bitmaptext.d.ts +1 -1
  169. package/dist/types/system/device.d.ts +16 -0
  170. package/dist/types/video/renderer.d.ts +11 -23
  171. package/dist/types/video/texture/canvas_texture.d.ts +11 -23
  172. package/dist/types/video/webgl/compositors/quad_compositor.d.ts +2 -1
  173. package/package.json +16 -15
  174. package/src/application/settings.js +3 -1
  175. package/src/audio/audio.js +3 -1
  176. package/src/geometries/ellipse.js +4 -6
  177. package/src/geometries/path2d.js +129 -4
  178. package/src/geometries/point.js +5 -7
  179. package/src/geometries/poly.js +2 -12
  180. package/src/geometries/toarccanvas.js +94 -0
  181. package/src/loader/cache.js +3 -0
  182. package/src/loader/loader.js +57 -7
  183. package/src/loader/parsers/binary.js +13 -56
  184. package/src/loader/parsers/fetchdata.js +53 -0
  185. package/src/loader/parsers/image.js +45 -12
  186. package/src/loader/parsers/json.js +12 -30
  187. package/src/loader/parsers/tmx.js +46 -72
  188. package/src/loader/parsers/video.js +89 -0
  189. package/src/loader/settings.js +4 -3
  190. package/src/math/math.js +10 -0
  191. package/src/math/vector2.js +5 -7
  192. package/src/math/vector3.js +4 -8
  193. package/src/physics/body.js +4 -6
  194. package/src/plugin/plugin.js +1 -1
  195. package/src/polyfill/index.js +3 -0
  196. package/src/renderable/nineslicesprite.js +0 -4
  197. package/src/renderable/sprite.js +134 -79
  198. package/src/system/device.js +43 -0
  199. package/src/video/renderer.js +12 -15
  200. package/src/video/texture/atlas.js +26 -12
  201. package/src/video/texture/cache.js +3 -3
  202. package/src/video/texture/canvas_texture.js +14 -17
  203. package/src/video/webgl/compositors/quad_compositor.js +6 -3
  204. package/src/video/webgl/webgl_renderer.js +3 -2
@@ -8,7 +8,7 @@ export default class Sprite extends Renderable {
8
8
  * @param {number} x - the x coordinates of the sprite object
9
9
  * @param {number} y - the y coordinates of the sprite object
10
10
  * @param {object} settings - Configuration parameters for the Sprite object
11
- * @param {HTMLImageElement|HTMLCanvasElement|TextureAtlas|string} settings.image - reference to spritesheet image, a texture atlas or to a texture atlas
11
+ * @param {HTMLImageElement|HTMLCanvasElement|HTMLVideoElement|TextureAtlas|string} settings.image - reference to spritesheet image, a texture atlas, a video element, or to a texture atlas
12
12
  * @param {string} [settings.name=""] - name of this object
13
13
  * @param {string} [settings.region] - region name of a specific region to use when using a texture atlas, see {@link TextureAtlas}
14
14
  * @param {number} [settings.framewidth] - Width of a single frame within the spritesheet
@@ -35,9 +35,19 @@ export default class Sprite extends Renderable {
35
35
  * image : mytexture,
36
36
  * region : "npc2.png",
37
37
  * });
38
+ *
39
+ * // create a video sprite
40
+ * let videoSprite = new me.Sprite(0, 0, {
41
+ * image : me.loader.getVideo("bigbunny"),
42
+ * anchorPoint : new me.Vector2d(0.5, 0.5)
43
+ * });
44
+ * // scale the video sprite
45
+ * videoSprite.currentTransform.scale(2);
46
+ * // start playing the video (if video is preloaded with `autoplay` set to false)
47
+ * videoSprite.play();
38
48
  */
39
49
  constructor(x: number, y: number, settings: {
40
- image: HTMLImageElement | HTMLCanvasElement | TextureAtlas | string;
50
+ image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | TextureAtlas | string;
41
51
  name?: string | undefined;
42
52
  region?: string | undefined;
43
53
  framewidth?: number | undefined;
@@ -48,38 +58,39 @@ export default class Sprite extends Renderable {
48
58
  anchorPoint?: any;
49
59
  });
50
60
  /**
51
- * pause and resume animation
52
- * @public
53
61
  * @type {boolean}
54
62
  * @default false
55
- * @name Sprite#animationpause
56
63
  */
57
- public animationpause: boolean;
64
+ animationpause: boolean;
58
65
  /**
59
66
  * animation cycling speed (delay between frame in ms)
60
- * @public
61
67
  * @type {number}
62
68
  * @default 100
63
- * @name Sprite#animationspeed
64
69
  */
65
- public animationspeed: number;
70
+ animationspeed: number;
66
71
  /**
67
72
  * global offset for the position to draw from on the source image.
68
- * @public
69
73
  * @type {Vector2d}
70
74
  * @default <0.0,0.0>
71
- * @name offset
72
- * @memberof Sprite#
73
75
  */
74
- public offset: Vector2d;
76
+ offset: Vector2d;
77
+ /**
78
+ * true if this is a video sprite (e.g. a HTMLVideoElement was passed as as source)
79
+ * @type {boolean}
80
+ * @default false
81
+ */
82
+ isVideo: boolean;
83
+ /**
84
+ * a callback fired when the end of a video or current animation was reached
85
+ * @type {Function}
86
+ * @default undefined
87
+ */
88
+ onended: Function;
75
89
  /**
76
90
  * The source texture object this sprite object is using
77
- * @public
78
91
  * @type {TextureAtlas}
79
- * @name source
80
- * @memberof Sprite#
81
92
  */
82
- public source: TextureAtlas;
93
+ source: TextureAtlas;
83
94
  anim: {};
84
95
  resetAnim: Function | (() => Sprite) | undefined;
85
96
  current: {
@@ -98,20 +109,27 @@ export default class Sprite extends Renderable {
98
109
  callback: null;
99
110
  state: boolean;
100
111
  };
101
- image: HTMLCanvasElement | HTMLImageElement;
112
+ image: HTMLCanvasElement | HTMLImageElement | HTMLVideoElement;
102
113
  textureAtlas: any;
114
+ width: any;
115
+ height: any;
116
+ _onBlurFn: (() => void) | undefined;
103
117
  atlasIndices: any;
104
118
  /**
105
119
  * return the flickering state of the object
106
- * @name isFlickering
107
- * @memberof Sprite
108
120
  * @returns {boolean}
109
121
  */
110
122
  isFlickering(): boolean;
123
+ /**
124
+ * play or resume the current animation or video
125
+ */
126
+ play(): void;
127
+ /**
128
+ * play or resume the current animation or video
129
+ */
130
+ pause(): void;
111
131
  /**
112
132
  * make the object flicker
113
- * @name flicker
114
- * @memberof Sprite
115
133
  * @param {number} duration - expressed in milliseconds
116
134
  * @param {Function} callback - Function to call when flickering ends
117
135
  * @returns {Sprite} Reference to this object for method chaining
@@ -128,11 +146,8 @@ export default class Sprite extends Renderable {
128
146
  * For fixed-sized cell sprite sheet, the index list must follow the
129
147
  * logic as per the following example :<br>
130
148
  * <img src="images/spritesheet_grid.png"/>
131
- * @name addAnimation
132
- * @memberof Sprite
133
149
  * @param {string} name - animation id
134
- * @param {number[]|string[]|object[]} index - list of sprite index or name
135
- * defining the animation. Can also use objects to specify delay for each frame, see below
150
+ * @param {number[]|string[]|object[]} index - list of sprite index or name defining the animation. Can also use objects to specify delay for each frame, see below
136
151
  * @param {number} [animationspeed] - cycling speed for animation in ms
137
152
  * @returns {number} frame amount of frame added to the animation (delay between each frame).
138
153
  * @see Sprite#animationspeed
@@ -160,8 +175,6 @@ export default class Sprite extends Renderable {
160
175
  /**
161
176
  * set the current animation
162
177
  * this will always change the animation & set the frame to zero
163
- * @name setCurrentAnimation
164
- * @memberof Sprite
165
178
  * @param {string} name - animation id
166
179
  * @param {string|Function} [resetAnim] - animation id to switch to when complete, or callback
167
180
  * @param {boolean} [preserve_dt=false] - if false will reset the elapsed time counter since last frame
@@ -199,8 +212,6 @@ export default class Sprite extends Renderable {
199
212
  setCurrentAnimation(name: string, resetAnim?: string | Function | undefined, preserve_dt?: boolean | undefined): Sprite;
200
213
  /**
201
214
  * reverse the given or current animation if none is specified
202
- * @name reverseAnimation
203
- * @memberof Sprite
204
215
  * @param {string} [name] - animation id
205
216
  * @returns {Sprite} Reference to this object for method chaining
206
217
  * @see Sprite#animationspeed
@@ -208,8 +219,6 @@ export default class Sprite extends Renderable {
208
219
  reverseAnimation(name?: string | undefined): Sprite;
209
220
  /**
210
221
  * return true if the specified animation is the current one.
211
- * @name isCurrentAnimation
212
- * @memberof Sprite
213
222
  * @param {string} name - animation id
214
223
  * @returns {boolean}
215
224
  * @example
@@ -221,8 +230,6 @@ export default class Sprite extends Renderable {
221
230
  /**
222
231
  * change the current texture atlas region for this sprite
223
232
  * @see Texture.getRegion
224
- * @name setRegion
225
- * @memberof Sprite
226
233
  * @param {object} region - typically returned through me.Texture.getRegion()
227
234
  * @returns {Sprite} Reference to this object for method chaining
228
235
  * @example
@@ -232,8 +239,6 @@ export default class Sprite extends Renderable {
232
239
  setRegion(region: object): Sprite;
233
240
  /**
234
241
  * force the current animation frame index.
235
- * @name setAnimationFrame
236
- * @memberof Sprite
237
242
  * @param {number} [index=0] - animation frame index
238
243
  * @returns {Sprite} Reference to this object for method chaining
239
244
  * @example
@@ -243,15 +248,11 @@ export default class Sprite extends Renderable {
243
248
  setAnimationFrame(index?: number | undefined): Sprite;
244
249
  /**
245
250
  * return the current animation frame index.
246
- * @name getCurrentAnimationFrame
247
- * @memberof Sprite
248
251
  * @returns {number} current animation frame index
249
252
  */
250
253
  getCurrentAnimationFrame(): number;
251
254
  /**
252
255
  * Returns the frame object by the index.
253
- * @name getAnimationFrameObjectByIndex
254
- * @memberof Sprite
255
256
  * @ignore
256
257
  * @param {number} id - the frame id
257
258
  * @returns {number} if using number indices. Returns {object} containing frame data if using texture atlas
@@ -98,7 +98,7 @@ export default class BitmapText extends Renderable {
98
98
  * @private
99
99
  */
100
100
  private fontData;
101
- public set fillStyle(arg: Color);
101
+ public set fillStyle(value: Color);
102
102
  /**
103
103
  * defines the color used to tint the bitmap text
104
104
  * @public
@@ -291,6 +291,13 @@ export function unwatchDeviceOrientation(): void;
291
291
  * me.device.vibrate(0);
292
292
  */
293
293
  export function vibrate(pattern: number | number[]): void;
294
+ /**
295
+ * detect if the given video format is supported
296
+ * @function hasVideoFormat
297
+ * @param {"h264"|"h265"|"ogg"|"mp4"|"m4v"|"webm"|"vp9"|"hls"} codec - the video format to check for support
298
+ * @returns {boolean} return true if the given video format is supported
299
+ */
300
+ export function hasVideoFormat(codec: "h264" | "h265" | "ogg" | "mp4" | "m4v" | "webm" | "vp9" | "hls"): boolean;
294
301
  /**
295
302
  * the device platform type
296
303
  * @name platform
@@ -422,6 +429,15 @@ export const hasHTML5Audio: boolean;
422
429
  * @public
423
430
  */
424
431
  export const sound: boolean;
432
+ /**
433
+ * Device Video Support
434
+ * @name hasVideo
435
+ * @memberof device
436
+ * @type {boolean}
437
+ * @readonly
438
+ * @public
439
+ */
440
+ export const hasVideo: boolean;
425
441
  /**
426
442
  * Browser Local Storage capabilities <br>
427
443
  * (this flag will be set to false if cookies are blocked)
@@ -65,13 +65,13 @@ export default class Renderer {
65
65
  currentTint: Color;
66
66
  projectionMatrix: Matrix3d;
67
67
  uvOffset: number;
68
- set height(arg: number);
68
+ set height(value: number);
69
69
  /**
70
70
  * return the height of the canvas which this renderer draws to
71
71
  * @returns {number} height of the system Canvas
72
72
  */
73
73
  get height(): number;
74
- set width(arg: number);
74
+ set width(value: number);
75
75
  /**
76
76
  * return the width of the canvas which this renderer draws to
77
77
  * @returns {number} width of the system Canvas
@@ -190,44 +190,32 @@ export default class Renderer {
190
190
  clearTint(): void;
191
191
  /**
192
192
  * creates a Blob object representing the last rendered frame
193
- * @param {object} [options] - An object with the following properties:
194
- * @param {string} [options.type="image/png"] - A string indicating the image format
195
- * @param {number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
193
+ * @param {string} [type="image/png"] - A string indicating the image format
194
+ * @param {number} [quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
196
195
  * @returns {Promise} A Promise returning a Blob object representing the last rendered frame
197
196
  * @example
198
197
  * renderer.convertToBlob().then((blob) => console.log(blob));
199
198
  */
200
- toBlob(options?: {
201
- type?: string | undefined;
202
- quality?: number | undefined;
203
- } | undefined): Promise<any>;
199
+ toBlob(type?: string | undefined, quality?: number | undefined): Promise<any>;
204
200
  /**
205
201
  * creates an ImageBitmap object of the last frame rendered
206
202
  * (not supported by standard Canvas)
207
- * @param {object} [options] - An object with the following properties:
208
- * @param {string} [options.type="image/png"] - A string indicating the image format
209
- * @param {number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
203
+ * @param {string} [type="image/png"] - A string indicating the image format
204
+ * @param {number} [quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
210
205
  * @returns {Promise} A Promise returning an ImageBitmap.
211
206
  * @example
212
207
  * renderer.transferToImageBitmap().then((image) => console.log(image));
213
208
  */
214
- toImageBitmap(options?: {
215
- type?: string | undefined;
216
- quality?: number | undefined;
217
- } | undefined): Promise<any>;
209
+ toImageBitmap(type?: string | undefined, quality?: number | undefined): Promise<any>;
218
210
  /**
219
211
  * returns a data URL containing a representation of the last frame rendered
220
- * @param {object} [options] - An object with the following properties:
221
- * @param {string} [options.type="image/png"] - A string indicating the image format
222
- * @param {number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
212
+ * @param {string} [type="image/png"] - A string indicating the image format
213
+ * @param {number} [quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
223
214
  * @returns {Promise} A Promise returning a string containing the requested data URL.
224
215
  * @example
225
216
  * renderer.toDataURL().then((dataURL) => console.log(dataURL));
226
217
  */
227
- toDataURL(options?: {
228
- type?: string | undefined;
229
- quality?: number | undefined;
230
- } | undefined): Promise<any>;
218
+ toDataURL(type?: string | undefined, quality?: number | undefined): Promise<any>;
231
219
  }
232
220
  import Vector2d from "../math/vector2.js";
233
221
  import Path2D from "./../geometries/path2d.js";
@@ -60,44 +60,32 @@ declare class CanvasTexture {
60
60
  getImageData(x: number, y: number, width: number, height: number): ImageData;
61
61
  /**
62
62
  * creates a Blob object representing the image contained in this canvas texture
63
- * @param {object} [options] - An object with the following properties:
64
- * @param {string} [options.type="image/png"] - A string indicating the image format
65
- * @param {number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
63
+ * @param {string} [type="image/png"] - A string indicating the image format
64
+ * @param {number} [quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
66
65
  * @returns {Promise} A Promise returning a Blob object representing the image contained in this canvas texture
67
66
  * @example
68
67
  * canvasTexture.convertToBlob().then((blob) => console.log(blob));
69
68
  */
70
- toBlob(options?: {
71
- type?: string | undefined;
72
- quality?: number | undefined;
73
- } | undefined): Promise<any>;
69
+ toBlob(type?: string | undefined, quality?: number | undefined): Promise<any>;
74
70
  /**
75
71
  * creates an ImageBitmap object from the most recently rendered image of this canvas texture
76
- * @param {object} [options] - An object with the following properties:
77
- * @param {string} [options.type="image/png"] - A string indicating the image format
78
- * @param {number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
72
+ * @param {string} [type="image/png"] - A string indicating the image format
73
+ * @param {number} [quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
79
74
  * @returns {Promise} A Promise returning an ImageBitmap.
80
75
  * @example
81
76
  * canvasTexture.transferToImageBitmap().then((bitmap) => console.log(bitmap));
82
77
  */
83
- toImageBitmap(options?: {
84
- type?: string | undefined;
85
- quality?: number | undefined;
86
- } | undefined): Promise<any>;
78
+ toImageBitmap(type?: string | undefined, quality?: number | undefined): Promise<any>;
87
79
  /**
88
80
  * returns a data URL containing a representation of the most recently rendered image of this canvas texture
89
81
  * (not supported by OffscreenCanvas)
90
- * @param {object} [options] - An object with the following properties:
91
- * @param {string} [options.type="image/png"] - A string indicating the image format
92
- * @param {number} [options.quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
82
+ * @param {string} [type="image/png"] - A string indicating the image format
83
+ * @param {number} [quality] - A Number between 0 and 1 indicating the image quality to be used when creating images using file formats that support lossy compression (such as image/jpeg or image/webp). A user agent will use its default quality value if this option is not specified, or if the number is outside the allowed range.
93
84
  * @returns {Promise} A Promise returning a string containing the requested data URL.
94
85
  * @example
95
86
  * renderer.toDataURL().then((dataURL) => console.log(dataURL));
96
87
  */
97
- toDataURL(options?: {
98
- type?: string | undefined;
99
- quality?: number | undefined;
100
- } | undefined): Promise<any>;
88
+ toDataURL(type?: string | undefined, quality?: number | undefined): Promise<any>;
101
89
  /**
102
90
  * invalidate the current CanvasTexture, and force a reupload of the corresponding texture
103
91
  * (call this if you modify the canvas content between two draw calls)
@@ -109,14 +97,14 @@ declare class CanvasTexture {
109
97
  * @ignore
110
98
  */
111
99
  destroy(): void;
112
- public set width(arg: number);
100
+ public set width(val: number);
113
101
  /**
114
102
  * The width of this canvas texture in pixels
115
103
  * @public
116
104
  * @type {number}
117
105
  */
118
106
  public get width(): number;
119
- public set height(arg: number);
107
+ public set height(val: number);
120
108
  /**
121
109
  * The height of this canvas texture in pixels
122
110
  * @public
@@ -65,7 +65,8 @@ export default class QuadCompositor extends Compositor {
65
65
  * @param {number} u1 - Texture UV (u1) value.
66
66
  * @param {number} v1 - Texture UV (v1) value.
67
67
  * @param {number} tint - tint color to be applied to the texture in UINT32 (argb) format
68
+ * @param {boolean} reupload - Force the texture to be reuploaded even if already bound
68
69
  */
69
- addQuad(texture: TextureAtlas, x: number, y: number, w: number, h: number, u0: number, v0: number, u1: number, v1: number, tint: number): void;
70
+ addQuad(texture: TextureAtlas, x: number, y: number, w: number, h: number, u0: number, v0: number, u1: number, v1: number, tint: number, reupload?: boolean): void;
70
71
  }
71
72
  import Compositor from "./compositor.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "melonjs",
3
- "version": "15.15.0",
3
+ "version": "16.1.0",
4
4
  "description": "melonJS Game Engine",
5
5
  "homepage": "http://www.melonjs.org/",
6
6
  "type": "module",
@@ -35,7 +35,7 @@
35
35
  "author": "Olivier Biot (AltByte Pte Ltd)",
36
36
  "funding": "https://github.com/sponsors/melonjs",
37
37
  "engines": {
38
- "node": ">= 19"
38
+ "node": ">= 20"
39
39
  },
40
40
  "main": "dist/melonjs.module.js",
41
41
  "module": "dist/melonjs.module.js",
@@ -53,37 +53,38 @@
53
53
  ],
54
54
  "dependencies": {
55
55
  "@teppeis/multimaps": "^3.0.0",
56
- "core-js": "^3.33.3",
56
+ "core-js": "^3.35.1",
57
57
  "earcut": "2.2.4",
58
58
  "eventemitter3": "^5.0.1",
59
- "howler": "2.2.4"
59
+ "howler": "2.2.4",
60
+ "whatwg-fetch": "^3.6.20"
60
61
  },
61
62
  "devDependencies": {
62
- "@babel/eslint-parser": "^7.23.3",
63
+ "@babel/eslint-parser": "^7.23.10",
63
64
  "@babel/plugin-syntax-import-assertions": "^7.23.3",
64
- "@fastify/static": "^6.12.0",
65
+ "@fastify/static": "^7.0.0",
65
66
  "@melonjs/webdoc-theme": "^1.1.1",
66
67
  "@rollup/plugin-commonjs": "^25.0.7",
67
68
  "@rollup/plugin-image": "^3.0.3",
68
69
  "@rollup/plugin-node-resolve": "^15.2.3",
69
70
  "@rollup/plugin-replace": "^5.0.5",
70
71
  "@webdoc/cli": "^2.2.0",
71
- "chromedriver": "^119.0.1",
72
+ "chromedriver": "^121.0.0",
72
73
  "cross-env": "^7.0.3",
73
74
  "del-cli": "^5.1.0",
74
- "eslint": "^8.54.0",
75
- "eslint-plugin-jsdoc": "^46.9.0",
75
+ "eslint": "^8.56.0",
76
+ "eslint-plugin-jsdoc": "^48.0.5",
76
77
  "expect": "^29.7.0",
77
- "expect-mocha-image-snapshot": "^3.0.15",
78
- "fastify": "^4.24.3",
78
+ "expect-mocha-image-snapshot": "^3.0.16",
79
+ "fastify": "^4.26.0",
79
80
  "mocha": "^10.2.0",
80
81
  "npm-self-link": "^1.1.7",
81
- "puppeteer": "^21.5.2",
82
- "rollup": "^4.5.0",
82
+ "puppeteer": "^22.0.0",
83
+ "rollup": "^4.9.6",
83
84
  "rollup-plugin-bundle-size": "^1.0.3",
84
85
  "rollup-plugin-string": "^3.0.0",
85
- "terser": "^5.24.0",
86
- "typescript": "^5.2.2"
86
+ "terser": "^5.27.0",
87
+ "typescript": "^5.3.3"
87
88
  },
88
89
  "scripts": {
89
90
  "build": "npm run lint && rollup -c --silent",
@@ -17,13 +17,15 @@ export const defaultSettings = {
17
17
  powerPreference : "default",
18
18
  verbose : false,
19
19
  consoleHeader : true,
20
- legacy : false
20
+ legacy : false,
21
+ canvas : undefined
21
22
  };
22
23
 
23
24
  /**
24
25
  * Application & Renderer Settings definition.
25
26
  * @typedef {object} Settings
26
27
  * @property {string|HTMLElement} [parent=document.body] - the DOM parent element to hold the canvas in the HTML file
28
+ * @property {HTMLCanvasElement} [canvas] - an existing canvas element to use as the renderer target (by default melonJS will create its own canvas based on given parameters)
27
29
  * @property {number|Renderer} [renderer=AUTO] - renderer to use (CANVAS, WEBGL, AUTO), or a custom renderer class
28
30
  * @property {number|string} [scale=1.0] - enable scaling of the canvas ('auto' for automatic scaling)
29
31
  * @property {"fit"|"fill-min"|"fill-max"|"flex"|"flex-width"|"flex-height"|"stretch"} [scaleMethod="fit"] - screen scaling modes : <br>
@@ -159,7 +159,9 @@ export function load(sound, onloadcb, onerrorcb) {
159
159
  audioTracks[sound.name] = new Howl({
160
160
  src : urls,
161
161
  volume : Howler.volume(),
162
- html5 : sound.stream === true || sound.html5 === true,
162
+ autoplay : sound.autoplay === true,
163
+ loop : sound.loop = true,
164
+ html5 : sound.stream === true || sound.html5 === true,
163
165
  xhrWithCredentials : withCredentials,
164
166
  onloaderror() {
165
167
  soundLoadError.call(this, sound.name, onerrorcb);
@@ -189,17 +189,15 @@ export default class Ellipse {
189
189
  * // do something
190
190
  * }
191
191
  */
192
- contains() {
192
+ contains(...args) {
193
193
  let _x, _y;
194
194
 
195
- if (arguments.length === 2) {
195
+ if (args.length === 2) {
196
196
  // x, y
197
- _x = arguments[0];
198
- _y = arguments[1];
197
+ [_x, _y] = args;
199
198
  } else {
200
199
  // vector
201
- _x = arguments[0].x;
202
- _y = arguments[0].y;
200
+ [_x, _y] = [args[0].x, args[0].y];
203
201
  }
204
202
 
205
203
  // Make position relative to object center point.