﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// Rect的扩展方法类
/// </summary>
public static class RectExtension
{
    /// <summary>
    /// 计算点到Rect的border的距离，若点在Rect内则返回0
    /// </summary>
    /// <param name="rect"></param>
    /// <param name="pos"></param>
    /// <returns></returns>
    public static float PointToBorderDistance(this Rect rect, Vector2 pos)
    {
        float xdisance;
        float ydisance;

        if (rect.x <= pos.x && pos.x <= rect.xMax)
        {
            xdisance = 0;
        }
        else
        {
            xdisance = Mathf.Min(Mathf.Abs(pos.x - rect.xMax), Mathf.Abs(pos.x - rect.x));
        }

        if (rect.y <= pos.y && pos.y <= rect.yMax)
        {
            ydisance = 0;
        }
        else
        {
            ydisance = Mathf.Min(Mathf.Abs(pos.y - rect.yMax), Mathf.Abs(pos.y - rect.y));
        }

        return xdisance * xdisance + ydisance * ydisance;
    }
}