Skip to content

Commit 848ba12

Browse files
committed
Exposed the alpha corner values and implemented into the Sprite Batch.
1 parent aac61e5 commit 848ba12

3 files changed

Lines changed: 138 additions & 17 deletions

File tree

v3/src/checksum.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
var CHECKSUM = {
2-
build: 'ac7c3390-712c-11e7-94b3-cb219d37da47'
2+
build: '3e2c85e0-717f-11e7-aefb-f1890390432e'
33
};
44
module.exports = CHECKSUM;

v3/src/gameobjects/components/Alpha.js

Lines changed: 121 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,37 @@ var Alpha = {
99

1010
_alpha: 1,
1111

12+
_alphaTL: 1,
13+
_alphaTR: 1,
14+
_alphaBL: 1,
15+
_alphaBR: 1,
16+
17+
clearAlpha: function ()
18+
{
19+
return this.setAlpha(1);
20+
},
21+
22+
setAlpha: function (topLeft, topRight, bottomLeft, bottomRight)
23+
{
24+
if (topLeft === undefined) { topLeft = 1; }
25+
26+
// Treat as if there is only one alpha value for the whole Game Object
27+
if (topRight === undefined)
28+
{
29+
this.alpha = topLeft;
30+
}
31+
else
32+
{
33+
this._alphaTL = Clamp(topLeft, 0, 1);
34+
this._alphaTR = Clamp(topRight, 0, 1);
35+
this._alphaBL = Clamp(bottomLeft, 0, 1);
36+
this._alphaBR = Clamp(bottomRight, 0, 1);
37+
}
38+
39+
return this;
40+
},
41+
42+
// Global Alpha value. If changed this adjusts all alpha properties (topLeft, topRight, etc)
1243
alpha: {
1344

1445
get: function ()
@@ -18,9 +49,15 @@ var Alpha = {
1849

1950
set: function (value)
2051
{
21-
this._alpha = Clamp(value, 0, 1);
52+
var v = Clamp(value, 0, 1);
53+
54+
this._alpha = v;
55+
this._alphaTL = v;
56+
this._alphaTR = v;
57+
this._alphaBL = v;
58+
this._alphaBR = v;
2259

23-
if (this._alpha === 0)
60+
if (v === 0)
2461
{
2562
this.renderFlags &= ~_FLAG;
2663
}
@@ -32,11 +69,89 @@ var Alpha = {
3269

3370
},
3471

35-
setAlpha: function (value)
36-
{
37-
this.alpha = value;
72+
// Adjusts the alpha value of the top-left vertex (WebGL only)
73+
alphaTopLeft: {
74+
75+
get: function ()
76+
{
77+
return this._alphaTL;
78+
},
79+
80+
set: function (value)
81+
{
82+
var v = Clamp(value, 0, 1);
83+
84+
this._alphaTL = v
85+
86+
if (v !== 0)
87+
{
88+
this.renderFlags |= _FLAG;
89+
}
90+
}
91+
92+
},
93+
94+
alphaTopRight: {
95+
96+
get: function ()
97+
{
98+
return this._alphaTR;
99+
},
100+
101+
set: function (value)
102+
{
103+
var v = Clamp(value, 0, 1);
104+
105+
this._alphaTR = v
106+
107+
if (v !== 0)
108+
{
109+
this.renderFlags |= _FLAG;
110+
}
111+
}
112+
113+
},
114+
115+
alphaBottomLeft: {
116+
117+
get: function ()
118+
{
119+
return this._alphaBL;
120+
},
121+
122+
set: function (value)
123+
{
124+
var v = Clamp(value, 0, 1);
125+
126+
this._alphaBL = v
127+
128+
if (v !== 0)
129+
{
130+
this.renderFlags |= _FLAG;
131+
}
132+
}
133+
134+
},
135+
136+
alphaBottomRight: {
137+
138+
get: function ()
139+
{
140+
return this._alphaBR;
141+
},
142+
143+
set: function (value)
144+
{
145+
var v = Clamp(value, 0, 1);
146+
147+
this._alphaBR = v
148+
149+
if (v !== 0)
150+
{
151+
this.renderFlags |= _FLAG;
152+
}
153+
}
38154

39-
return this;
40155
}
41156

42157
};

v3/src/renderer/webgl/renderers/spritebatch/SpriteBatch.js

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,10 @@ var SpriteBatch = new Class({
461461
var cameraMatrix = camera.matrix.matrix;
462462
var mva, mvb, mvc, mvd, mve, mvf, tx0, ty0, tx1, ty1, tx2, ty2, tx3, ty3;
463463
var sra, srb, src, srd, sre, srf, cma, cmb, cmc, cmd, cme, cmf;
464-
var alpha = gameObject.alpha;
464+
var alphaTL = gameObject._alphaTL;
465+
var alphaTR = gameObject._alphaTR;
466+
var alphaBL = gameObject._alphaBL;
467+
var alphaBR = gameObject._alphaBR;
465468
var tintTL = gameObject._tintTL;
466469
var tintTR = gameObject._tintTR;
467470
var tintBL = gameObject._tintBL;
@@ -511,31 +514,31 @@ var SpriteBatch = new Class({
511514
vertexBufferObjectF32[vertexOffset++] = 0;
512515
vertexBufferObjectF32[vertexOffset++] = 0;
513516
vertexBufferObjectU32[vertexOffset++] = tintTL;
514-
vertexBufferObjectF32[vertexOffset++] = alpha;
517+
vertexBufferObjectF32[vertexOffset++] = alphaTL;
515518

516519
// Bottom Left
517520
vertexBufferObjectF32[vertexOffset++] = tx1;
518521
vertexBufferObjectF32[vertexOffset++] = ty1;
519522
vertexBufferObjectF32[vertexOffset++] = 0;
520523
vertexBufferObjectF32[vertexOffset++] = 1;
521524
vertexBufferObjectU32[vertexOffset++] = tintBL;
522-
vertexBufferObjectF32[vertexOffset++] = alpha;
525+
vertexBufferObjectF32[vertexOffset++] = alphaBL;
523526

524527
// Bottom Right
525528
vertexBufferObjectF32[vertexOffset++] = tx2;
526529
vertexBufferObjectF32[vertexOffset++] = ty2;
527530
vertexBufferObjectF32[vertexOffset++] = 1;
528531
vertexBufferObjectF32[vertexOffset++] = 1;
529532
vertexBufferObjectU32[vertexOffset++] = tintBR;
530-
vertexBufferObjectF32[vertexOffset++] = alpha;
533+
vertexBufferObjectF32[vertexOffset++] = alphaBR;
531534

532535
// Top Right
533536
vertexBufferObjectF32[vertexOffset++] = tx3;
534537
vertexBufferObjectF32[vertexOffset++] = ty3;
535538
vertexBufferObjectF32[vertexOffset++] = 1;
536539
vertexBufferObjectF32[vertexOffset++] = 0;
537540
vertexBufferObjectU32[vertexOffset++] = tintTR;
538-
vertexBufferObjectF32[vertexOffset++] = alpha;
541+
vertexBufferObjectF32[vertexOffset++] = alphaTR;
539542
},
540543

541544
addSprite: function (gameObject, camera)
@@ -565,7 +568,10 @@ var SpriteBatch = new Class({
565568
var cameraMatrix = camera.matrix.matrix;
566569
var mva, mvb, mvc, mvd, mve, mvf, tx0, ty0, tx1, ty1, tx2, ty2, tx3, ty3;
567570
var sra, srb, src, srd, sre, srf, cma, cmb, cmc, cmd, cme, cmf;
568-
var alpha = gameObject.alpha;
571+
var alphaTL = gameObject._alphaTL;
572+
var alphaTR = gameObject._alphaTR;
573+
var alphaBL = gameObject._alphaBL;
574+
var alphaBR = gameObject._alphaBR;
569575
var tintTL = gameObject._tintTL;
570576
var tintTR = gameObject._tintTR;
571577
var tintBL = gameObject._tintBL;
@@ -615,31 +621,31 @@ var SpriteBatch = new Class({
615621
vertexBufferObjectF32[vertexOffset++] = uvs.x0;
616622
vertexBufferObjectF32[vertexOffset++] = uvs.y0;
617623
vertexBufferObjectU32[vertexOffset++] = tintTL;
618-
vertexBufferObjectF32[vertexOffset++] = alpha;
624+
vertexBufferObjectF32[vertexOffset++] = alphaTL;
619625

620626
// Bottom Left
621627
vertexBufferObjectF32[vertexOffset++] = tx1;
622628
vertexBufferObjectF32[vertexOffset++] = ty1;
623629
vertexBufferObjectF32[vertexOffset++] = uvs.x1;
624630
vertexBufferObjectF32[vertexOffset++] = uvs.y1;
625631
vertexBufferObjectU32[vertexOffset++] = tintBL;
626-
vertexBufferObjectF32[vertexOffset++] = alpha;
632+
vertexBufferObjectF32[vertexOffset++] = alphaBL;
627633

628634
// Bottom Right
629635
vertexBufferObjectF32[vertexOffset++] = tx2;
630636
vertexBufferObjectF32[vertexOffset++] = ty2;
631637
vertexBufferObjectF32[vertexOffset++] = uvs.x2;
632638
vertexBufferObjectF32[vertexOffset++] = uvs.y2;
633639
vertexBufferObjectU32[vertexOffset++] = tintBR;
634-
vertexBufferObjectF32[vertexOffset++] = alpha;
640+
vertexBufferObjectF32[vertexOffset++] = alphaBR;
635641

636642
// Top Right
637643
vertexBufferObjectF32[vertexOffset++] = tx3;
638644
vertexBufferObjectF32[vertexOffset++] = ty3;
639645
vertexBufferObjectF32[vertexOffset++] = uvs.x3;
640646
vertexBufferObjectF32[vertexOffset++] = uvs.y3;
641647
vertexBufferObjectU32[vertexOffset++] = tintTR;
642-
vertexBufferObjectF32[vertexOffset++] = alpha;
648+
vertexBufferObjectF32[vertexOffset++] = alphaTR;
643649
}
644650

645651
});

0 commit comments

Comments
 (0)