private Vector2[] genUV(Vector3[] vertices)
{
if(spriteRenderer != null) {
var prevRot = spriteRenderer.transform.rotation;
spriteRenderer.transform.rotation = Quaternion.identity;
float texHeight = (float)(spriteRenderer.sprite.texture.height);
float texWidth = (float)(spriteRenderer.sprite.texture.width);
Vector3 botLeft = spriteRenderer.transform.InverseTransformPoint(new Vector3(spriteRenderer.bounds.min.x, spriteRenderer.bounds.min.y, 0));
Vector2 spriteTextureOrigin;
spriteTextureOrigin.x = (float)spriteRenderer.sprite.rect.x;
spriteTextureOrigin.y = (float)spriteRenderer.sprite.rect.y;
Vector2[] uv = new Vector2[vertices.Length];
for(int i = 0; i < vertices.Length; i++) {
float x = (vertices[i].x - botLeft.x) * spriteRenderer.sprite.pixelsPerUnit;
float y = (vertices[i].y - botLeft.y) * spriteRenderer.sprite.pixelsPerUnit;
uv[i] = new Vector2(((x + spriteTextureOrigin.x) / texWidth), ((y + spriteTextureOrigin.y) / texHeight));
}
spriteRenderer.transform.rotation = prevRot;
return uv;
}
else {
return null;
}
}