some tidying up
This commit is contained in:
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user