Update ProcessFromListOfVector2 API functions to use bulk queries. (#7658)

monroegm-disable-blank-issue-2
amzn-sj 4 years ago committed by GitHub
parent 26566a06d2
commit fef53bf4be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -252,6 +252,20 @@ AZStd::vector<AZ::Vector3> TerrainSystem::GenerateInputPositionsFromRegion(
return inPositions;
}
AZStd::vector<AZ::Vector3> TerrainSystem::GenerateInputPositionsFromListOfVector2(
const AZStd::span<AZ::Vector2>& inPositionsVec2) const
{
AZStd::vector<AZ::Vector3> inPositions;
inPositions.reserve(inPositionsVec2.size());
for (auto& pos : inPositionsVec2)
{
inPositions.emplace_back(AZ::Vector3(pos.GetX(), pos.GetY(), 0.0f));
}
return inPositions;
}
void TerrainSystem::MakeBulkQueries(
const AZStd::span<const AZ::Vector3> inPositions,
AZStd::span<AZ::Vector3> outPositions,
@ -1043,14 +1057,9 @@ void TerrainSystem::ProcessHeightsFromListOfVector2(
return;
}
AzFramework::SurfaceData::SurfacePoint surfacePoint;
for (const auto& position : inPositions)
{
bool terrainExists = false;
surfacePoint.m_position.Set(position.GetX(), position.GetY(), 0.0f);
surfacePoint.m_position.SetZ(GetHeightFromVector2(position, sampleFilter, &terrainExists));
perPositionCallback(surfacePoint, terrainExists);
}
AZStd::vector<AZ::Vector3> inPositionsVec3 = GenerateInputPositionsFromListOfVector2(inPositions);
ProcessHeightsFromList(inPositionsVec3, perPositionCallback, sampleFilter);
}
void TerrainSystem::ProcessNormalsFromListOfVector2(
@ -1063,14 +1072,9 @@ void TerrainSystem::ProcessNormalsFromListOfVector2(
return;
}
AzFramework::SurfaceData::SurfacePoint surfacePoint;
for (const auto& position : inPositions)
{
bool terrainExists = false;
surfacePoint.m_position.Set(position.GetX(), position.GetY(), 0.0f);
surfacePoint.m_normal = GetNormalFromVector2(position, sampleFilter, &terrainExists);
perPositionCallback(surfacePoint, terrainExists);
}
AZStd::vector<AZ::Vector3> inPositionsVec3 = GenerateInputPositionsFromListOfVector2(inPositions);
ProcessNormalsFromList(inPositionsVec3, perPositionCallback, sampleFilter);
}
void TerrainSystem::ProcessSurfaceWeightsFromListOfVector2(
@ -1083,14 +1087,9 @@ void TerrainSystem::ProcessSurfaceWeightsFromListOfVector2(
return;
}
AzFramework::SurfaceData::SurfacePoint surfacePoint;
for (const auto& position : inPositions)
{
bool terrainExists = false;
surfacePoint.m_position.Set(position.GetX(), position.GetY(), 0.0f);
GetSurfaceWeightsFromVector2(position, surfacePoint.m_surfaceTags, sampleFilter, &terrainExists);
perPositionCallback(surfacePoint, terrainExists);
}
AZStd::vector<AZ::Vector3> inPositionsVec3 = GenerateInputPositionsFromListOfVector2(inPositions);
ProcessSurfaceWeightsFromList(inPositionsVec3, perPositionCallback, sampleFilter);
}
void TerrainSystem::ProcessSurfacePointsFromListOfVector2(
@ -1103,14 +1102,9 @@ void TerrainSystem::ProcessSurfacePointsFromListOfVector2(
return;
}
AzFramework::SurfaceData::SurfacePoint surfacePoint;
for (const auto& position : inPositions)
{
bool terrainExists = false;
surfacePoint.m_position.Set(position.GetX(), position.GetY(), 0.0f);
GetSurfacePointFromVector2(position, surfacePoint, sampleFilter, &terrainExists);
perPositionCallback(surfacePoint, terrainExists);
}
AZStd::vector<AZ::Vector3> inPositionsVec3 = GenerateInputPositionsFromListOfVector2(inPositions);
ProcessSurfacePointsFromList(inPositionsVec3, perPositionCallback, sampleFilter);
}
AZStd::pair<size_t, size_t> TerrainSystem::GetNumSamplesFromRegion(

@ -321,6 +321,8 @@ namespace Terrain
AZStd::vector<AZ::Vector3> GenerateInputPositionsFromRegion(
const AZ::Aabb& inRegion,
const AZ::Vector2& stepSize) const;
AZStd::vector<AZ::Vector3> GenerateInputPositionsFromListOfVector2(
const AZStd::span<AZ::Vector2>& inPositionsVec2) const;
// AZ::TickBus::Handler overrides ...
void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;

Loading…
Cancel
Save