1
0
mirror of https://github.com/godotengine/godot.git synced 2026-01-06 19:41:11 +00:00

Merge pull request #57469 from Sauermann/fix-rect2i-intersect

This commit is contained in:
Rémi Verschelde
2022-02-01 00:05:02 +01:00
committed by GitHub
3 changed files with 13 additions and 7 deletions

View File

@@ -382,16 +382,16 @@ struct _NO_DISCARD_ Rect2i {
ERR_PRINT("Rect2i size is negative, this is not supported. Use Rect2i.abs() to get a Rect2i with a positive size.");
}
#endif
if (position.x > (p_rect.position.x + p_rect.size.width)) {
if (position.x >= (p_rect.position.x + p_rect.size.width)) {
return false;
}
if ((position.x + size.width) < p_rect.position.x) {
if ((position.x + size.width) <= p_rect.position.x) {
return false;
}
if (position.y > (p_rect.position.y + p_rect.size.height)) {
if (position.y >= (p_rect.position.y + p_rect.size.height)) {
return false;
}
if ((position.y + size.height) < p_rect.position.y) {
if ((position.y + size.height) <= p_rect.position.y) {
return false;
}
@@ -405,8 +405,8 @@ struct _NO_DISCARD_ Rect2i {
}
#endif
return (p_rect.position.x >= position.x) && (p_rect.position.y >= position.y) &&
((p_rect.position.x + p_rect.size.x) < (position.x + size.x)) &&
((p_rect.position.y + p_rect.size.y) < (position.y + size.y));
((p_rect.position.x + p_rect.size.x) <= (position.x + size.x)) &&
((p_rect.position.y + p_rect.size.y) <= (position.y + size.y));
}
_FORCE_INLINE_ bool has_no_area() const {

View File

@@ -70,7 +70,7 @@
<return type="Rect2i" />
<argument index="0" name="to" type="Vector2i" />
<description>
Returns a copy of this [Rect2i] expanded to include a given point.
Returns a copy of this [Rect2i] expanded so that the borders align with the given point.
[codeblocks]
[gdscript]
# position (-3, 2), size (1, 1)

View File

@@ -439,6 +439,9 @@ TEST_CASE("[Rect2i] Enclosing") {
CHECK_MESSAGE(
!Rect2i(0, 100, 1280, 720).encloses(Rect2i(-4000, -4000, 100, 100)),
"encloses() with non-contained Rect2i should return the expected result.");
CHECK_MESSAGE(
Rect2i(0, 100, 1280, 720).encloses(Rect2i(0, 100, 1280, 720)),
"encloses() with identical Rect2i should return the expected result.");
}
TEST_CASE("[Rect2i] Expanding") {
@@ -557,6 +560,9 @@ TEST_CASE("[Rect2i] Intersection") {
CHECK_MESSAGE(
!Rect2i(0, 100, 1280, 720).intersects(Rect2i(-4000, -4000, 100, 100)),
"intersects() with non-enclosed Rect2i should return the expected result.");
CHECK_MESSAGE(
!Rect2i(0, 0, 2, 2).intersects(Rect2i(2, 2, 2, 2)),
"intersects() with adjacent Rect2i should return the expected result.");
}
TEST_CASE("[Rect2i] Merging") {