Merge pull request #776 from Faless/fix/3.x_rect2

pull/830/head
Rémi Verschelde 2022-06-27 12:01:14 +02:00 committed by GitHub
commit 9e5341a5c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 7 deletions

View File

@ -46,25 +46,35 @@ namespace godot {
#endif
real_t Rect2::distance_to(const Vector2 &p_point) const {
real_t dist = 1e20;
real_t dist = 0.0;
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 = 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
} else {
return dist;
}
}
Rect2 Rect2::clip(const Rect2 &p_rect) const { /// return a clipped rect