diff --git a/examples/common/bounds.cpp b/examples/common/bounds.cpp index 74a74b715..51c17b1a3 100644 --- a/examples/common/bounds.cpp +++ b/examples/common/bounds.cpp @@ -1248,44 +1248,16 @@ bool overlap(const Aabb& _aabb, const Sphere& _sphere) return overlap(_sphere, _aabb); } -uint32_t overlapTestMask(const Aabb& _aabbA, const Aabb& _aabbB) -{ - /// Returns 0 is two AABB don't overlap, otherwise returns flags of overlap - /// test. - const uint32_t ltMinX = _aabbA.max.x < _aabbB.min.x; - const uint32_t gtMaxX = _aabbA.min.x > _aabbB.max.x; - const uint32_t ltMinY = _aabbA.max.y < _aabbB.min.y; - const uint32_t gtMaxY = _aabbA.min.y > _aabbB.max.y; - const uint32_t ltMinZ = _aabbA.max.z < _aabbB.min.z; - const uint32_t gtMaxZ = _aabbA.min.z > _aabbB.max.z; - - return 0 - | (ltMinX << 0) - | (gtMaxX << 1) - | (ltMinY << 2) - | (gtMaxY << 3) - | (ltMinZ << 4) - | (gtMaxZ << 5) - ; -} - bool overlap(const Aabb& _aabbA, const Aabb& _aabbB) { -#if 0 - return 0 != overlapTestMask(_aabbA, _aabbB); -#else - const Vec3 ac = getCenter(_aabbA); - const Vec3 bc = getCenter(_aabbB); - const Vec3 abc = bx::abs(sub(ac, bc) ); - const Vec3 ae = getExtents(_aabbA); - const Vec3 be = getExtents(_aabbB); - const Vec3 abe = add(ae, be); - - return abc.x <= abe.x - && abc.y <= abe.y - && abc.z <= abe.z + return true + && _aabbA.max.x > _aabbB.min.x + && _aabbB.max.x > _aabbA.min.x + && _aabbA.max.y > _aabbB.min.y + && _aabbB.max.y > _aabbA.min.y + && _aabbA.max.z > _aabbB.min.z + && _aabbB.max.z > _aabbA.min.z ; -#endif // 0 } bool overlap(const Aabb& _aabb, const Plane& _plane)