Skip to content

Commit 161f258

Browse files
committed
Parent transform applied to all texture tint pipeline object rendering functions
1 parent f6eef58 commit 161f258

1 file changed

Lines changed: 188 additions & 47 deletions

File tree

src/renderer/webgl/pipelines/TextureTintPipeline.js

Lines changed: 188 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,13 @@ var TextureTintPipeline = new Class({
418418
pcd = cmc * pmb + cmd * pmd;
419419
pce = cme * pma + cmf * pmc + pme;
420420
pcf = cme * pmb + cmf * pmd + pmf;
421+
422+
cma = pca;
423+
cmb = pcb;
424+
cmc = pcc;
425+
cmd = pcd;
426+
cme = pce;
427+
cmf = pcf;
421428
}
422429

423430
this.setTexture2D(texture, 0);
@@ -473,27 +480,12 @@ var TextureTintPipeline = new Class({
473480
var srd = cr * particle.scaleY;
474481
var sre = particle.x - scrollX * particle.scrollFactorX;
475482
var srf = particle.y - scrollY * particle.scrollFactorY;
476-
var mva, mvb, mvc, mvd, mve, mvf;
477-
478-
if (parentMatrix === null)
479-
{
480-
mva = sra * cma + srb * cmc;
481-
mvb = sra * cmb + srb * cmd;
482-
mvc = src * cma + srd * cmc;
483-
mvd = src * cmb + srd * cmd;
484-
mve = sre * cma + srf * cmc + cme;
485-
mvf = sre * cmb + srf * cmd + cmf;
486-
}
487-
else
488-
{
489-
mva = sra * pca + srb * pcc;
490-
mvb = sra * pcb + srb * pcd;
491-
mvc = src * pca + srd * pcc;
492-
mvd = src * pcb + srd * pcd;
493-
mve = sre * pca + srf * pcc + pce;
494-
mvf = sre * pcb + srf * pcd + pcf;
495-
}
496-
483+
var mva = sra * cma + srb * cmc;
484+
var mvb = sra * cmb + srb * cmd;
485+
var mvc = src * cma + srd * cmc;
486+
var mvd = src * cmb + srd * cmd;
487+
var mve = sre * cma + srf * cmc + cme;
488+
var mvf = sre * cmb + srf * cmd + cmf;
497489
var tx0 = x * mva + y * mvc + mve;
498490
var ty0 = x * mvb + y * mvd + mvf;
499491
var tx1 = x * mva + yh * mvc + mve;
@@ -606,6 +598,29 @@ var TextureTintPipeline = new Class({
606598
var blitterX = blitter.x - cameraScrollX;
607599
var blitterY = blitter.y - cameraScrollY;
608600

601+
if (parentMatrix != null)
602+
{
603+
var pma = parentMatrix[0];
604+
var pmb = parentMatrix[1];
605+
var pmc = parentMatrix[2];
606+
var pmd = parentMatrix[3];
607+
var pme = parentMatrix[4];
608+
var pmf = parentMatrix[5];
609+
var pca = a * pma + b * pmc;
610+
var pcb = a * pmb + b * pmd;
611+
var pcc = c * pma + d * pmc;
612+
var pcd = c * pmb + d * pmd;
613+
var pce = e * pma + f * pmc + pme;
614+
var pcf = e * pmb + f * pmd + pmf;
615+
616+
a = pca;
617+
b = pcb;
618+
c = pcc;
619+
d = pcd;
620+
e = pce;
621+
f = pcf;
622+
}
623+
609624
for (var batchIndex = 0; batchIndex < batchCount; ++batchIndex)
610625
{
611626
var batchSize = Math.min(length, this.maxQuads);
@@ -767,7 +782,7 @@ var TextureTintPipeline = new Class({
767782
var cmf = cameraMatrix[5];
768783
var mva, mvb, mvc, mvd, mve, mvf;
769784

770-
if (parentMatrix != null)
785+
if (parentMatrix === null)
771786
{
772787
mva = sra * cma + srb * cmc;
773788
mvb = sra * cmb + srb * cmd;
@@ -881,7 +896,6 @@ var TextureTintPipeline = new Class({
881896
parentMatrix = parentTransformMatrix.matrix;
882897
}
883898

884-
885899
var vertices = mesh.vertices;
886900
var length = vertices.length;
887901
var vertexCount = (length / 2)|0;
@@ -922,13 +936,40 @@ var TextureTintPipeline = new Class({
922936
var cmd = cameraMatrix[3];
923937
var cme = cameraMatrix[4];
924938
var cmf = cameraMatrix[5];
925-
var mva = sra * cma + srb * cmc;
926-
var mvb = sra * cmb + srb * cmd;
927-
var mvc = src * cma + srd * cmc;
928-
var mvd = src * cmb + srd * cmd;
929-
var mve = sre * cma + srf * cmc + cme;
930-
var mvf = sre * cmb + srf * cmd + cmf;
931939
var vertexOffset = 0;
940+
var mva, mvb, mvc, mvd, mve, mvf;
941+
942+
if (parentMatrix === null)
943+
{
944+
mva = sra * cma + srb * cmc;
945+
mvb = sra * cmb + srb * cmd;
946+
mvc = src * cma + srd * cmc;
947+
mvd = src * cmb + srd * cmd;
948+
mve = sre * cma + srf * cmc + cme;
949+
mvf = sre * cmb + srf * cmd + cmf;
950+
}
951+
else
952+
{
953+
var pma = parentMatrix[0];
954+
var pmb = parentMatrix[1];
955+
var pmc = parentMatrix[2];
956+
var pmd = parentMatrix[3];
957+
var pme = parentMatrix[4];
958+
var pmf = parentMatrix[5];
959+
var pca = cma * pma + cmb * pmc;
960+
var pcb = cma * pmb + cmb * pmd;
961+
var pcc = cmc * pma + cmd * pmc;
962+
var pcd = cmc * pmb + cmd * pmd;
963+
var pce = cme * pma + cmf * pmc + pme;
964+
var pcf = cme * pmb + cmf * pmd + pmf;
965+
mva = sra * pca + srb * pcc;
966+
mvb = sra * pcb + srb * pcd;
967+
mvc = src * pca + srd * pcc;
968+
mvd = src * pcb + srd * pcd;
969+
mve = sre * pca + srf * pcc + pce;
970+
mvf = sre * pcb + srf * pcd + pcf;
971+
}
972+
932973

933974
this.setTexture2D(texture, 0);
934975

@@ -1066,13 +1107,39 @@ var TextureTintPipeline = new Class({
10661107
var cmd = cameraMatrix[3];
10671108
var cme = cameraMatrix[4];
10681109
var cmf = cameraMatrix[5];
1069-
var mva = sra * cma + srb * cmc;
1070-
var mvb = sra * cmb + srb * cmd;
1071-
var mvc = src * cma + srd * cmc;
1072-
var mvd = src * cmb + srd * cmd;
1073-
var mve = sre * cma + srf * cmc + cme;
1074-
var mvf = sre * cmb + srf * cmd + cmf;
10751110
var vertexOffset = 0;
1111+
var mva, mvb, mvc, mvd, mve, mvf;
1112+
1113+
if (parentMatrix === null)
1114+
{
1115+
mva = sra * cma + srb * cmc;
1116+
mvb = sra * cmb + srb * cmd;
1117+
mvc = src * cma + srd * cmc;
1118+
mvd = src * cmb + srd * cmd;
1119+
mve = sre * cma + srf * cmc + cme;
1120+
mvf = sre * cmb + srf * cmd + cmf;
1121+
}
1122+
else
1123+
{
1124+
var pma = parentMatrix[0];
1125+
var pmb = parentMatrix[1];
1126+
var pmc = parentMatrix[2];
1127+
var pmd = parentMatrix[3];
1128+
var pme = parentMatrix[4];
1129+
var pmf = parentMatrix[5];
1130+
var pca = cma * pma + cmb * pmc;
1131+
var pcb = cma * pmb + cmb * pmd;
1132+
var pcc = cmc * pma + cmd * pmc;
1133+
var pcd = cmc * pmb + cmd * pmd;
1134+
var pce = cme * pma + cmf * pmc + pme;
1135+
var pcf = cme * pmb + cmf * pmd + pmf;
1136+
mva = sra * pca + srb * pcc;
1137+
mvb = sra * pcb + srb * pcd;
1138+
mvc = src * pca + srd * pcc;
1139+
mvd = src * pcb + srd * pcd;
1140+
mve = sre * pca + srf * pcc + pce;
1141+
mvf = sre * pcb + srf * pcd + pcf;
1142+
}
10761143

10771144
this.setTexture2D(texture, 0);
10781145

@@ -1307,15 +1374,41 @@ var TextureTintPipeline = new Class({
13071374
var cmd = cameraMatrix[3];
13081375
var cme = cameraMatrix[4];
13091376
var cmf = cameraMatrix[5];
1310-
var mva = sra * cma + srb * cmc;
1311-
var mvb = sra * cmb + srb * cmd;
1312-
var mvc = src * cma + srd * cmc;
1313-
var mvd = src * cmb + srd * cmd;
1314-
var mve = sre * cma + srf * cmc + cme;
1315-
var mvf = sre * cmb + srf * cmd + cmf;
13161377
var crop = (bitmapText.cropWidth > 0 || bitmapText.cropHeight > 0);
13171378
var uta, utb, utc, utd, ute, utf;
13181379
var vertexOffset = 0;
1380+
var mva, mvb, mvc, mvd, mve, mvf;
1381+
1382+
if (parentMatrix === null)
1383+
{
1384+
mva = sra * cma + srb * cmc;
1385+
mvb = sra * cmb + srb * cmd;
1386+
mvc = src * cma + srd * cmc;
1387+
mvd = src * cmb + srd * cmd;
1388+
mve = sre * cma + srf * cmc + cme;
1389+
mvf = sre * cmb + srf * cmd + cmf;
1390+
}
1391+
else
1392+
{
1393+
var pma = parentMatrix[0];
1394+
var pmb = parentMatrix[1];
1395+
var pmc = parentMatrix[2];
1396+
var pmd = parentMatrix[3];
1397+
var pme = parentMatrix[4];
1398+
var pmf = parentMatrix[5];
1399+
var pca = cma * pma + cmb * pmc;
1400+
var pcb = cma * pmb + cmb * pmd;
1401+
var pcc = cmc * pma + cmd * pmc;
1402+
var pcd = cmc * pmb + cmd * pmd;
1403+
var pce = cme * pma + cmf * pmc + pme;
1404+
var pcf = cme * pmb + cmf * pmd + pmf;
1405+
mva = sra * pca + srb * pcc;
1406+
mvb = sra * pcb + srb * pcd;
1407+
mvc = src * pca + srd * pcc;
1408+
mvd = src * pcb + srd * pcd;
1409+
mve = sre * pca + srf * pcc + pce;
1410+
mvf = sre * pcb + srf * pcd + pcf;
1411+
}
13191412

13201413
this.setTexture2D(texture, 0);
13211414

@@ -1749,12 +1842,37 @@ var TextureTintPipeline = new Class({
17491842
var cmd = cameraMatrix[3];
17501843
var cme = cameraMatrix[4];
17511844
var cmf = cameraMatrix[5];
1752-
var mva = sra * cma + srb * cmc;
1753-
var mvb = sra * cmb + srb * cmd;
1754-
var mvc = src * cma + srd * cmc;
1755-
var mvd = src * cmb + srd * cmd;
1756-
var mve = sre * cma + srf * cmc + cme;
1757-
var mvf = sre * cmb + srf * cmd + cmf;
1845+
var mva, mvb, mvc, mvd, mve, mvf;
1846+
if (parentMatrix === null)
1847+
{
1848+
mva = sra * cma + srb * cmc;
1849+
mvb = sra * cmb + srb * cmd;
1850+
mvc = src * cma + srd * cmc;
1851+
mvd = src * cmb + srd * cmd;
1852+
mve = sre * cma + srf * cmc + cme;
1853+
mvf = sre * cmb + srf * cmd + cmf;
1854+
}
1855+
else
1856+
{
1857+
var pma = parentMatrix[0];
1858+
var pmb = parentMatrix[1];
1859+
var pmc = parentMatrix[2];
1860+
var pmd = parentMatrix[3];
1861+
var pme = parentMatrix[4];
1862+
var pmf = parentMatrix[5];
1863+
var pca = cma * pma + cmb * pmc;
1864+
var pcb = cma * pmb + cmb * pmd;
1865+
var pcc = cmc * pma + cmd * pmc;
1866+
var pcd = cmc * pmb + cmd * pmd;
1867+
var pce = cme * pma + cmf * pmc + pme;
1868+
var pcf = cme * pmb + cmf * pmd + pmf;
1869+
mva = sra * pca + srb * pcc;
1870+
mvb = sra * pcb + srb * pcd;
1871+
mvc = src * pca + srd * pcc;
1872+
mvd = src * pcb + srd * pcd;
1873+
mve = sre * pca + srf * pcc + pce;
1874+
mvf = sre * pcb + srf * pcd + pcf;
1875+
}
17581876
var tx0 = x * mva + y * mvc + mve;
17591877
var ty0 = x * mvb + y * mvd + mvf;
17601878
var tx1 = x * mva + yh * mvc + mve;
@@ -1878,6 +1996,29 @@ var TextureTintPipeline = new Class({
18781996
var mvd = transformMatrix[3];
18791997
var mve = transformMatrix[4];
18801998
var mvf = transformMatrix[5];
1999+
2000+
if (parentMatrix !== null)
2001+
{
2002+
var pma = parentMatrix[0];
2003+
var pmb = parentMatrix[1];
2004+
var pmc = parentMatrix[2];
2005+
var pmd = parentMatrix[3];
2006+
var pme = parentMatrix[4];
2007+
var pmf = parentMatrix[5];
2008+
var pca = mva * pma + mvb * pmc;
2009+
var pcb = mva * pmb + mvb * pmd;
2010+
var pcc = mvc * pma + mvd * pmc;
2011+
var pcd = mvc * pmb + mvd * pmd;
2012+
var pce = mve * pma + mvf * pmc + pme;
2013+
var pcf = mve * pmb + mvf * pmd + pmf;
2014+
mva = pca;
2015+
mvb = pcb;
2016+
mvc = pcc;
2017+
mvd = pcd;
2018+
mve = pce;
2019+
mvf = pcf;
2020+
}
2021+
18812022
var tx0 = x * mva + y * mvc + mve;
18822023
var ty0 = x * mvb + y * mvd + mvf;
18832024
var tx1 = x * mva + yh * mvc + mve;

0 commit comments

Comments
 (0)