Skip to content

Commit 7a9f80e

Browse files
committed
Bitmap Text renderer now uses tint component values.
1 parent fb713ab commit 7a9f80e

2 files changed

Lines changed: 32 additions & 23 deletions

File tree

v3/src/gameobjects/bitmaptext/dynamic/DynamicBitmapTextWebGLRenderer.js

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,14 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
1515
var cameraScrollY = camera.scrollY * gameObject.scrollFactorY;
1616
var text = gameObject.text;
1717
var textLength = text.length;
18-
var chars = gameObject.fontData.data.chars;
18+
var chars = gameObject.fontData.chars;
1919
var lineHeight = gameObject.fontData.lineHeight;
2020
var spriteBatch = renderer.spriteBatch;
2121
var alpha = gameObject.alpha;
22+
var tintTL = gameObject._tintTL;
23+
var tintTR = gameObject._tintTR;
24+
var tintBL = gameObject._tintBL;
25+
var tintBR = gameObject._tintBR;
2226
var vertexDataBuffer = spriteBatch.vertexDataBuffer;
2327
var vertexBuffer = vertexDataBuffer.floatView;
2428
var vertexBufferU32 = vertexDataBuffer.uintView;
@@ -38,7 +42,6 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
3842
var glyphY = 0;
3943
var glyphW = 0;
4044
var glyphH = 0;
41-
var vertexColor = 0xFFFFFFFF;
4245
var x = 0;
4346
var y = 0;
4447
var rotation = 0;
@@ -54,14 +57,14 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
5457
var cameraMatrix = camera.matrix.matrix;
5558
var mva, mvb, mvc, mvd, mve, mvf, tx0, ty0, tx1, ty1, tx2, ty2, tx3, ty3;
5659
var sra, srb, src, srd, sre, srf, cma, cmb, cmc, cmd, cme, cmf;
57-
var scale = (gameObject.fontSize / gameObject.fontData.data.size);
60+
var scale = (gameObject.fontSize / gameObject.fontData.size);
5861
var uta, utb, utc, utd, ute, utf;
5962
var tempMatrixCharMatrix = tempMatrixChar.matrix;
6063
var renderTarget = gameObject.renderTarget;
6164

6265
tempMatrix.applyITRS(
63-
gameObject.x - cameraScrollX, gameObject.y - cameraScrollY,
64-
-gameObject.rotation,
66+
gameObject.x - cameraScrollX, gameObject.y - cameraScrollY,
67+
-gameObject.rotation,
6568
gameObject.scaleX, gameObject.scaleY
6669
);
6770

@@ -128,10 +131,13 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
128131

129132
glyphX = textureX + glyph.x;
130133
glyphY = textureY + glyph.y;
134+
131135
glyphW = glyph.width;
132136
glyphH = glyph.height;
137+
133138
x = (indexCount + glyph.xOffset + xAdvance) * scale;
134139
y = (glyph.yOffset + yAdvance) * scale;
140+
135141
rotation = 0;
136142

137143
if (lastGlyph !== null)
@@ -142,13 +148,17 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
142148

143149
if (displayCallback)
144150
{
145-
var output = displayCallback({ color: 0xFFFFFF, index: index, charCode: charCode, x: x, y: y, scale: scale, rotation: 0, data: glyph.data });
151+
var output = displayCallback({ tint: { topLeft: tintTL, topRight: tintTR, bottomLeft: tintBL, bottomRight: tintBR }, index: index, charCode: charCode, x: x, y: y, scale: scale, rotation: 0, data: glyph.data });
146152

147153
x = output.x;
148154
y = output.y;
149155
scale = output.scale;
150156
rotation = output.rotation;
151-
vertexColor = output.color;
157+
158+
tintTL = output.tint.topLeft;
159+
tintTR = output.tint.topRight;
160+
tintBL = output.tint.bottomLeft;
161+
tintBR = output.tint.bottomRight;
152162
}
153163

154164
x -= gameObject.scrollX | 0;
@@ -202,28 +212,28 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
202212
vertexBuffer[vertexOffset++] = ty0;
203213
vertexBuffer[vertexOffset++] = umin;
204214
vertexBuffer[vertexOffset++] = vmin;
205-
vertexBufferU32[vertexOffset++] = vertexColor;
215+
vertexBufferU32[vertexOffset++] = tintTL;
206216
vertexBuffer[vertexOffset++] = alpha;
207217

208218
vertexBuffer[vertexOffset++] = tx1;
209219
vertexBuffer[vertexOffset++] = ty1;
210220
vertexBuffer[vertexOffset++] = umin;
211221
vertexBuffer[vertexOffset++] = vmax;
212-
vertexBufferU32[vertexOffset++] = vertexColor;
222+
vertexBufferU32[vertexOffset++] = tintBL;
213223
vertexBuffer[vertexOffset++] = alpha;
214224

