Skip to content

Commit

Permalink
More cases
Browse files Browse the repository at this point in the history
  • Loading branch information
AThousandShips committed Sep 27, 2024
1 parent 21ec318 commit f3c914b
Show file tree
Hide file tree
Showing 11 changed files with 30 additions and 26 deletions.
4 changes: 4 additions & 0 deletions core/math/basis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -694,6 +694,10 @@ bool Basis::is_equal_approx(const Basis &p_basis) const {
return rows[0].is_equal_approx(p_basis.rows[0]) && rows[1].is_equal_approx(p_basis.rows[1]) && rows[2].is_equal_approx(p_basis.rows[2]);
}

bool Basis::is_semantic_equal(const Basis &p_basis) const {
return rows[0].is_semantic_equal(p_basis.rows[0]) && rows[1].is_semantic_equal(p_basis.rows[1]) && rows[2].is_semantic_equal(p_basis.rows[2]);
}

bool Basis::is_finite() const {
return rows[0].is_finite() && rows[1].is_finite() && rows[2].is_finite();
}
Expand Down
1 change: 1 addition & 0 deletions core/math/basis.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ struct [[nodiscard]] Basis {
}

bool is_equal_approx(const Basis &p_basis) const;
bool is_semantic_equal(const Basis &p_basis) const;
bool is_finite() const;

bool operator==(const Basis &p_matrix) const;
Expand Down
4 changes: 4 additions & 0 deletions core/math/plane.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,10 @@ bool Plane::is_equal_approx(const Plane &p_plane) const {
return normal.is_equal_approx(p_plane.normal) && Math::is_equal_approx(d, p_plane.d);
}

bool Plane::is_semantic_equal(const Plane &p_plane) const {
return normal.is_semantic_equal(p_plane.normal) && Math::is_semantic_equal(d, p_plane.d);
}

bool Plane::is_finite() const {
return normal.is_finite() && Math::is_finite(d);
}
Expand Down
1 change: 1 addition & 0 deletions core/math/plane.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ struct [[nodiscard]] Plane {

Plane operator-() const { return Plane(-normal, -d); }
bool is_equal_approx(const Plane &p_plane) const;
bool is_semantic_equal(const Plane &p_plane) const;
bool is_equal_approx_any_side(const Plane &p_plane) const;
bool is_finite() const;

Expand Down
4 changes: 4 additions & 0 deletions core/math/rect2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ bool Rect2::is_equal_approx(const Rect2 &p_rect) const {
return position.is_equal_approx(p_rect.position) && size.is_equal_approx(p_rect.size);
}

bool Rect2::is_semantic_equal(const Rect2 &p_rect) const {
return position.is_semantic_equal(p_rect.position) && size.is_semantic_equal(p_rect.size);
}

bool Rect2::is_finite() const {
return position.is_finite() && size.is_finite();
}
Expand Down
1 change: 1 addition & 0 deletions core/math/rect2.h
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ struct [[nodiscard]] Rect2 {
}

bool is_equal_approx(const Rect2 &p_rect) const;
bool is_semantic_equal(const Rect2 &p_rect) const;
bool is_finite() const;

bool operator==(const Rect2 &p_rect) const { return position == p_rect.position && size == p_rect.size; }
Expand Down
4 changes: 4 additions & 0 deletions core/math/transform_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,10 @@ bool Transform2D::is_equal_approx(const Transform2D &p_transform) const {
return columns[0].is_equal_approx(p_transform.columns[0]) && columns[1].is_equal_approx(p_transform.columns[1]) && columns[2].is_equal_approx(p_transform.columns[2]);
}

bool Transform2D::is_semantic_equal(const Transform2D &p_transform) const {
return columns[0].is_semantic_equal(p_transform.columns[0]) && columns[1].is_semantic_equal(p_transform.columns[1]) && columns[2].is_semantic_equal(p_transform.columns[2]);
}

bool Transform2D::is_finite() const {
return columns[0].is_finite() && columns[1].is_finite() && columns[2].is_finite();
}
Expand Down
1 change: 1 addition & 0 deletions core/math/transform_2d.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ struct [[nodiscard]] Transform2D {
Transform2D orthonormalized() const;
bool is_conformal() const;
bool is_equal_approx(const Transform2D &p_transform) const;
bool is_semantic_equal(const Transform2D &p_transform) const;
bool is_finite() const;

Transform2D looking_at(const Vector2 &p_target) const;
Expand Down
4 changes: 4 additions & 0 deletions core/math/transform_3d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,10 @@ bool Transform3D::is_equal_approx(const Transform3D &p_transform) const {
return basis.is_equal_approx(p_transform.basis) && origin.is_equal_approx(p_transform.origin);
}

bool Transform3D::is_semantic_equal(const Transform3D &p_transform) const {
return basis.is_semantic_equal(p_transform.basis) && origin.is_semantic_equal(p_transform.origin);
}

bool Transform3D::is_finite() const {
return basis.is_finite() && origin.is_finite();
}
Expand Down
1 change: 1 addition & 0 deletions core/math/transform_3d.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ struct [[nodiscard]] Transform3D {
void orthogonalize();
Transform3D orthogonalized() const;
bool is_equal_approx(const Transform3D &p_transform) const;
bool is_semantic_equal(const Transform3D &p_transform) const;
bool is_finite() const;

bool operator==(const Transform3D &p_transform) const;
Expand Down
31 changes: 5 additions & 26 deletions core/variant/variant.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3338,13 +3338,7 @@ bool Variant::hash_compare(const Variant &p_variant, int recursion_count, bool s
Transform2D *l = _data._transform2d;
Transform2D *r = p_variant._data._transform2d;

for (int i = 0; i < 3; i++) {
if (!hash_compare_vector2(l->columns[i], r->columns[i])) {
return false;
}
}

return true;
return l->is_semantic_equal(*r);
} break;

case VECTOR3: {
Expand Down Expand Up @@ -3376,17 +3370,14 @@ bool Variant::hash_compare(const Variant &p_variant, int recursion_count, bool s
const Plane *l = reinterpret_cast<const Plane *>(_data._mem);
const Plane *r = reinterpret_cast<const Plane *>(p_variant._data._mem);

return hash_compare_vector3(l->normal, r->normal) &&
hash_compare_scalar(l->d, r->d);
return l->is_semantic_equal(*r);
} break;

case AABB: {
const ::AABB *l = _data._aabb;
const ::AABB *r = p_variant._data._aabb;

return hash_compare_vector3(l->position, r->position) &&
hash_compare_vector3(l->size, r->size);

return l->is_semantic_equal(*r);
} break;

case QUATERNION: {
Expand All @@ -3400,26 +3391,14 @@ bool Variant::hash_compare(const Variant &p_variant, int recursion_count, bool s
const Basis *l = _data._basis;
const Basis *r = p_variant._data._basis;

for (int i = 0; i < 3; i++) {
if (!hash_compare_vector3(l->rows[i], r->rows[i])) {
return false;
}
}

return true;
return l->is_semantic_equal(*r);
} break;

case TRANSFORM3D: {
const Transform3D *l = _data._transform3d;
const Transform3D *r = p_variant._data._transform3d;

for (int i = 0; i < 3; i++) {
if (!hash_compare_vector3(l->basis.rows[i], r->basis.rows[i])) {
return false;
}
}

return hash_compare_vector3(l->origin, r->origin);
return l->is_semantic_equal(*r);
} break;
case PROJECTION: {
const Projection *l = _data._projection;
Expand Down

0 comments on commit f3c914b

Please sign in to comment.