public class UITiledOffsetSprite : UITiledSprite
{
public Rect uvModifiers
= new Rect
(0,
0,
1,
1); Rect uvModifiersOld;
/// <summary>
/// Fill the draw buffers.
/// </summary>
#if UNITY_3_5_4
public override void OnFill (BetterList<Vector3> verts, BetterList<Vector2> uvs, BetterList<Color> cols)
#else
public override void OnFill (BetterList<Vector3> verts, BetterList<Vector2> uvs, BetterList<Color32> cols)
#endif
{
Texture tex = material.mainTexture;
if (tex == null) return;
Rect rect = mInner;
rect.width *= uvModifiers.width;
rect.height *= uvModifiers.height;
int oldNumVerts = uvs.size;
//Tiled Sprite needs the scaled uv coordinates
Rect realInner = mInner;
mInner = rect;
base.OnFill(verts, uvs, cols);
mInner = realInner;
if (atlas.coordinates == UIAtlas.Coordinates.TexCoords)
{
rect = NGUIMath.ConvertToPixels(rect, tex.width, tex.height, true);
}
Vector2 offsetInUVs
= new Vector2
( uvModifiers
.x * rect
.width / tex
.width,
-uvModifiers
.y * rect
.height / tex
.height );
for( int i = oldNumVerts; i < uvs.size; i++ )
uvs[i] += offsetInUVs;
if( uvModifiers != uvModifiersOld ) {
MarkAsChanged();
uvModifiersOld = uvModifiers;
}
}
}