Merge pull request #15091 from poke1024/fix-rect2-distance-to

Fix Rect2::distance_to() not returning 0
This commit is contained in:
Noshyaar 2018-01-01 18:37:46 +07:00 committed by GitHub
commit 8dcc28254c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -303,22 +303,31 @@ struct Rect2 {
inline real_t distance_to(const Vector2 &p_point) const {
real_t dist = 1e20;
real_t dist;
bool inside = true;
if (p_point.x < position.x) {
dist = MIN(dist, position.x - p_point.x);
real_t d = position.x - p_point.x;
dist = inside ? d : MIN(dist, d);
inside = false;
}
if (p_point.y < position.y) {
dist = MIN(dist, position.y - p_point.y);
real_t d = position.y - p_point.y;
dist = inside ? d : MIN(dist, d);
inside = false;
}
if (p_point.x >= (position.x + size.x)) {
dist = MIN(p_point.x - (position.x + size.x), dist);
real_t d = p_point.x - (position.x + size.x);
dist = inside ? d : MIN(dist, d);
inside = false;
}
if (p_point.y >= (position.y + size.y)) {
dist = MIN(p_point.y - (position.y + size.y), dist);
real_t d = p_point.y - (position.y + size.y);
dist = inside ? d : MIN(dist, d);
inside = false;
}
if (dist == 1e20)
if (inside)
return 0;
else
return dist;