protected static Vector3 SnapToSprite(SpriteRenderer spriteRenderer, Vector3 position, float snapDistance)
{
if (spriteRenderer != null)
{
snapDistance = HandleUtility.GetHandleSize(position) * snapDistance;
float x = spriteRenderer.sprite.bounds.size.x / 2f;
float y = spriteRenderer.sprite.bounds.size.y / 2f;
Vector2[] vectorArray = new Vector2[] { new Vector2(-x, -y), new Vector2(0f, -y), new Vector2(x, -y), new Vector2(-x, 0f), new Vector2(0f, 0f), new Vector2(x, 0f), new Vector2(-x, y), new Vector2(0f, y), new Vector2(x, y) };
foreach (Vector2 vector in vectorArray)
{
Vector3 b = spriteRenderer.transform.TransformPoint((Vector3) vector);
if (Vector2.Distance(position, b) <= snapDistance)
{
return b;
}
}
}
return position;
}