melonjs 10.5.1 → 10.6.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.
- package/README.md +4 -6
- package/dist/melonjs.js +4342 -4182
- package/dist/melonjs.min.js +14 -14
- package/dist/melonjs.module.d.ts +250 -267
- package/dist/melonjs.module.js +4752 -4606
- 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 +35 -91
- 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_compositor.js +11 -0
- package/src/video/webgl/webgl_renderer.js +58 -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
|
|
|
@@ -359,6 +359,17 @@ class WebGLCompositor {
|
|
|
359
359
|
return this.currentTextureUnit;
|
|
360
360
|
}
|
|
361
361
|
|
|
362
|
+
/**
|
|
363
|
+
* set/change the current projection matrix
|
|
364
|
+
* @name setProjection
|
|
365
|
+
* @memberof WebGLCompositor
|
|
366
|
+
* @function
|
|
367
|
+
* @param {Matrix3d} matrix
|
|
368
|
+
*/
|
|
369
|
+
setProjection(matrix) {
|
|
370
|
+
this.activeShader.setUniform("uProjectionMatrix", matrix);
|
|
371
|
+
}
|
|
372
|
+
|
|
362
373
|
/**
|
|
363
374
|
* Select the shader to use for compositing
|
|
364
375
|
* @name useShader
|
|
@@ -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
|
/**
|
|
@@ -319,6 +322,18 @@ class WebGLRenderer extends Renderer {
|
|
|
319
322
|
this.currentCompositor.flush();
|
|
320
323
|
}
|
|
321
324
|
|
|
325
|
+
/**
|
|
326
|
+
* set/change the current projection matrix (WebGL only)
|
|
327
|
+
* @name setProjection
|
|
328
|
+
* @memberof WebGLRenderer.prototype
|
|
329
|
+
* @function
|
|
330
|
+
* @param {Matrix3d} matrix
|
|
331
|
+
*/
|
|
332
|
+
setProjection(matrix) {
|
|
333
|
+
super.setProjection(matrix);
|
|
334
|
+
this.currentCompositor.setProjection(matrix);
|
|
335
|
+
}
|
|
336
|
+
|
|
322
337
|
/**
|
|
323
338
|
* Clears the gl context with the given color.
|
|
324
339
|
* @name clearColor
|
|
@@ -549,28 +564,48 @@ class WebGLRenderer extends Renderer {
|
|
|
549
564
|
}
|
|
550
565
|
|
|
551
566
|
/**
|
|
552
|
-
* 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>
|
|
553
577
|
* @name setBlendMode
|
|
578
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation
|
|
554
579
|
* @memberof WebGLRenderer.prototype
|
|
555
580
|
* @function
|
|
556
|
-
* @param {string} [mode="normal"] blend mode : "normal", "multiply"
|
|
581
|
+
* @param {string} [mode="normal"] blend mode : "normal", "multiply", "lighter", "screen"
|
|
557
582
|
* @param {WebGLRenderingContext} [gl]
|
|
558
583
|
*/
|
|
559
|
-
setBlendMode(mode, gl) {
|
|
560
|
-
gl = gl || this.gl;
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
gl.enable(gl.BLEND);
|
|
564
|
-
switch (mode) {
|
|
565
|
-
case "multiply" :
|
|
566
|
-
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
|
|
567
|
-
this.currentBlendMode = mode;
|
|
568
|
-
break;
|
|
584
|
+
setBlendMode(mode = "normal", gl = this.gl) {
|
|
569
585
|
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
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
|
+
}
|
|
574
609
|
}
|
|
575
610
|
}
|
|
576
611
|
|
|
@@ -604,6 +639,8 @@ class WebGLRenderer extends Renderer {
|
|
|
604
639
|
this.currentColor.copy(color);
|
|
605
640
|
this.currentTransform.copy(matrix);
|
|
606
641
|
|
|
642
|
+
this.setBlendMode(this._blendStack.pop());
|
|
643
|
+
|
|
607
644
|
// recycle objects
|
|
608
645
|
pool.push(color);
|
|
609
646
|
pool.push(matrix);
|
|
@@ -636,6 +673,8 @@ class WebGLRenderer extends Renderer {
|
|
|
636
673
|
// FIXME avoid slice and object realloc
|
|
637
674
|
this._scissorStack.push(this.currentScissor.slice());
|
|
638
675
|
}
|
|
676
|
+
|
|
677
|
+
this._blendStack.push(this.getBlendMode());
|
|
639
678
|
}
|
|
640
679
|
|
|
641
680
|
/**
|