Change inequality comparison operators to use exact equality
This commit is contained in:
parent
2410016638
commit
d0a1399a1b
4 changed files with 32 additions and 33 deletions
|
@ -114,10 +114,10 @@ struct Vector2 {
|
|||
bool operator==(const Vector2 &p_vec2) const;
|
||||
bool operator!=(const Vector2 &p_vec2) const;
|
||||
|
||||
bool operator<(const Vector2 &p_vec2) const { return Math::is_equal_approx(x, p_vec2.x) ? (y < p_vec2.y) : (x < p_vec2.x); }
|
||||
bool operator>(const Vector2 &p_vec2) const { return Math::is_equal_approx(x, p_vec2.x) ? (y > p_vec2.y) : (x > p_vec2.x); }
|
||||
bool operator<=(const Vector2 &p_vec2) const { return Math::is_equal_approx(x, p_vec2.x) ? (y <= p_vec2.y) : (x < p_vec2.x); }
|
||||
bool operator>=(const Vector2 &p_vec2) const { return Math::is_equal_approx(x, p_vec2.x) ? (y >= p_vec2.y) : (x > p_vec2.x); }
|
||||
bool operator<(const Vector2 &p_vec2) const { return x == p_vec2.x ? (y < p_vec2.y) : (x < p_vec2.x); }
|
||||
bool operator>(const Vector2 &p_vec2) const { return x == p_vec2.x ? (y > p_vec2.y) : (x > p_vec2.x); }
|
||||
bool operator<=(const Vector2 &p_vec2) const { return x == p_vec2.x ? (y <= p_vec2.y) : (x < p_vec2.x); }
|
||||
bool operator>=(const Vector2 &p_vec2) const { return x == p_vec2.x ? (y >= p_vec2.y) : (x > p_vec2.x); }
|
||||
|
||||
real_t angle() const;
|
||||
|
||||
|
|
|
@ -322,8 +322,8 @@ bool Vector3::operator!=(const Vector3 &p_v) const {
|
|||
}
|
||||
|
||||
bool Vector3::operator<(const Vector3 &p_v) const {
|
||||
if (Math::is_equal_approx(x, p_v.x)) {
|
||||
if (Math::is_equal_approx(y, p_v.y)) {
|
||||
if (x == p_v.x) {
|
||||
if (y == p_v.y) {
|
||||
return z < p_v.z;
|
||||
} else {
|
||||
return y < p_v.y;
|
||||
|
@ -334,8 +334,8 @@ bool Vector3::operator<(const Vector3 &p_v) const {
|
|||
}
|
||||
|
||||
bool Vector3::operator>(const Vector3 &p_v) const {
|
||||
if (Math::is_equal_approx(x, p_v.x)) {
|
||||
if (Math::is_equal_approx(y, p_v.y)) {
|
||||
if (x == p_v.x) {
|
||||
if (y == p_v.y) {
|
||||
return z > p_v.z;
|
||||
} else {
|
||||
return y > p_v.y;
|
||||
|
@ -346,8 +346,8 @@ bool Vector3::operator>(const Vector3 &p_v) const {
|
|||
}
|
||||
|
||||
bool Vector3::operator<=(const Vector3 &p_v) const {
|
||||
if (Math::is_equal_approx(x, p_v.x)) {
|
||||
if (Math::is_equal_approx(y, p_v.y)) {
|
||||
if (x == p_v.x) {
|
||||
if (y == p_v.y) {
|
||||
return z <= p_v.z;
|
||||
} else {
|
||||
return y < p_v.y;
|
||||
|
@ -358,8 +358,8 @@ bool Vector3::operator<=(const Vector3 &p_v) const {
|
|||
}
|
||||
|
||||
bool Vector3::operator>=(const Vector3 &p_v) const {
|
||||
if (Math::is_equal_approx(x, p_v.x)) {
|
||||
if (Math::is_equal_approx(y, p_v.y)) {
|
||||
if (x == p_v.x) {
|
||||
if (y == p_v.y) {
|
||||
return z >= p_v.z;
|
||||
} else {
|
||||
return y > p_v.y;
|
||||
|
|
|
@ -670,41 +670,37 @@ namespace Godot
|
|||
|
||||
public static bool operator <(Vector2 left, Vector2 right)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.x, right.x))
|
||||
if (left.x == right.x)
|
||||
{
|
||||
return left.y < right.y;
|
||||
}
|
||||
|
||||
return left.x < right.x;
|
||||
}
|
||||
|
||||
public static bool operator >(Vector2 left, Vector2 right)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.x, right.x))
|
||||
if (left.x == right.x)
|
||||
{
|
||||
return left.y > right.y;
|
||||
}
|
||||
|
||||
return left.x > right.x;
|
||||
}
|
||||
|
||||
public static bool operator <=(Vector2 left, Vector2 right)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.x, right.x))
|
||||
if (left.x == right.x)
|
||||
{
|
||||
return left.y <= right.y;
|
||||
}
|
||||
|
||||
return left.x <= right.x;
|
||||
}
|
||||
|
||||
public static bool operator >=(Vector2 left, Vector2 right)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.x, right.x))
|
||||
if (left.x == right.x)
|
||||
{
|
||||
return left.y >= right.y;
|
||||
}
|
||||
|
||||
return left.x >= right.x;
|
||||
}
|
||||
|
||||
|
@ -714,7 +710,6 @@ namespace Godot
|
|||
{
|
||||
return Equals((Vector2)obj);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -713,49 +713,53 @@ namespace Godot
|
|||
|
||||
public static bool operator <(Vector3 left, Vector3 right)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.x, right.x))
|
||||
if (left.x == right.x)
|
||||
{
|
||||
if (left.y == right.y)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.y, right.y))
|
||||
return left.z < right.z;
|
||||
}
|
||||
return left.y < right.y;
|
||||
}
|
||||
|
||||
return left.x < right.x;
|
||||
}
|
||||
|
||||
public static bool operator >(Vector3 left, Vector3 right)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.x, right.x))
|
||||
if (left.x == right.x)
|
||||
{
|
||||
if (left.y == right.y)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.y, right.y))
|
||||
return left.z > right.z;
|
||||
}
|
||||
return left.y > right.y;
|
||||
}
|
||||
|
||||
return left.x > right.x;
|
||||
}
|
||||
|
||||
public static bool operator <=(Vector3 left, Vector3 right)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.x, right.x))
|
||||
if (left.x == right.x)
|
||||
{
|
||||
if (left.y == right.y)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.y, right.y))
|
||||
return left.z <= right.z;
|
||||
}
|
||||
return left.y < right.y;
|
||||
}
|
||||
|
||||
return left.x < right.x;
|
||||
}
|
||||
|
||||
public static bool operator >=(Vector3 left, Vector3 right)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.x, right.x))
|
||||
if (left.x == right.x)
|
||||
{
|
||||
if (left.y == right.y)
|
||||
{
|
||||
if (Mathf.IsEqualApprox(left.y, right.y))
|
||||
return left.z >= right.z;
|
||||
}
|
||||
return left.y > right.y;
|
||||
}
|
||||
|
||||
return left.x > right.x;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue