Skip to content

Commit 74b1892

Browse files
author
Tom Catshoek
committed
Added rotation, scaling and flipping to TileSpriteCanvasRenderer
1 parent 9a21b4c commit 74b1892

1 file changed

Lines changed: 27 additions & 2 deletions

File tree

src/gameobjects/tilesprite/TileSpriteCanvasRenderer.js

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,23 @@ var TileSpriteCanvasRenderer = function (renderer, src, interpolationPercentage,
6161
var tx = src.x - camera.scrollX * src.scrollFactorX;
6262
var ty = src.y - camera.scrollY * src.scrollFactorY;
6363

64+
var fx = 1;
65+
var fy = 1;
66+
67+
// Flipping
68+
69+
if (src.flipX)
70+
{
71+
fx = -1;
72+
dx += src.width;
73+
}
74+
75+
if (src.flipY)
76+
{
77+
fy = -1;
78+
dy += src.height;
79+
}
80+
6481
if (renderer.config.roundPixels)
6582
{
6683
dx |= 0;
@@ -75,10 +92,18 @@ var TileSpriteCanvasRenderer = function (renderer, src, interpolationPercentage,
7592

7693
ctx.translate(tx, ty);
7794

78-
ctx.fillStyle = src.canvasPattern;
95+
// Flip
96+
ctx.scale(fx, fy);
7997

80-
ctx.translate(-this.tilePositionX, -this.tilePositionY);
98+
// Rotate and scale around center
99+
ctx.translate((src.originX * src.width), (src.originY * src.height));
100+
ctx.rotate(fx * fy * src.rotation);
101+
ctx.scale(this.scaleX, this.scaleY);
102+
ctx.translate(-(src.originX * src.width), -(src.originY * src.height));
81103

104+
// Draw
105+
ctx.translate(-this.tilePositionX, -this.tilePositionY);
106+
ctx.fillStyle = src.canvasPattern;
82107
ctx.fillRect(this.tilePositionX, this.tilePositionY, src.width, src.height);
83108

84109
ctx.restore();

0 commit comments

Comments
 (0)