public override void OnFill (BetterList<Vector3> verts, BetterList<Vector2> uvs, BetterList<Color32> cols)
{
//…
BetterList
<Color
> effectColorList
= new BetterList
<Color
>(); Color effectColor = mEffectColor;
effectColor.a *= alpha * mPanel.finalAlpha;
//…
if (mFont != null) mFont.Print(text, verts, uvs, cols, effectColor, ref effectColorList);
//…
ApplyShadow(verts, uvs, cols, offset, end, fx, -fy, effectColorList);
//…
}
void ApplyShadow(BetterList<Vector3> verts, BetterList<Vector2> uvs, BetterList<Color32> cols, int start, int end, float x, float y, BetterList<Color> effectColorList)
{
if (effectColorList.size == 0)
{
Color c = mEffectColor;
c.a *= alpha * mPanel.finalAlpha;
Color32 col = (bitmapFont != null && bitmapFont.premultipliedAlpha) ? NGUITools.ApplyPMA(c) : c;
for (int i = start; i < end; ++i)
{
verts.Add(verts.buffer[i]);
uvs.Add(uvs.buffer[i]);
cols.Add(cols.buffer[i]);
Vector3 v = verts.buffer[i];
v.x += x;
v.y += y;
verts.buffer[i] = v;
cols.buffer[i] = col;
}
}
else
{
for (int i = start; i < end; ++i)
{
verts.Add(verts.buffer[i]);
uvs.Add(uvs.buffer[i]);
cols.Add(cols.buffer[i]);
effectColorList.Add(effectColorList.buffer[i]);
Vector3 v = verts.buffer[i];
v.x += x;
v.y += y;
verts.buffer[i] = v;
cols.buffer[i] = effectColorList.buffer[i];
}
}
}