Skip to content

Commit c232642

Browse files
committed
Parent matrix is applied to canvas context on each draw function
1 parent eafb488 commit c232642

10 files changed

Lines changed: 59 additions & 5 deletions

File tree

src/display/mask/GeometryMask.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ var GeometryMask = new Class({
115115

116116
renderer.currentContext.save();
117117

118-
geometryMask.renderCanvas(renderer, geometryMask, 0.0, camera, null, true);
118+
geometryMask.renderCanvas(renderer, geometryMask, 0.0, camera, undefined, null, true);
119119

120120
renderer.currentContext.clip();
121121
},

src/gameobjects/bitmaptext/dynamic/DynamicBitmapTextCanvasRenderer.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,12 @@ var DynamicBitmapTextCanvasRenderer = function (renderer, src, interpolationPerc
9090

9191
ctx.save();
9292

93+
if (parentMatrix !== undefined)
94+
{
95+
var matrix = parentMatrix.matrix;
96+
ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
97+
}
98+
9399
ctx.translate(src.x, src.y);
94100

95101
ctx.rotate(src.rotation);

src/gameobjects/bitmaptext/static/BitmapTextCanvasRenderer.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ var BitmapTextCanvasRenderer = function (renderer, src, interpolationPercentage,
9696

9797
ctx.save();
9898

99+
if (parentMatrix !== undefined)
100+
{
101+
var matrix = parentMatrix.matrix;
102+
ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
103+
}
104+
99105
ctx.translate(tx, ty);
100106

101107
ctx.rotate(src.rotation);

src/gameobjects/blitter/BlitterCanvasRenderer.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ var BlitterCanvasRenderer = function (renderer, src, interpolationPercentage, ca
3636
var cameraScrollX = src.x - camera.scrollX * src.scrollFactorX;
3737
var cameraScrollY = src.y - camera.scrollY * src.scrollFactorY;
3838

39+
ctx.save();
40+
41+
if (parentMatrix !== undefined)
42+
{
43+
var matrix = parentMatrix.matrix;
44+
ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
45+
}
46+
3947
// Render bobs
4048
for (var i = 0; i < list.length; i++)
4149
{
@@ -73,6 +81,8 @@ var BlitterCanvasRenderer = function (renderer, src, interpolationPercentage, ca
7381
ctx.restore();
7482
}
7583
}
84+
85+
ctx.restore();
7686
};
7787

7888
module.exports = BlitterCanvasRenderer;

src/gameobjects/graphics/GraphicsCanvasRenderer.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ var GameObject = require('../GameObject');
2020
* @param {Phaser.GameObjects.Graphics} src - The Game Object being rendered in this call.
2121
* @param {number} interpolationPercentage - Reserved for future use and custom pipelines.
2222
* @param {Phaser.Cameras.Scene2D.Camera} camera - The Camera that is rendering the Game Object.
23+
* @param {Phaser.GameObjects.Components.TransformMatrix} parentMatrix - This transform matrix is defined if the game object is nested
2324
* @param {CanvasRenderingContext2D} renderTargetCtx - [description]
2425
* @param {boolean} allowClip - [description]
25-
* @param {Phaser.GameObjects.Components.TransformMatrix} parentMatrix - This transform matrix is defined if the game object is nested
2626
*/
27-
var GraphicsCanvasRenderer = function (renderer, src, interpolationPercentage, camera, renderTargetCtx, allowClip, parentMatrix)
27+
var GraphicsCanvasRenderer = function (renderer, src, interpolationPercentage, camera, parentMatrix, renderTargetCtx, allowClip)
2828
{
2929
if (GameObject.RENDER_MASK !== src.renderFlags || (src.cameraFilter > 0 && (src.cameraFilter & camera._id)))
3030
{
@@ -70,6 +70,11 @@ var GraphicsCanvasRenderer = function (renderer, src, interpolationPercentage, c
7070
}
7171

7272
ctx.save();
73+
if (parentMatrix !== undefined)
74+
{
75+
var matrix = parentMatrix.matrix;
76+
ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
77+
}
7378
ctx.translate(srcX - cameraScrollX, srcY - cameraScrollY);
7479
ctx.rotate(srcRotation);
7580
ctx.scale(srcScaleX, srcScaleY);

src/gameobjects/particles/ParticleManagerCanvasRenderer.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ var ParticleManagerCanvasRenderer = function (renderer, emitterManager, interpol
3030
return;
3131
}
3232

33+
var ctx = renderer.currentContext;
34+
35+
ctx.save();
36+
if (parentMatrix !== undefined)
37+
{
38+
var matrix = parentMatrix.matrix;
39+
ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
40+
}
41+
3342
for (var i = 0; i < emitters.length; i++)
3443
{
3544
var emitter = emitters[i];
@@ -42,7 +51,6 @@ var ParticleManagerCanvasRenderer = function (renderer, emitterManager, interpol
4251
continue;
4352
}
4453

45-
var ctx = renderer.currentContext;
4654

4755
var lastAlpha = ctx.globalAlpha;
4856
var cameraScrollX = camera.scrollX * emitter.scrollFactorX;
@@ -103,6 +111,8 @@ var ParticleManagerCanvasRenderer = function (renderer, emitterManager, interpol
103111

104112
ctx.globalAlpha = lastAlpha;
105113
}
114+
115+
ctx.restore();
106116
};
107117

108118
module.exports = ParticleManagerCanvasRenderer;

src/gameobjects/rendertexture/RenderTextureCanvasRenderer.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,11 @@ var RenderTextureCanvasRenderer = function (renderer, renderTexture, interpolati
7474
}
7575

7676
ctx.save();
77+
if (parentMatrix !== undefined)
78+
{
79+
var matrix = parentMatrix.matrix;
80+
ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
81+
}
7782
ctx.translate(renderTexture.x - camera.scrollX * renderTexture.scrollFactorX, renderTexture.y - camera.scrollY * renderTexture.scrollFactorY);
7883
ctx.rotate(renderTexture.rotation);
7984
ctx.scale(renderTexture.scaleX, renderTexture.scaleY);

src/gameobjects/sprite/SpriteCanvasRenderer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ var SpriteCanvasRenderer = function (renderer, src, interpolationPercentage, cam
2828
return;
2929
}
3030

31-
renderer.drawImage(src, camera);
31+
renderer.drawImage(src, camera, parentMatrix);
3232
};
3333

3434
module.exports = SpriteCanvasRenderer;

src/gameobjects/text/static/TextCanvasRenderer.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ var TextCanvasRenderer = function (renderer, src, interpolationPercentage, camer
5656

5757
ctx.save();
5858

59+
if (parentMatrix !== undefined)
60+
{
61+
var matrix = parentMatrix.matrix;
62+
ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
63+
}
64+
5965
var tx = src.x - camera.scrollX * src.scrollFactorX;
6066
var ty = src.y - camera.scrollY * src.scrollFactorY;
6167

src/gameobjects/tilesprite/TileSpriteCanvasRenderer.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,12 @@ var TileSpriteCanvasRenderer = function (renderer, src, interpolationPercentage,
8989

9090
ctx.save();
9191

92+
if (parentMatrix !== undefined)
93+
{
94+
var matrix = parentMatrix.matrix;
95+
ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
96+
}
97+
9298
ctx.translate(dx, dy);
9399

94100
ctx.translate(tx, ty);

0 commit comments

Comments
 (0)