215225
vertexBuffer[vertexOffset++] = tx2;
216226
vertexBuffer[vertexOffset++] = ty2;
217227
vertexBuffer[vertexOffset++] = umax;
218228
vertexBuffer[vertexOffset++] = vmax;
219-
vertexBufferU32[vertexOffset++] = vertexColor;
229+
vertexBufferU32[vertexOffset++] = tintBR;
220230
vertexBuffer[vertexOffset++] = alpha;
221231

222232
vertexBuffer[vertexOffset++] = tx3;
223233
vertexBuffer[vertexOffset++] = ty3;
224234
vertexBuffer[vertexOffset++] = umax;
225235
vertexBuffer[vertexOffset++] = vmin;
226-
vertexBufferU32[vertexOffset++] = vertexColor;
236+
vertexBufferU32[vertexOffset++] = tintTR;
227237
vertexBuffer[vertexOffset++] = alpha;
228238

229239
xAdvance += glyph.xAdvance;

v3/src/gameobjects/bitmaptext/static/BitmapTextWebGLRenderer.js

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,15 @@ var BitmapTextWebGLRenderer = function (renderer, gameObject, interpolationPerce
1717
var lineHeight = gameObject.fontData.lineHeight;
1818
var spriteBatch = renderer.spriteBatch;
1919
var alpha = gameObject.alpha;
20+
var tintTL = gameObject._tintTL;
21+
var tintTR = gameObject._tintTR;
22+
var tintBL = gameObject._tintBL;
23+
var tintBR = gameObject._tintBR;
2024
var vertexDataBuffer = spriteBatch.vertexDataBuffer;
2125
var vertexBuffer = vertexDataBuffer.floatView;
2226
var vertexBufferU32 = vertexDataBuffer.uintView;
2327
var vertexOffset = 0;
24-
var srcX = gameObject.x;
28+
var srcX = gameObject.x;
2529
var srcY = gameObject.y;
2630
var textureData = gameObject.texture.source[textureFrame.sourceIndex];
2731
var textureX = textureFrame.cutX;
@@ -38,15 +42,10 @@ var BitmapTextWebGLRenderer = function (renderer, gameObject, interpolationPerce
3842
var glyphY = 0;
3943
var glyphW = 0;
4044
var glyphH = 0;
41-
var vertexColor = 0xFFFFFFFF;
4245
var x = 0;
4346
var y = 0;
4447
var xw = 0;
4548
var yh = 0;
46-
var tx = 0;
47-
var ty = 0;
48-
var txw = 0;
49-
var tyh = 0;
5049
var umin = 0;
5150
var umax = 0;
5251
var vmin = 0;
@@ -61,8 +60,8 @@ var BitmapTextWebGLRenderer = function (renderer, gameObject, interpolationPerce
6160
var renderTarget = gameObject.renderTarget;
6261

6362
tempMatrix.applyITRS(
64-
(srcX - cameraScrollX) + textureFrame.x, (srcY - cameraScrollY) + textureFrame.y,
65-
-gameObject.rotation,
63+
(srcX - cameraScrollX) + textureFrame.x, (srcY - cameraScrollY) + textureFrame.y,
64+
-gameObject.rotation,
6665
gameObject.scaleX, gameObject.scaleY
6766
);
6867

@@ -159,28 +158,28 @@ var BitmapTextWebGLRenderer = function (renderer, gameObject, interpolationPerce
159158
vertexBuffer[vertexOffset++] = ty0;
160159
vertexBuffer[vertexOffset++] = umin;
161160
vertexBuffer[vertexOffset++] = vmin;
162-
vertexBufferU32[vertexOffset++] = vertexColor;
161+
vertexBufferU32[vertexOffset++] = tintTL;
163162
vertexBuffer[vertexOffset++] = alpha;
164163

165164
vertexBuffer[vertexOffset++] = tx1;
166165
vertexBuffer[vertexOffset++] = ty1;
167166
vertexBuffer[vertexOffset++] = umin;
168167
vertexBuffer[vertexOffset++] = vmax;
169-
vertexBufferU32[vertexOffset++] = vertexColor;
168+
vertexBufferU32[vertexOffset++] = tintBL;
170169
vertexBuffer[vertexOffset++] = alpha;
171170

172171
vertexBuffer[vertexOffset++] = tx2;
173172
vertexBuffer[vertexOffset++] = ty2;
174173
vertexBuffer[vertexOffset++] = umax;
175174
vertexBuffer[vertexOffset++] = vmax;
176-
vertexBufferU32[vertexOffset++] = vertexColor;
175+
vertexBufferU32[vertexOffset++] = tintTR;
177176
vertexBuffer[vertexOffset++] = alpha;
178177

179178
vertexBuffer[vertexOffset++] = tx3;
180179
vertexBuffer[vertexOffset++] = ty3;
181180
vertexBuffer[vertexOffset++] = umax;
182181
vertexBuffer[vertexOffset++] = vmin;
183-
vertexBufferU32[vertexOffset++] = vertexColor;
182+
vertexBufferU32[vertexOffset++] = tintBR;
184183
vertexBuffer[vertexOffset++] = alpha;
185184
}
186185
};

0 commit comments

Comments
 (0)