コード例 #1
0
ファイル: Utils.cs プロジェクト: saniainf/EDTerraria
 public static float Distance(this Rectangle r, Vector2 point)
 {
     if (Utils.FloatIntersect((float)r.Left, (float)r.Top, (float)r.Width, (float)r.Height, point.X, point.Y, 0.0f, 0.0f))
     {
         return(0.0f);
     }
     if ((double)point.X >= (double)r.Left && (double)point.X <= (double)r.Right)
     {
         if ((double)point.Y < (double)r.Top)
         {
             return((float)r.Top - point.Y);
         }
         return(point.Y - (float)r.Bottom);
     }
     if ((double)point.Y >= (double)r.Top && (double)point.Y <= (double)r.Bottom)
     {
         if ((double)point.X < (double)r.Left)
         {
             return((float)r.Left - point.X);
         }
         return(point.X - (float)r.Right);
     }
     if ((double)point.X < (double)r.Left)
     {
         if ((double)point.Y < (double)r.Top)
         {
             return(Vector2.Distance(point, Utils.TopLeft(r)));
         }
         return(Vector2.Distance(point, Utils.BottomLeft(r)));
     }
     if ((double)point.Y < (double)r.Top)
     {
         return(Vector2.Distance(point, Utils.TopRight(r)));
     }
     return(Vector2.Distance(point, Utils.BottomRight(r)));
 }