melonjs 9.1.0 → 10.0.1

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 (78) hide show
  1. package/{LICENSE → LICENSE.md} +0 -0
  2. package/README.md +93 -57
  3. package/dist/melonjs.js +10334 -11179
  4. package/dist/melonjs.min.js +4 -10
  5. package/dist/melonjs.module.d.ts +13206 -0
  6. package/dist/melonjs.module.js +9913 -10872
  7. package/package.json +19 -14
  8. package/src/audio/audio.js +477 -553
  9. package/src/camera/camera2d.js +67 -65
  10. package/src/entity/draggable.js +26 -35
  11. package/src/entity/droptarget.js +17 -14
  12. package/src/entity/entity.js +59 -79
  13. package/src/game.js +194 -204
  14. package/src/index.js +12 -30
  15. package/src/input/gamepad.js +8 -19
  16. package/src/input/keyboard.js +4 -4
  17. package/src/input/pointer.js +14 -12
  18. package/src/input/pointerevent.js +15 -13
  19. package/src/lang/deprecated.js +2 -887
  20. package/src/level/level.js +3 -3
  21. package/src/level/tiled/TMXGroup.js +7 -11
  22. package/src/level/tiled/TMXLayer.js +33 -32
  23. package/src/level/tiled/TMXTileMap.js +15 -19
  24. package/src/level/tiled/TMXTileset.js +5 -5
  25. package/src/level/tiled/TMXUtils.js +3 -3
  26. package/src/level/tiled/renderer/TMXRenderer.js +4 -0
  27. package/src/loader/loader.js +8 -23
  28. package/src/loader/loadingscreen.js +51 -60
  29. package/src/math/matrix3.js +1 -1
  30. package/src/particles/emitter.js +36 -39
  31. package/src/particles/particle.js +27 -12
  32. package/src/particles/particlecontainer.js +17 -16
  33. package/src/physics/body.js +80 -118
  34. package/src/physics/collision.js +5 -235
  35. package/src/physics/detector.js +235 -0
  36. package/src/physics/quadtree.js +14 -14
  37. package/src/physics/world.js +84 -18
  38. package/src/plugin/plugin.js +26 -24
  39. package/src/polyfill/console.js +9 -14
  40. package/src/renderable/GUI.js +48 -62
  41. package/src/renderable/collectable.js +11 -4
  42. package/src/renderable/colorlayer.js +28 -26
  43. package/src/renderable/container.js +120 -96
  44. package/src/renderable/imagelayer.js +94 -93
  45. package/src/renderable/renderable.js +164 -138
  46. package/src/renderable/sprite.js +42 -44
  47. package/src/renderable/trigger.js +24 -17
  48. package/src/shapes/ellipse.js +27 -27
  49. package/src/shapes/line.js +12 -8
  50. package/src/shapes/poly.js +77 -49
  51. package/src/shapes/rectangle.js +193 -268
  52. package/src/state/stage.js +23 -25
  53. package/src/state/state.js +35 -86
  54. package/src/system/device.js +233 -285
  55. package/src/system/event.js +485 -432
  56. package/src/system/pooling.js +61 -54
  57. package/src/system/save.js +17 -16
  58. package/src/system/timer.js +34 -38
  59. package/src/text/bitmaptext.js +44 -46
  60. package/src/text/text.js +39 -34
  61. package/src/tweens/easing.js +0 -2
  62. package/src/tweens/interpolation.js +3 -8
  63. package/src/tweens/tween.js +332 -351
  64. package/src/utils/function.js +6 -8
  65. package/src/utils/utils.js +34 -30
  66. package/src/video/canvas/canvas_renderer.js +13 -8
  67. package/src/video/renderer.js +8 -7
  68. package/src/video/texture.js +8 -8
  69. package/src/video/texture_cache.js +5 -5
  70. package/src/video/video.js +373 -403
  71. package/src/video/webgl/glshader.js +2 -2
  72. package/src/video/webgl/webgl_compositor.js +14 -8
  73. package/src/video/webgl/webgl_renderer.js +21 -19
  74. package/plugins/debug/debugPanel.js +0 -770
  75. package/plugins/debug/font/PressStart2P.fnt +0 -100
  76. package/plugins/debug/font/PressStart2P.ltr +0 -1
  77. package/plugins/debug/font/PressStart2P.png +0 -0
  78. package/plugins/debug/particleDebugPanel.js +0 -303
