Skip to content

Commit f607f1f

Browse files
author
scott.liu
committed
phaserjs#3673 fix nested mask behaviour for Phaser.CANVAS mode
1 parent 58d40fa commit f607f1f

2 files changed

Lines changed: 20 additions & 3 deletions

File tree

src/gameobjects/container/ContainerCanvasRenderer.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,12 @@ var ContainerCanvasRenderer = function (renderer, container, interpolationPercen
5454

5555
var alpha = container._alpha;
5656
var scrollFactorX = container.scrollFactorX;
57-
var scrollFactorY = container.scrollFactorY;
57+
var scrollFactorY = container.scrollFactorY;
58+
59+
if (container.mask) {
60+
container.mask.preRenderCanvas(renderer, null, camera);
61+
}
62+
5863

5964
for (var i = 0; i < children.length; i++)
6065
{
@@ -85,7 +90,11 @@ var ContainerCanvasRenderer = function (renderer, container, interpolationPercen
8590
// Restore original values
8691
child.setAlpha(childAlpha);
8792
child.setScrollFactor(childScrollFactorX, childScrollFactorY);
88-
}
93+
}
94+
95+
if (container.mask) {
96+
container.mask.postRenderCanvas(renderer);
97+
}
8998
};
9099

91100
module.exports = ContainerCanvasRenderer;

src/renderer/canvas/CanvasRenderer.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -765,10 +765,18 @@ var CanvasRenderer = new Class({
765765

766766
ctx.globalAlpha = alpha;
767767

768-
ctx.imageSmoothingEnabled = !(!this.antialias || frame.source.scaleMode);
768+
ctx.imageSmoothingEnabled = !(!this.antialias || frame.source.scaleMode);
769+
770+
if (sprite.mask) {
771+
sprite.mask.preRenderCanvas(this, sprite, camera);
772+
}
769773

770774
ctx.drawImage(frame.source.image, frameX, frameY, frameWidth, frameHeight, x, y, frameWidth / res, frameHeight / res);
771775

776+
if (sprite.mask) {
777+
sprite.mask.postRenderCanvas(this, sprite, camera);
778+
}
779+
772780
ctx.restore();
773781
},
774782

0 commit comments

Comments
 (0)