some tidying up

This commit is contained in:
greerdv
2021-05-25 13:11:05 +01:00
parent 42c5801c52
commit e0fc4cd985
4 changed files with 35 additions and 12 deletions
@@ -433,18 +433,21 @@ namespace LmbrCentral
const float height = polygonPrism.GetHeight();
const AZ::Vector3& nonUniformScale = polygonPrism.GetNonUniformScale();
AZ::Transform worldFromLocalUniformScale = worldFromLocal;
worldFromLocalUniformScale.SetUniformScale(worldFromLocalUniformScale.GetUniformScale());
AZ::Aabb aabb = AZ::Aabb::CreateNull();
// check base of prism
for (const AZ::Vector2& vertex : vertexContainer.GetVertices())
{
aabb.AddPoint(worldFromLocal.TransformPoint(nonUniformScale * AZ::Vector3(vertex.GetX(), vertex.GetY(), 0.0f)));
aabb.AddPoint(worldFromLocalUniformScale.TransformPoint(nonUniformScale * AZ::Vector3(vertex.GetX(), vertex.GetY(), 0.0f)));
}
// check top of prism
// set aabb to be height of prism - ensure entire polygon prism shape is enclosed in aabb
for (const AZ::Vector2& vertex : vertexContainer.GetVertices())
{
aabb.AddPoint(worldFromLocal.TransformPoint(nonUniformScale * AZ::Vector3(vertex.GetX(), vertex.GetY(), height)));
aabb.AddPoint(worldFromLocalUniformScale.TransformPoint(nonUniformScale * AZ::Vector3(vertex.GetX(), vertex.GetY(), height)));
}
return aabb;
@@ -460,10 +463,13 @@ namespace LmbrCentral
const AZStd::vector<AZ::Vector2>& vertices = polygonPrism.m_vertexContainer.GetVertices();
const size_t vertexCount = vertices.size();
AZ::Transform worldFromLocalWithUniformScale = worldFromLocal;
worldFromLocalWithUniformScale.SetUniformScale(worldFromLocalWithUniformScale.GetUniformScale());
// transform point to local space
// it's fine to invert the transform including scale here, because it won't affect whether the point is inside the prism
const AZ::Vector3 localPoint =
worldFromLocal.GetInverse().TransformPoint(point) / polygonPrism.GetNonUniformScale();
worldFromLocalWithUniformScale.GetInverse().TransformPoint(point) / polygonPrism.GetNonUniformScale();
// ensure the point is not above or below the prism (in its local space)
if (localPoint.GetZ() < 0.0f || localPoint.GetZ() > polygonPrism.GetHeight())