@@ -1,4 +1,4 @@
1
- import event from "./../../system/event.js";
1
+ import * as event from "./../../system/event.js";
2
2
  import device from "./../../system/device.js";
3
3
 
4
4
  /**
@@ -286,7 +286,7 @@ class GLShader {
286
286
  this.uniforms = extractUniforms(this.gl, this);
287
287
 
288
288
  // destroy the shader on context lost (will be recreated on context restore)
289
- event.subscribe(event.WEBGL_ONCONTEXT_LOST, this.destroy.bind(this));
289
+ event.on(event.WEBGL_ONCONTEXT_LOST, this.destroy, this);
290
290
 
291
291
  return this;
292
292
  }
@@ -1,6 +1,6 @@
1
1
  import Vector2d from "./../../math/vector2.js";
2
2
  import GLShader from "./glshader.js";
3
- import event from "./../../system/event.js";
3
+ import * as event from "./../../system/event.js";
4
4
  import { isPowerOfTwo } from "./../../math/math.js";
5
5
 
6
6
  import primitiveVertex from "./shaders/primitive.vert";
@@ -39,6 +39,14 @@ var MAX_LENGTH = 16000;
39
39
  class WebGLCompositor {
40
40
 
41
41
  constructor (renderer) {
42
+ this.init(renderer);
43
+ }
44
+
45
+ /**
46
+ * Initialize the compositor
47
+ * @ignore
48
+ */
49
+ init (renderer) {
42
50
  // local reference
43
51
  var gl = renderer.gl;
44
52
 
@@ -133,12 +141,10 @@ class WebGLCompositor {
133
141
  gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.createIB(), gl.STATIC_DRAW);
134
142
 
135
143
  // register to the CANVAS resize channel
136
- event.subscribe(
137
- event.CANVAS_ONRESIZE, (function(width, height) {
138
- this.flush();
139
- this.setViewport(0, 0, width, height);
140
- }).bind(this)
141
- );
144
+ event.on(event.CANVAS_ONRESIZE, (width, height) => {
145
+ this.flush();
146
+ this.setViewport(0, 0, width, height);
147
+ });
142
148
 
143
149
  this.reset();
144
150
  }
