if (rotate == TileRotate.Rotate0)
{
if (flip == TileFlip.FlipNone)
{
// 0-1
// /
// 2-3
// rotate 0
uv[index + 0] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 1] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 2] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 3] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
else if (flip == TileFlip.FlipX)
{
// 1-0
// /
// 3-2
// rotate 0 flip x
uv[index + 1] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 0] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 3] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 2] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
else if (flip == TileFlip.FlipY)
{
// 2-3
// /
// 0-1
// rotate 0 flip y
uv[index + 2] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 3] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 0] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 1] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
}
else if (rotate == TileRotate.Rotate90)
{
if (flip == TileFlip.FlipNone)
{
// 2-0
// /
// 3-1
// rotate 90
uv[index + 2] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 0] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 3] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 1] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
else if (flip == TileFlip.FlipX)
{
// 3-1
// /
// 2-0
// rotate 90 flip x
uv[index + 3] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 1] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 2] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 0] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
else if (flip == TileFlip.FlipY)
{
// 0-2
// /
// 1-3
// rotate 90 flip y
uv[index + 0] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 2] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 1] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 3] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
}
else if (rotate == TileRotate.Rotate180)
{
if (flip == TileFlip.FlipNone)
{
// 3-2
// /
// 1-0
// rotate 180
uv[index + 3] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 2] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 1] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 0] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
else if (flip == TileFlip.FlipX)
{
// 2-3
// /
// 0-1
// rotate 180 flip x
uv[index + 2] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 3] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 0] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 1] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
else if (flip == TileFlip.FlipY)
{
// 1-0
// /
// 3-2
// rotate 180 flip y
uv[index + 1] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 0] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 3] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 2] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
}
else if (rotate == TileRotate.Rotate270)
{
if (flip == TileFlip.FlipNone)
{
// 1-3
// /
// 0-2
// rotate 270
uv[index + 1] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 3] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 0] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 2] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
else if (flip == TileFlip.FlipX)
{
// 0-2
// /
// 1-3
// rotate 270 flip x
uv[index + 0] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 2] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 1] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 3] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
else if (flip == TileFlip.FlipY)
{
// 3-1
// /
// 2-0
// rotate 270 flip y
uv[index + 3] = ToUv(new Vector2(tr.xMin, tr.yMin), Texture);
uv[index + 1] = ToUv(new Vector2(tr.xMax, tr.yMin), Texture);
uv[index + 2] = ToUv(new Vector2(tr.xMin, tr.yMax), Texture);
uv[index + 0] = ToUv(new Vector2(tr.xMax, tr.yMax), Texture);
}
}