mirror of
https://github.com/photonstorm/phaser
synced 2024-11-13 00:17:24 +00:00
Fixed order of matrix transformation on:
-emitter -blitter -sprite -mesh -bitmap text
This commit is contained in:
parent
23f353326c
commit
dbafd9a70c
1 changed files with 111 additions and 67 deletions
|
@ -401,29 +401,16 @@ var TextureTintPipeline = new Class({
|
|||
var vertexCapacity = this.vertexCapacity;
|
||||
var texture = emitterManager.defaultFrame.source.glTexture;
|
||||
var pca, pcb, pcc, pcd, pce, pcf;
|
||||
var pma, pmb, pmc, pmd, pme, pmf;
|
||||
|
||||
if (parentMatrix)
|
||||
{
|
||||
var pma = parentMatrix[0];
|
||||
var pmb = parentMatrix[1];
|
||||
var pmc = parentMatrix[2];
|
||||
var pmd = parentMatrix[3];
|
||||
var pme = parentMatrix[4];
|
||||
var pmf = parentMatrix[5];
|
||||
|
||||
pca = cma * pma + cmb * pmc;
|
||||
pcb = cma * pmb + cmb * pmd;
|
||||
pcc = cmc * pma + cmd * pmc;
|
||||
pcd = cmc * pmb + cmd * pmd;
|
||||
pce = cme * pma + cmf * pmc + pme;
|
||||
pcf = cme * pmb + cmf * pmd + pmf;
|
||||
|
||||
cma = pca;
|
||||
cmb = pcb;
|
||||
cmc = pcc;
|
||||
cmd = pcd;
|
||||
cme = pce;
|
||||
cmf = pcf;
|
||||
pma = parentMatrix[0];
|
||||
pmb = parentMatrix[1];
|
||||
pmc = parentMatrix[2];
|
||||
pmd = parentMatrix[3];
|
||||
pme = parentMatrix[4];
|
||||
pmf = parentMatrix[5];
|
||||
}
|
||||
|
||||
this.setTexture2D(texture, 0);
|
||||
|
@ -438,6 +425,31 @@ var TextureTintPipeline = new Class({
|
|||
var scrollX = cameraScrollX * emitter.scrollFactorX;
|
||||
var scrollY = cameraScrollY * emitter.scrollFactorY;
|
||||
|
||||
if (parentMatrix)
|
||||
{
|
||||
var cse = -scrollX;
|
||||
var csf = -scrollY;
|
||||
var pse = cse * cma + csf * cmc + cme;
|
||||
var psf = cse * cmb + csf * cmd + cmf;
|
||||
var pca = pma * cma + pmb * cmc;
|
||||
var pcb = pma * cmb + pmb * cmd;
|
||||
var pcc = pmc * cma + pmd * cmc;
|
||||
var pcd = pmc * cmb + pmd * cmd;
|
||||
var pce = pme * cma + pmf * cmc + pse;
|
||||
var pcf = pme * cmb + pmf * cmd + psf;
|
||||
|
||||
cma = pca;
|
||||
cmb = pcb;
|
||||
cmc = pcc;
|
||||
cmd = pcd;
|
||||
cme = pce;
|
||||
cmf = pcf;
|
||||
|
||||
scrollX = 0.0;
|
||||
scrollY = 0.0;
|
||||
}
|
||||
|
||||
|
||||
if (!emitter.visible || aliveLength === 0)
|
||||
{
|
||||
continue;
|
||||
|
@ -474,11 +486,11 @@ var TextureTintPipeline = new Class({
|
|||
var sr = sin(particle.rotation);
|
||||
var cr = cos(particle.rotation);
|
||||
var sra = cr * particle.scaleX;
|
||||
var srb = -sr * particle.scaleX;
|
||||
var src = sr * particle.scaleY;
|
||||
var srb = sr * particle.scaleX;
|
||||
var src = -sr * particle.scaleY;
|
||||
var srd = cr * particle.scaleY;
|
||||
var sre = particle.x - scrollX * particle.scrollFactorX;
|
||||
var srf = particle.y - scrollY * particle.scrollFactorY;
|
||||
var sre = particle.x - scrollX;
|
||||
var srf = particle.y - scrollY;
|
||||
var mva = sra * cma + srb * cmc;
|
||||
var mvb = sra * cmb + srb * cmd;
|
||||
var mvc = src * cma + srd * cmc;
|
||||
|
@ -600,8 +612,6 @@ var TextureTintPipeline = new Class({
|
|||
var cameraScrollY = camera.scrollY * blitter.scrollFactorY;
|
||||
var batchCount = Math.ceil(length / this.maxQuads);
|
||||
var batchOffset = 0;
|
||||
var blitterX = blitter.x - cameraScrollX;
|
||||
var blitterY = blitter.y - cameraScrollY;
|
||||
|
||||
if (parentMatrix)
|
||||
{
|
||||
|
@ -611,12 +621,16 @@ var TextureTintPipeline = new Class({
|
|||
var pmd = parentMatrix[3];
|
||||
var pme = parentMatrix[4];
|
||||
var pmf = parentMatrix[5];
|
||||
var pca = a * pma + b * pmc;
|
||||
var pcb = a * pmb + b * pmd;
|
||||
var pcc = c * pma + d * pmc;
|
||||
var pcd = c * pmb + d * pmd;
|
||||
var pce = e * pma + f * pmc + pme;
|
||||
var pcf = e * pmb + f * pmd + pmf;
|
||||
var cse = -cameraScrollX;
|
||||
var csf = -cameraScrollY;
|
||||
var pse = cse * cma + csf * cmc + cme;
|
||||
var psf = cse * cmb + csf * cmd + cmf;
|
||||
var pca = pma * cma + pmb * cmc;
|
||||
var pcb = pma * cmb + pmb * cmd;
|
||||
var pcc = pmc * cma + pmd * cmc;
|
||||
var pcd = pmc * cmb + pmd * cmd;
|
||||
var pce = pme * cma + pmf * cmc + pse;
|
||||
var pcf = pme * cmb + pmf * cmd + psf;
|
||||
|
||||
a = pca;
|
||||
b = pcb;
|
||||
|
@ -624,8 +638,14 @@ var TextureTintPipeline = new Class({
|
|||
d = pcd;
|
||||
e = pce;
|
||||
f = pcf;
|
||||
|
||||
cameraScrollX = 0.0;
|
||||
cameraScrollY = 0.0;
|
||||
}
|
||||
|
||||
var blitterX = blitter.x - cameraScrollX;
|
||||
var blitterY = blitter.y - cameraScrollY;
|
||||
|
||||
for (var batchIndex = 0; batchIndex < batchCount; ++batchIndex)
|
||||
{
|
||||
var batchSize = Math.min(length, this.maxQuads);
|
||||
|
@ -757,11 +777,11 @@ var TextureTintPipeline = new Class({
|
|||
var y = -sprite.displayOriginY + frame.y + ((frame.height) * (flipY ? 1.0 : 0.0));
|
||||
var xw = (roundPixels ? (x|0) : x) + width;
|
||||
var yh = (roundPixels ? (y|0) : y) + height;
|
||||
var translateX = sprite.x - camera.scrollX * sprite.scrollFactorX;
|
||||
var translateY = sprite.y - camera.scrollY * sprite.scrollFactorY;
|
||||
var translateX = sprite.x;
|
||||
var translateY = sprite.y;
|
||||
var scaleX = sprite.scaleX;
|
||||
var scaleY = sprite.scaleY;
|
||||
var rotation = -sprite.rotation;
|
||||
var rotation = sprite.rotation;
|
||||
var alphaTL = sprite._alphaTL;
|
||||
var alphaTR = sprite._alphaTR;
|
||||
var alphaBL = sprite._alphaBL;
|
||||
|
@ -773,11 +793,11 @@ var TextureTintPipeline = new Class({
|
|||
var sr = Math.sin(rotation);
|
||||
var cr = Math.cos(rotation);
|
||||
var sra = cr * scaleX;
|
||||
var srb = -sr * scaleX;
|
||||
var src = sr * scaleY;
|
||||
var srb = sr * scaleX;
|
||||
var src = -sr * scaleY;
|
||||
var srd = cr * scaleY;
|
||||
var sre = translateX;
|
||||
var srf = translateY;
|
||||
var sre = sprite.x;
|
||||
var srf = sprite.y;
|
||||
var cma = cameraMatrix[0];
|
||||
var cmb = cameraMatrix[1];
|
||||
var cmc = cameraMatrix[2];
|
||||
|
@ -794,12 +814,17 @@ var TextureTintPipeline = new Class({
|
|||
var pmd = parentMatrix[3];
|
||||
var pme = parentMatrix[4];
|
||||
var pmf = parentMatrix[5];
|
||||
var pca = cma * pma + cmb * pmc;
|
||||
var pcb = cma * pmb + cmb * pmd;
|
||||
var pcc = cmc * pma + cmd * pmc;
|
||||
var pcd = cmc * pmb + cmd * pmd;
|
||||
var pce = cme * pma + cmf * pmc + pme;
|
||||
var pcf = cme * pmb + cmf * pmd + pmf;
|
||||
var cse = -camera.scrollX * sprite.scrollFactorX;
|
||||
var csf = -camera.scrollY * sprite.scrollFactorY;
|
||||
var pse = cse * cma + csf * cmc + cme;
|
||||
var psf = cse * cmb + csf * cmd + cmf;
|
||||
var pca = pma * cma + pmb * cmc;
|
||||
var pcb = pma * cmb + pmb * cmd;
|
||||
var pcc = pmc * cma + pmd * cmc;
|
||||
var pcd = pmc * cmb + pmd * cmd;
|
||||
var pce = pme * cma + pmf * cmc + pse;
|
||||
var pcf = pme * cmb + pmf * cmd + psf;
|
||||
|
||||
mva = sra * pca + srb * pcc;
|
||||
mvb = sra * pcb + srb * pcd;
|
||||
mvc = src * pca + srd * pcc;
|
||||
|
@ -809,6 +834,9 @@ var TextureTintPipeline = new Class({
|
|||
}
|
||||
else
|
||||
{
|
||||
sre -= camera.scrollX * sprite.scrollFactorX;
|
||||
srf -= camera.scrollY * sprite.scrollFactorY;
|
||||
|
||||
mva = sra * cma + srb * cmc;
|
||||
mvb = sra * cmb + srb * cmd;
|
||||
mvc = src * cma + srd * cmc;
|
||||
|
@ -921,16 +949,16 @@ var TextureTintPipeline = new Class({
|
|||
var cameraMatrix = camera.matrix.matrix;
|
||||
var frame = mesh.frame;
|
||||
var texture = mesh.texture.source[frame.sourceIndex].glTexture;
|
||||
var translateX = mesh.x - camera.scrollX * mesh.scrollFactorX;
|
||||
var translateY = mesh.y - camera.scrollY * mesh.scrollFactorY;
|
||||
var translateX = mesh.x;
|
||||
var translateY = mesh.y;
|
||||
var scaleX = mesh.scaleX;
|
||||
var scaleY = mesh.scaleY;
|
||||
var rotation = -mesh.rotation;
|
||||
var rotation = mesh.rotation;
|
||||
var sr = Math.sin(rotation);
|
||||
var cr = Math.cos(rotation);
|
||||
var sra = cr * scaleX;
|
||||
var srb = -sr * scaleX;
|
||||
var src = sr * scaleY;
|
||||
var srb = sr * scaleX;
|
||||
var src = -sr * scaleY;
|
||||
var srd = cr * scaleY;
|
||||
var sre = translateX;
|
||||
var srf = translateY;
|
||||
|
@ -951,12 +979,17 @@ var TextureTintPipeline = new Class({
|
|||
var pmd = parentMatrix[3];
|
||||
var pme = parentMatrix[4];
|
||||
var pmf = parentMatrix[5];
|
||||
var pca = cma * pma + cmb * pmc;
|
||||
var pcb = cma * pmb + cmb * pmd;
|
||||
var pcc = cmc * pma + cmd * pmc;
|
||||
var pcd = cmc * pmb + cmd * pmd;
|
||||
var pce = cme * pma + cmf * pmc + pme;
|
||||
var pcf = cme * pmb + cmf * pmd + pmf;
|
||||
var cse = -camera.scrollX * mesh.scrollFactorX;
|
||||
var csf = -camera.scrollY * mesh.scrollFactorY;
|
||||
var pse = cse * cma + csf * cmc + cme;
|
||||
var psf = cse * cmb + csf * cmd + cmf;
|
||||
var pca = pma * cma + pmb * cmc;
|
||||
var pcb = pma * cmb + pmb * cmd;
|
||||
var pcc = pmc * cma + pmd * cmc;
|
||||
var pcd = pmc * cmb + pmd * cmd;
|
||||
var pce = pme * cma + pmf * cmc + pse;
|
||||
var pcf = pme * cmb + pmf * cmd + psf;
|
||||
|
||||
mva = sra * pca + srb * pcc;
|
||||
mvb = sra * pcb + srb * pcd;
|
||||
mvc = src * pca + srd * pcc;
|
||||
|
@ -966,6 +999,9 @@ var TextureTintPipeline = new Class({
|
|||
}
|
||||
else
|
||||
{
|
||||
sre -= camera.scrollX * mesh.scrollFactorX;
|
||||
srf -= camera.scrollY * mesh.scrollFactorY;
|
||||
|
||||
mva = sra * cma + srb * cmc;
|
||||
mvb = sra * cmb + srb * cmd;
|
||||
mvc = src * cma + srd * cmc;
|
||||
|
@ -1090,17 +1126,17 @@ var TextureTintPipeline = new Class({
|
|||
var vmax = 0;
|
||||
var lastGlyph = null;
|
||||
var lastCharCode = 0;
|
||||
var translateX = (srcX - cameraScrollX) + frame.x;
|
||||
var translateY = (srcY - cameraScrollY) + frame.y;
|
||||
var rotation = -bitmapText.rotation;
|
||||
var translateX = srcX + frame.x;
|
||||
var translateY = srcY + frame.y;
|
||||
var rotation = bitmapText.rotation;
|
||||
var scaleX = bitmapText.scaleX;
|
||||
var scaleY = bitmapText.scaleY;
|
||||
var letterSpacing = bitmapText.letterSpacing;
|
||||
var sr = Math.sin(rotation);
|
||||
var cr = Math.cos(rotation);
|
||||
var sra = cr * scaleX;
|
||||
var srb = -sr * scaleX;
|
||||
var src = sr * scaleY;
|
||||
var srb = sr * scaleX;
|
||||
var src = -sr * scaleY;
|
||||
var srd = cr * scaleY;
|
||||
var sre = translateX;
|
||||
var srf = translateY;
|
||||
|
@ -1121,12 +1157,17 @@ var TextureTintPipeline = new Class({
|
|||
var pmd = parentMatrix[3];
|
||||
var pme = parentMatrix[4];
|
||||
var pmf = parentMatrix[5];
|
||||
var pca = cma * pma + cmb * pmc;
|
||||
var pcb = cma * pmb + cmb * pmd;
|
||||
var pcc = cmc * pma + cmd * pmc;
|
||||
var pcd = cmc * pmb + cmd * pmd;
|
||||
var pce = cme * pma + cmf * pmc + pme;
|
||||
var pcf = cme * pmb + cmf * pmd + pmf;
|
||||
var cse = -cameraScrollX;
|
||||
var csf = -cameraScrollY;
|
||||
var pse = cse * cma + csf * cmc + cme;
|
||||
var psf = cse * cmb + csf * cmd + cmf;
|
||||
var pca = pma * cma + pmb * cmc;
|
||||
var pcb = pma * cmb + pmb * cmd;
|
||||
var pcc = pmc * cma + pmd * cmc;
|
||||
var pcd = pmc * cmb + pmd * cmd;
|
||||
var pce = pme * cma + pmf * cmc + pse;
|
||||
var pcf = pme * cmb + pmf * cmd + psf;
|
||||
|
||||
mva = sra * pca + srb * pcc;
|
||||
mvb = sra * pcb + srb * pcd;
|
||||
mvc = src * pca + srd * pcc;
|
||||
|
@ -1136,6 +1177,9 @@ var TextureTintPipeline = new Class({
|
|||
}
|
||||
else
|
||||
{
|
||||
sre -= cameraScrollX;
|
||||
srf -= cameraScrollY;
|
||||
|
||||
mva = sra * cma + srb * cmc;
|
||||
mvb = sra * cmb + srb * cmd;
|
||||
mvc = src * cma + srd * cmc;
|
||||
|
|
Loading…
Reference in a new issue