Removes BoundingSphere from Gems/EMotionFX

Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
This commit is contained in:
Esteban Papp
2021-12-22 16:57:36 -08:00
parent 6cefe610b8
commit a5005deba7
3 changed files with 0 additions and 133 deletions
@@ -1,106 +0,0 @@
/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
// include required headers
#include "BoundingSphere.h"
#include "AABB.h"
namespace MCore
{
// encapsulate a point in the sphere
void BoundingSphere::Encapsulate(const AZ::Vector3& v)
{
// calculate the squared distance from the center to the point
const AZ::Vector3 diff = v - m_center;
const float dist = diff.Dot(diff);
// if the current sphere doesn't contain the point, grow the sphere so that it contains the point
if (dist > m_radiusSq)
{
const AZ::Vector3 diff2 = diff.GetNormalized() * m_radius;
const AZ::Vector3 delta = 0.5f * (diff - diff2);
m_center += delta;
// TODO: KB- Was a 'safe' function, is there an AZ equivalent?
float length = delta.GetLengthSq();
if (length >= FLT_EPSILON)
{
m_radius += sqrtf(length);
}
else
{
m_radius = 0.0f;
}
m_radiusSq = m_radius * m_radius;
}
}
// check if the sphere intersects with a given AABB
bool BoundingSphere::Intersects(const AABB& b) const
{
float distance = 0.0f;
for (int32_t t = 0; t < 3; ++t)
{
const AZ::Vector3& minVec = b.GetMin();
if (m_center.GetElement(t) < minVec.GetElement(t))
{
distance += (m_center.GetElement(t) - minVec.GetElement(t)) * (m_center.GetElement(t) - minVec.GetElement(t));
if (distance > m_radiusSq)
{
return false;
}
}
else
{
const AZ::Vector3& maxVec = b.GetMax();
if (m_center.GetElement(t) > maxVec.GetElement(t))
{
distance += (m_center.GetElement(t) - maxVec.GetElement(t)) * (m_center.GetElement(t) - maxVec.GetElement(t));
if (distance > m_radiusSq)
{
return false;
}
}
}
}
return true;
}
// check if the sphere completely contains a given AABB
bool BoundingSphere::Contains(const AABB& b) const
{
float distance = 0.0f;
for (int32_t t = 0; t < 3; ++t)
{
const AZ::Vector3& maxVec = b.GetMax();
if (m_center.GetElement(t) < maxVec.GetElement(t))
{
distance += (m_center.GetElement(t) - maxVec.GetElement(t)) * (m_center.GetElement(t) - maxVec.GetElement(t));
}
else
{
const AZ::Vector3& minVec = b.GetMin();
if (m_center.GetElement(t) > minVec.GetElement(t))
{
distance += (m_center.GetElement(t) - minVec.GetElement(t)) * (m_center.GetElement(t) - minVec.GetElement(t));
}
}
if (distance > m_radiusSq)
{
return false;
}
}
return true;
}
} // namespace MCore
@@ -108,32 +108,6 @@ namespace MCore
*/
MCORE_INLINE bool Intersects(const BoundingSphere& s) const { return ((m_center - s.m_center).GetLengthSq() <= (m_radiusSq + s.m_radiusSq)); }
/**
* Encapsulate a given 3D point with this sphere.
* Automatically adjust the center and radius of the sphere after 'adding' the given point to the sphere.
* Note that you should only use this method when the center of the bounding sphere isnt exactly known yet.
* This encapsulation method will adjust the center of the sphere as well. If the center of the sphere is known upfront and it is
* known upfront as well that this center point won't change, you should use the Encapsulate() method instead.
* @param v The vector representing the 3D point to use in the encapsulation.
*/
void Encapsulate(const AZ::Vector3& v);
/**
* Checks if this sphere completely contains a given Axis Aligned Bounding Box (AABB).
* Note that the border of the sphere is counted as 'inside'.
* @param 'b' The box to perform the test with.
* @result Returns true when 'b' is COMPLETELY inside the spheres volume, otherwise false is returned.
*/
bool Contains(const AABB& b) const;
/**
* Checks if a given Axis Aligned Bounding Box (AABB) intersects this sphere.
* Note that the border of the sphere is counted as inside.
* @param 'b' The box to perform the test with.
* @result Returns true when 'b' is completely or partially inside the volume of this sphere.
*/
bool Intersects(const AABB& b) const;
/**
* Get the radius of the sphere.
* @result Returns the radius of the sphere.
@@ -34,7 +34,6 @@ set(FILES
Source/AttributeVector3.h
Source/AttributeVector4.h
Source/AzCoreConversions.h
Source/BoundingSphere.cpp
Source/BoundingSphere.h
Source/Color.cpp
Source/Color.h