melonjs 10.7.1 → 10.10.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 (74) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +29 -23
  3. package/dist/melonjs.js +2220 -1070
  4. package/dist/melonjs.min.js +4 -4
  5. package/dist/melonjs.module.d.ts +1395 -485
  6. package/dist/melonjs.module.js +2244 -1131
  7. package/package.json +17 -14
  8. package/src/camera/camera2d.js +1 -1
  9. package/src/entity/entity.js +6 -7
  10. package/src/game.js +2 -2
  11. package/src/geometries/ellipse.js +20 -21
  12. package/src/geometries/line.js +7 -7
  13. package/src/geometries/path2d.js +319 -0
  14. package/src/geometries/poly.js +27 -27
  15. package/src/geometries/rectangle.js +19 -19
  16. package/src/geometries/roundrect.js +164 -0
  17. package/src/index.js +12 -2
  18. package/src/input/gamepad.js +2 -2
  19. package/src/input/pointerevent.js +1 -1
  20. package/src/lang/deprecated.js +8 -6
  21. package/src/level/tiled/TMXLayer.js +1 -1
  22. package/src/level/tiled/TMXObject.js +9 -12
  23. package/src/level/tiled/TMXTileMap.js +23 -4
  24. package/src/level/tiled/TMXUtils.js +1 -1
  25. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
  26. package/src/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  27. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  28. package/src/level/tiled/renderer/TMXRenderer.js +1 -1
  29. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  30. package/src/loader/loader.js +4 -4
  31. package/src/loader/loadingscreen.js +17 -6
  32. package/src/math/color.js +6 -5
  33. package/src/math/matrix2.js +1 -1
  34. package/src/math/matrix3.js +1 -1
  35. package/src/math/observable_vector2.js +1 -1
  36. package/src/math/observable_vector3.js +1 -1
  37. package/src/math/vector2.js +1 -1
  38. package/src/math/vector3.js +1 -1
  39. package/src/particles/emitter.js +34 -26
  40. package/src/particles/particle.js +3 -2
  41. package/src/physics/body.js +67 -51
  42. package/src/physics/bounds.js +8 -9
  43. package/src/physics/world.js +1 -1
  44. package/src/polyfill/index.js +1 -0
  45. package/src/polyfill/roundrect.js +235 -0
  46. package/src/renderable/GUI.js +5 -5
  47. package/src/renderable/collectable.js +9 -2
  48. package/src/renderable/colorlayer.js +1 -1
  49. package/src/renderable/container.js +27 -27
  50. package/src/renderable/imagelayer.js +3 -3
  51. package/src/renderable/light2d.js +115 -0
  52. package/src/renderable/renderable.js +23 -22
  53. package/src/renderable/sprite.js +15 -16
  54. package/src/renderable/trigger.js +10 -4
  55. package/src/state/stage.js +73 -3
  56. package/src/state/state.js +1 -1
  57. package/src/system/device.js +10 -8
  58. package/src/system/pooling.js +156 -149
  59. package/src/text/bitmaptext.js +1 -1
  60. package/src/text/text.js +14 -18
  61. package/src/utils/utils.js +2 -2
  62. package/src/video/canvas/canvas_renderer.js +144 -81
  63. package/src/video/renderer.js +64 -37
  64. package/src/video/{texture.js → texture/atlas.js} +8 -8
  65. package/src/video/{texture_cache.js → texture/cache.js} +4 -4
  66. package/src/video/texture/canvas_texture.js +87 -0
  67. package/src/video/webgl/glshader.js +29 -193
  68. package/src/video/webgl/utils/attributes.js +16 -0
  69. package/src/video/webgl/utils/precision.js +11 -0
  70. package/src/video/webgl/utils/program.js +58 -0
  71. package/src/video/webgl/utils/string.js +16 -0
  72. package/src/video/webgl/utils/uniforms.js +87 -0
  73. package/src/video/webgl/webgl_compositor.js +1 -14
  74. package/src/video/webgl/webgl_renderer.js +191 -231
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @ignore
3
+ */
4
+ function compileShader(gl, type, source) {
5
+ var shader = gl.createShader(type);
6
+ gl.shaderSource(shader, source);
7
+ gl.compileShader(shader);
8
+
9
+ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
10
+ throw new Error(gl.getShaderInfoLog(shader));
11
+ }
12
+
13
+ return shader;
14
+ };
15
+
16
+ /**
17
+ * Compile GLSL into a shader object
18
+ * @ignore
19
+ */
20
+ export function compileProgram(gl, vertex, fragment, attributes) {
21
+ var vertShader = compileShader(gl, gl.VERTEX_SHADER, vertex);
22
+ var fragShader = compileShader(gl, gl.FRAGMENT_SHADER, fragment);
23
+
24
+ var program = gl.createProgram();
25
+
26
+ gl.attachShader(program, vertShader);
27
+ gl.attachShader(program, fragShader);
28
+
29
+
30
+ // force vertex attributes to use location 0 as starting location to prevent
31
+ // browser to do complicated emulation when running on desktop OpenGL (e.g. on macOS)
32
+ for (var location in attributes) {
33
+ gl.bindAttribLocation(program, attributes[location], location);
34
+ }
35
+
36
+ gl.linkProgram(program);
37
+
38
+ if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
39
+ var error_msg =
40
+ "Error initializing Shader " + this + "\n" +
41
+ "gl.VALIDATE_STATUS: " + gl.getProgramParameter(program, gl.VALIDATE_STATUS) + "\n" +
42
+ "gl.getError()" + gl.getError() + "\n" +
43
+ "gl.getProgramInfoLog()" + gl.getProgramInfoLog(program);
44
+ // house cleaning
45
+ gl.deleteProgram(program);
46
+ program = null;
47
+ // throw the exception
48
+ throw new Error(error_msg);
49
+ }
50
+
51
+ gl.useProgram(program);
52
+
53
+ // clean-up
54
+ gl.deleteShader(vertShader);
55
+ gl.deleteShader(fragShader);
56
+
57
+ return program;
58
+ };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * clean the given source from space, comments, etc...
3
+ * @ignore
4
+ */
5
+ export function minify(src) {
6
+ // remove comments
7
+ src = src.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm, "$1");
8
+ // Remove leading and trailing whitespace from lines
9
+ src = src.replace(/(\\n\s+)|(\s+\\n)/g, "");
10
+ // Remove line breaks
11
+ src = src.replace(/(\\r|\\n)+/g, "");
12
+ // Remove unnecessary whitespace
13
+ src = src.replace(/\s*([;,[\](){}\\\/\-+*|^&!=<>?~%])\s*/g, "$1");
14
+
15
+ return src;
16
+ };
@@ -0,0 +1,87 @@
1
+
2
+ /**
3
+ * Hash map of GLSL data types to WebGL Uniform methods
4
+ * @ignore
5
+ */
6
+ const fnHash = {
7
+ "bool" : "1i",
8
+ "int" : "1i",
9
+ "float" : "1f",
10
+ "vec2" : "2fv",
11
+ "vec3" : "3fv",
12
+ "vec4" : "4fv",
13
+ "bvec2" : "2iv",
14
+ "bvec3" : "3iv",
15
+ "bvec4" : "4iv",
16
+ "ivec2" : "2iv",
17
+ "ivec3" : "3iv",
18
+ "ivec4" : "4iv",
19
+ "mat2" : "Matrix2fv",
20
+ "mat3" : "Matrix3fv",
21
+ "mat4" : "Matrix4fv",
22
+ "sampler2D" : "1i"
23
+ };
24
+
25
+ /**
26
+ * @ignore
27
+ */
28
+ export function extractUniforms(gl, shader) {
29
+ var uniforms = {},
30
+ uniRx = /uniform\s+(\w+)\s+(\w+)/g,
31
+ uniformsData = {},
32
+ descriptor = {},
33
+ locations = {},
34
+ match;
35
+
36
+ // Detect all uniform names and types
37
+ [ shader.vertex, shader.fragment ].forEach(function (shader) {
38
+ while ((match = uniRx.exec(shader))) {
39
+ uniformsData[match[2]] = match[1];
40
+ }
41
+ });
42
+
43
+ // Get uniform references
44
+ Object.keys(uniformsData).forEach(function (name) {
45
+ var type = uniformsData[name];
46
+ locations[name] = gl.getUniformLocation(shader.program, name);
47
+
48
+ descriptor[name] = {
49
+ "get" : (function (name) {
50
+ /**
51
+ * A getter for the uniform location
52
+ * @ignore
53
+ */
54
+ return function () {
55
+ return locations[name];
56
+ };
57
+ })(name),
58
+ "set" : (function (name, type, fn) {
59
+ if (type.indexOf("mat") === 0) {
60
+ /**
61
+ * A generic setter for uniform matrices
62
+ * @ignore
63
+ */
64
+ return function (val) {
65
+ gl[fn](locations[name], false, val);
66
+ };
67
+ }
68
+ else {
69
+ /**
70
+ * A generic setter for uniform vectors
71
+ * @ignore
72
+ */
73
+ return function (val) {
74
+ var fnv = fn;
75
+ if (val.length && fn.slice(-1) !== "v") {
76
+ fnv += "v";
77
+ }
78
+ gl[fnv](locations[name], val);
79
+ };
80
+ }
81
+ })(name, type, "uniform" + fnHash[type])
82
+ };
83
+ });
84
+ Object.defineProperties(uniforms, descriptor);
85
+
86
+ return uniforms;
87
+ };
@@ -384,20 +384,7 @@ class WebGLCompositor {
384
384
  this.activeShader = shader;
385
385
  this.activeShader.bind();
386
386
  this.activeShader.setUniform("uProjectionMatrix", this.renderer.projectionMatrix);
387
-
388
- // set the vertex attributes
389
- for (var index = 0; index < this.attributes.length; ++index) {
390
- var gl = this.gl;
391
- var element = this.attributes[index];
392
- var location = this.activeShader.getAttribLocation(element.name);
393
-
394
- if (location !== -1) {
395
- gl.enableVertexAttribArray(location);
396
- gl.vertexAttribPointer(location, element.size, element.type, element.normalized, this.vertexByteSize, element.offset);
397
- } else {
398
- gl.disableVertexAttribArray(index);
399
- }
400
- }
387
+ this.activeShader.setVertexAttributes(this.gl, this.attributes, this.vertexByteSize);
401
388
  }
402
389
  }
403
390