@@ -507,7 +513,7 @@ class WebGLCompositor {
507
513
  * @memberOf me.WebGLCompositor
508
514
  * @function
509
515
  * @param {GLENUM} [mode=gl.TRIANGLES] primitive type to render (gl.POINTS, gl.LINE_STRIP, gl.LINE_LOOP, gl.LINES, gl.TRIANGLE_STRIP, gl.TRIANGLE_FAN, gl.TRIANGLES)
510
- * @param {me.Vector2d[]} verts vertices
516
+ * @param {me.Vector2d[]} [verts=[]] vertices
511
517
  * @param {Number} [vertexCount=verts.length] amount of points defined in the points array
512
518
  */
513
519
  drawVertices(mode, verts, vertexCount) {
@@ -5,8 +5,8 @@ import WebGLCompositor from "./webgl_compositor.js";
5
5
  import Renderer from "./../renderer.js";
6
6
  import TextureCache from "./../texture_cache.js";
7
7
  import {Texture, createAtlas } from "./../texture.js";
8
- import video from "./../video.js";
9
- import event from "./../../system/event.js";
8
+ import { createCanvas, renderer } from "./../video.js";
9
+ import * as event from "./../../system/event.js";
10
10
  import pool from "./../../system/pooling.js";
11
11
  import { isPowerOfTwo, nextPowerOfTwo, TAU } from "./../../math/math.js";
12
12
 
@@ -154,18 +154,16 @@ class WebGLRenderer extends Renderer {
154
154
  // to simulate context lost and restore :
155
155
  // var ctx = me.video.renderer.context.getExtension('WEBGL_lose_context');
156
156
  // ctx.loseContext()
157
- // reference to this renderer
158
- var renderer = this;
159
- this.getScreenCanvas().addEventListener("webglcontextlost", function (e) {
160
- event.preventDefault();
161
- renderer.isContextValid = false;
162
- event.publish(event.WEBGL_ONCONTEXT_LOST, [ renderer ]);
157
+ this.getScreenCanvas().addEventListener("webglcontextlost", (e) => {
158
+ e.preventDefault();
159
+ this.isContextValid = false;
160
+ event.emit(event.WEBGL_ONCONTEXT_LOST, this);
163
161
  }, false );
164
162
  // ctx.restoreContext()
165
- this.getScreenCanvas().addEventListener("webglcontextrestored", function (e) {
166
- renderer.reset();
167
- renderer.isContextValid = true;
168
- event.publish(event.WEBGL_ONCONTEXT_RESTORED, [ renderer ]);
163
+ this.getScreenCanvas().addEventListener("webglcontextrestored", () => {
164
+ this.reset();
165
+ this.isContextValid = true;
166
+ event.emit(event.WEBGL_ONCONTEXT_RESTORED, this);
169
167
  }, false );
170
168
 
171
169
  return this;
@@ -236,7 +234,7 @@ class WebGLRenderer extends Renderer {
236
234
  }
237
235
  }
238
236
 
239
- var image = video.createCanvas(width, height, true);
237
+ var image = createCanvas(width, height, true);
240
238
 
241
239
  /**
242
240
  * @ignore
@@ -272,7 +270,7 @@ class WebGLRenderer extends Renderer {
272
270
  */
273
271
  createPattern(image, repeat) {
274
272
 
275
- if (video.renderer.WebGLVersion === 1 && (!isPowerOfTwo(image.width) || !isPowerOfTwo(image.height))) {
273
+ if (renderer.WebGLVersion === 1 && (!isPowerOfTwo(image.width) || !isPowerOfTwo(image.height))) {
276
274
  var src = typeof image.src !== "undefined" ? image.src : image;
277
275
  throw new Error(
278
276
  "[WebGL Renderer] " + src + " is not a POT texture " +
@@ -694,8 +692,9 @@ class WebGLRenderer extends Renderer {
694
692
  * @param {Number} start start angle in radians
695
693
  * @param {Number} end end angle in radians
696
694
  * @param {Boolean} [antiClockwise=false] draw arc anti-clockwise
695
+ * @param {Boolean} [fill=false]
697
696
  */
698
- strokeArc(x, y, radius, start, end, antiClockwise, fill) {
697
+ strokeArc(x, y, radius, start, end, antiClockwise = false, fill) {
699
698
  if (fill === true ) {
700
699
  this.fillArc(x, y, radius, start, end, antiClockwise);
701
700
  } else {
@@ -738,7 +737,7 @@ class WebGLRenderer extends Renderer {
738
737
  * @param {Number} end end angle in radians
739
738
  * @param {Boolean} [antiClockwise=false] draw arc anti-clockwise
740
739
  */
741
- fillArc(x, y, radius, start, end, antiClockwise) {
740
+ fillArc(x, y, radius, start, end /*, antiClockwise = false*/) {
742
741
  // XXX to be optimzed using a specific shader
743
742
  var points = this._glPoints;
744
743
  var i, index = 0;
@@ -778,8 +777,9 @@ class WebGLRenderer extends Renderer {
778
777
  * @param {Number} y ellipse center point y-axis
779
778
  * @param {Number} w horizontal radius of the ellipse
780
779
  * @param {Number} h vertical radius of the ellipse
780
+ * @param {Boolean} [fill=false] also fill the shape with the current color if true
781
781
  */
782
- strokeEllipse(x, y, w, h, fill) {
782
+ strokeEllipse(x, y, w, h, fill = false) {
783
783
  if (fill === true ) {
784
784
  this.fillEllipse(x, y, w, h);
785
785
  } else {
@@ -880,8 +880,9 @@ class WebGLRenderer extends Renderer {
880
880
  * @memberOf me.WebGLRenderer.prototype
881
881
  * @function
882
882
  * @param {me.Polygon} poly the shape to draw
883
+ * @param {Boolean} [fill=false] also fill the shape with the current color if true
883
884
  */
884
- strokePolygon(poly, fill) {
885
+ strokePolygon(poly, fill = false) {
885
886
  if (fill === true ) {
886
887
  this.fillPolygon(poly);
887
888
  } else {
@@ -940,8 +941,9 @@ class WebGLRenderer extends Renderer {
940
941
  * @param {Number} y
941
942
  * @param {Number} width
942
943
  * @param {Number} height
944
+ * @param {Boolean} [fill=false] also fill the shape with the current color if true
943
945
  */
944
- strokeRect(x, y, width, height, fill) {
946
+ strokeRect(x, y, width, height, fill = false) {
945
947
  if (fill === true ) {
946
948
  this.fillRect(x, y, width, height);
947
949
  } else {