melonjs 10.5.2 → 10.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -6
- package/dist/melonjs.js +4314 -4177
- package/dist/melonjs.min.js +14 -14
- package/dist/melonjs.module.d.ts +242 -267
- package/dist/melonjs.module.js +4646 -4523
- package/package.json +10 -10
- package/src/camera/camera2d.js +11 -10
- package/src/geometries/ellipse.js +1 -1
- package/src/geometries/poly.js +1 -1
- package/src/index.js +1 -1
- package/src/input/pointerevent.js +1 -1
- package/src/level/tiled/TMXLayer.js +1 -1
- package/src/level/tiled/TMXTileMap.js +1 -1
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
- package/src/loader/loadingscreen.js +1 -1
- package/src/math/color.js +1 -1
- package/src/math/matrix2.js +2 -2
- package/src/math/matrix3.js +1 -1
- package/src/math/observable_vector2.js +1 -1
- package/src/math/observable_vector3.js +1 -1
- package/src/math/vector2.js +1 -1
- package/src/math/vector3.js +1 -1
- package/src/particles/emitter.js +1 -1
- package/src/physics/body.js +7 -7
- package/src/renderable/colorlayer.js +1 -1
- package/src/renderable/container.js +11 -1
- package/src/renderable/imagelayer.js +1 -1
- package/src/renderable/nineslicesprite.js +6 -3
- package/src/renderable/renderable.js +18 -1
- package/src/renderable/sprite.js +2 -2
- package/src/state/state.js +6 -6
- package/src/system/pooling.js +150 -155
- package/src/text/bitmaptext.js +30 -86
- package/src/text/text.js +82 -145
- package/src/text/textmetrics.js +168 -0
- package/src/text/textstyle.js +14 -0
- package/src/video/canvas/canvas_renderer.js +21 -5
- package/src/video/renderer.js +1 -3
- package/src/video/texture.js +1 -1
- package/src/video/webgl/buffer/vertex.js +0 -3
- package/src/video/webgl/glshader.js +0 -2
- package/src/video/webgl/webgl_renderer.js +46 -19
package/src/video/texture.js
CHANGED
|
@@ -3,7 +3,7 @@ import WebGLRenderer from "./webgl/webgl_renderer.js";
|
|
|
3
3
|
import TextureCache from "./texture_cache.js";
|
|
4
4
|
import Sprite from "./../renderable/sprite.js";
|
|
5
5
|
import { renderer } from "./video.js";
|
|
6
|
-
import pool from "./../system/pooling.js";
|
|
6
|
+
import * as pool from "./../system/pooling.js";
|
|
7
7
|
import loader from "./../loader/loader.js";
|
|
8
8
|
import { ETA } from "./../math/math.js";
|
|
9
9
|
|
|
@@ -7,7 +7,7 @@ import TextureCache from "./../texture_cache.js";
|
|
|
7
7
|
import { TextureAtlas, createAtlas } from "./../texture.js";
|
|
8
8
|
import { createCanvas, renderer } from "./../video.js";
|
|
9
9
|
import * as event from "./../../system/event.js";
|
|
10
|
-
import pool from "./../../system/pooling.js";
|
|
10
|
+
import * as pool from "./../../system/pooling.js";
|
|
11
11
|
import { isPowerOfTwo, nextPowerOfTwo, TAU } from "./../../math/math.js";
|
|
12
12
|
|
|
13
13
|
|
|
@@ -100,6 +100,11 @@ class WebGLRenderer extends Renderer {
|
|
|
100
100
|
*/
|
|
101
101
|
this._scissorStack = [];
|
|
102
102
|
|
|
103
|
+
/**
|
|
104
|
+
* @ignore
|
|
105
|
+
*/
|
|
106
|
+
this._blendStack = [];
|
|
107
|
+
|
|
103
108
|
/**
|
|
104
109
|
* @ignore
|
|
105
110
|
*/
|
|
@@ -172,8 +177,6 @@ class WebGLRenderer extends Renderer {
|
|
|
172
177
|
this.isContextValid = true;
|
|
173
178
|
event.emit(event.WEBGL_ONCONTEXT_RESTORED, this);
|
|
174
179
|
}, false );
|
|
175
|
-
|
|
176
|
-
return this;
|
|
177
180
|
}
|
|
178
181
|
|
|
179
182
|
/**
|
|
@@ -561,28 +564,48 @@ class WebGLRenderer extends Renderer {
|
|
|
561
564
|
}
|
|
562
565
|
|
|
563
566
|
/**
|
|
564
|
-
* set a blend mode for the given context
|
|
567
|
+
* set a blend mode for the given context. <br>
|
|
568
|
+
* Supported blend mode between Canvas and WebGL remderer : <br>
|
|
569
|
+
* - "normal" : this is the default mode and draws new content on top of the existing content <br>
|
|
570
|
+
* <img src="images/normal-blendmode.png" width="510"/> <br>
|
|
571
|
+
* - "multiply" : the pixels of the top layer are multiplied with the corresponding pixel of the bottom layer. A darker picture is the result. <br>
|
|
572
|
+
* <img src="images/multiply-blendmode.png" width="510"/> <br>
|
|
573
|
+
* - "lighter" : where both content overlap the color is determined by adding color values. <br>
|
|
574
|
+
* <img src="images/lighter-blendmode.png" width="510"/> <br>
|
|
575
|
+
* - "screen" : The pixels are inverted, multiplied, and inverted again. A lighter picture is the result (opposite of multiply) <br>
|
|
576
|
+
* <img src="images/screen-blendmode.png" width="510"/> <br>
|
|
565
577
|
* @name setBlendMode
|
|
578
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation
|
|
566
579
|
* @memberof WebGLRenderer.prototype
|
|
567
580
|
* @function
|
|
568
|
-
* @param {string} [mode="normal"] blend mode : "normal", "multiply"
|
|
581
|
+
* @param {string} [mode="normal"] blend mode : "normal", "multiply", "lighter", "screen"
|
|
569
582
|
* @param {WebGLRenderingContext} [gl]
|
|
570
583
|
*/
|
|
571
|
-
setBlendMode(mode, gl) {
|
|
572
|
-
gl = gl || this.gl;
|
|
573
|
-
|
|
584
|
+
setBlendMode(mode = "normal", gl = this.gl) {
|
|
574
585
|
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
+
if (this.currentBlendMode !== mode) {
|
|
587
|
+
this.flush();
|
|
588
|
+
gl.enable(gl.BLEND);
|
|
589
|
+
this.currentBlendMode = mode;
|
|
590
|
+
|
|
591
|
+
switch (mode) {
|
|
592
|
+
case "screen" :
|
|
593
|
+
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_COLOR);
|
|
594
|
+
break;
|
|
595
|
+
|
|
596
|
+
case "lighter" :
|
|
597
|
+
gl.blendFunc(gl.ONE, gl.ONE);
|
|
598
|
+
break;
|
|
599
|
+
|
|
600
|
+
case "multiply" :
|
|
601
|
+
gl.blendFunc(gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA);
|
|
602
|
+
break;
|
|
603
|
+
|
|
604
|
+
default :
|
|
605
|
+
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
606
|
+
this.currentBlendMode = "normal";
|
|
607
|
+
break;
|
|
608
|
+
}
|
|
586
609
|
}
|
|
587
610
|
}
|
|
588
611
|
|
|
@@ -616,6 +639,8 @@ class WebGLRenderer extends Renderer {
|
|
|
616
639
|
this.currentColor.copy(color);
|
|
617
640
|
this.currentTransform.copy(matrix);
|
|
618
641
|
|
|
642
|
+
this.setBlendMode(this._blendStack.pop());
|
|
643
|
+
|
|
619
644
|
// recycle objects
|
|
620
645
|
pool.push(color);
|
|
621
646
|
pool.push(matrix);
|
|
@@ -648,6 +673,8 @@ class WebGLRenderer extends Renderer {
|
|
|
648
673
|
// FIXME avoid slice and object realloc
|
|
649
674
|
this._scissorStack.push(this.currentScissor.slice());
|
|
650
675
|
}
|
|
676
|
+
|
|
677
|
+
this._blendStack.push(this.getBlendMode());
|
|
651
678
|
}
|
|
652
679
|
|
|
653
680
|
/**
|