private bool BoundBaseCollision_Ext(BoundBase characterBound, BoundBase collidedRootBound) { bool bHasCollision = false; BoundBase.BoundType collisionType = characterBound.GetBoundType() | collidedRootBound.GetBoundType(); if (collisionType == (BoundBase.BoundType.AABB | BoundBase.BoundType.OBB)) { AABB aabb = characterBound.GetBoundType() == BoundBase.BoundType.AABB ? characterBound as AABB : collidedRootBound as AABB; OBB obb = collidedRootBound.GetBoundType() == BoundBase.BoundType.OBB ? collidedRootBound as OBB : characterBound as OBB; bHasCollision = GeometryMath.AABBOBB(aabb, obb); } else if (collisionType == (BoundBase.BoundType.AABB | BoundBase.BoundType.AABB)) { bHasCollision = GeometryMath.AABBAABB(characterBound as AABB, collidedRootBound as AABB); } else { bHasCollision = GeometryMath.OBBOBB(characterBound as OBB, collidedRootBound as OBB); } return(bHasCollision); }