|
@@ -32,20 +32,20 @@ namespace UnitTest::TerrainTest
|
|
const AZ::Vector2& inputQueryStepSize,
|
|
const AZ::Vector2& inputQueryStepSize,
|
|
AzFramework::Terrain::TerrainDataRequests::Sampler sampler,
|
|
AzFramework::Terrain::TerrainDataRequests::Sampler sampler,
|
|
AZStd::vector<AZ::Vector3>& queryPositions,
|
|
AZStd::vector<AZ::Vector3>& queryPositions,
|
|
- AZStd::vector<AZ::Vector3>& resultPositions)
|
|
|
|
|
|
+ AZStd::vector<AZ::Vector3>& resultPositions,
|
|
|
|
+ AZStd::vector<bool>& resultExistsFlags)
|
|
{
|
|
{
|
|
queryPositions.clear();
|
|
queryPositions.clear();
|
|
resultPositions.clear();
|
|
resultPositions.clear();
|
|
|
|
+ resultExistsFlags.clear();
|
|
|
|
|
|
- auto perPositionCallback = [&queryPositions, &resultPositions](
|
|
|
|
|
|
+ auto perPositionCallback = [&queryPositions, &resultPositions, &resultExistsFlags](
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
queryPositions.emplace_back(surfacePoint.m_position.GetX(), surfacePoint.m_position.GetY(), 0.0f);
|
|
queryPositions.emplace_back(surfacePoint.m_position.GetX(), surfacePoint.m_position.GetY(), 0.0f);
|
|
resultPositions.emplace_back(surfacePoint.m_position);
|
|
resultPositions.emplace_back(surfacePoint.m_position);
|
|
-
|
|
|
|
- // For these unit tests, we expect every point queried to have valid terrain data.
|
|
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ resultExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
AzFramework::Terrain::TerrainQueryRegion queryRegion =
|
|
AzFramework::Terrain::TerrainQueryRegion queryRegion =
|
|
@@ -58,7 +58,8 @@ namespace UnitTest::TerrainTest
|
|
}
|
|
}
|
|
|
|
|
|
// Compare two sets of output data and verify that they match.
|
|
// Compare two sets of output data and verify that they match.
|
|
- void ComparePositionData(const AZStd::vector<AZ::Vector3>& baselineValues, const AZStd::vector<AZ::Vector3>& comparisonValues)
|
|
|
|
|
|
+ void ComparePositionData(const AZStd::vector<AZ::Vector3>& baselineValues, const AZStd::vector<bool>& baselineExistsFlags,
|
|
|
|
+ const AZStd::vector<AZ::Vector3>& comparisonValues, const AZStd::vector<bool>& comparisonExistsFlags)
|
|
{
|
|
{
|
|
// Verify that we have the same quantity of results in both sets.
|
|
// Verify that we have the same quantity of results in both sets.
|
|
ASSERT_EQ(baselineValues.size(), comparisonValues.size());
|
|
ASSERT_EQ(baselineValues.size(), comparisonValues.size());
|
|
@@ -66,14 +67,15 @@ namespace UnitTest::TerrainTest
|
|
// Verify that every value is found exactly once in each set. The two sets might not have the values in the same order though,
|
|
// Verify that every value is found exactly once in each set. The two sets might not have the values in the same order though,
|
|
// so we need to search for each value, verify it's found, and verify that it hadn't previously been found.
|
|
// so we need to search for each value, verify it's found, and verify that it hadn't previously been found.
|
|
AZStd::vector<bool> matchFound(baselineValues.size(), false);
|
|
AZStd::vector<bool> matchFound(baselineValues.size(), false);
|
|
- for (auto& comparisonValue : comparisonValues)
|
|
|
|
|
|
+ for (size_t comparisonIndex = 0; comparisonIndex < comparisonValues.size(); comparisonIndex++)
|
|
{
|
|
{
|
|
- auto foundValue = AZStd::find(baselineValues.begin(), baselineValues.end(), comparisonValue);
|
|
|
|
|
|
+ auto foundValue = AZStd::find(baselineValues.begin(), baselineValues.end(), comparisonValues[comparisonIndex]);
|
|
EXPECT_NE(foundValue, baselineValues.end());
|
|
EXPECT_NE(foundValue, baselineValues.end());
|
|
if (foundValue != baselineValues.end())
|
|
if (foundValue != baselineValues.end())
|
|
{
|
|
{
|
|
size_t foundIndex = foundValue - baselineValues.begin();
|
|
size_t foundIndex = foundValue - baselineValues.begin();
|
|
EXPECT_FALSE(matchFound[foundIndex]);
|
|
EXPECT_FALSE(matchFound[foundIndex]);
|
|
|
|
+ EXPECT_EQ(baselineExistsFlags[foundIndex], comparisonExistsFlags[comparisonIndex]);
|
|
matchFound[foundIndex] = true;
|
|
matchFound[foundIndex] = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -85,20 +87,20 @@ namespace UnitTest::TerrainTest
|
|
const AZ::Vector2& inputQueryStepSize,
|
|
const AZ::Vector2& inputQueryStepSize,
|
|
AzFramework::Terrain::TerrainDataRequests::Sampler sampler,
|
|
AzFramework::Terrain::TerrainDataRequests::Sampler sampler,
|
|
AZStd::vector<AZ::Vector3>& queryPositions,
|
|
AZStd::vector<AZ::Vector3>& queryPositions,
|
|
- AZStd::vector<AZ::Vector3>& resultNormals)
|
|
|
|
|
|
+ AZStd::vector<AZ::Vector3>& resultNormals,
|
|
|
|
+ AZStd::vector<bool>& resultExistsFlags)
|
|
{
|
|
{
|
|
queryPositions.clear();
|
|
queryPositions.clear();
|
|
resultNormals.clear();
|
|
resultNormals.clear();
|
|
|
|
+ resultExistsFlags.clear();
|
|
|
|
|
|
- auto perPositionCallback = [&queryPositions, &resultNormals](
|
|
|
|
|
|
+ auto perPositionCallback = [&queryPositions, &resultNormals, &resultExistsFlags](
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
queryPositions.emplace_back(surfacePoint.m_position.GetX(), surfacePoint.m_position.GetY(), 0.0f);
|
|
queryPositions.emplace_back(surfacePoint.m_position.GetX(), surfacePoint.m_position.GetY(), 0.0f);
|
|
resultNormals.emplace_back(surfacePoint.m_normal);
|
|
resultNormals.emplace_back(surfacePoint.m_normal);
|
|
-
|
|
|
|
- // For these unit tests, we expect every point queried to have valid terrain data.
|
|
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ resultExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
AzFramework::Terrain::TerrainQueryRegion queryRegion =
|
|
AzFramework::Terrain::TerrainQueryRegion queryRegion =
|
|
@@ -114,8 +116,10 @@ namespace UnitTest::TerrainTest
|
|
void CompareNormalData(
|
|
void CompareNormalData(
|
|
const AZStd::vector<AZ::Vector3>& baselineQueryPositions,
|
|
const AZStd::vector<AZ::Vector3>& baselineQueryPositions,
|
|
const AZStd::vector<AZ::Vector3>& baselineValues,
|
|
const AZStd::vector<AZ::Vector3>& baselineValues,
|
|
|
|
+ const AZStd::vector<bool>& baselineExistsFlags,
|
|
const AZStd::vector<AZ::Vector3>& comparisonQueryPositions,
|
|
const AZStd::vector<AZ::Vector3>& comparisonQueryPositions,
|
|
- const AZStd::vector<AZ::Vector3>& comparisonValues)
|
|
|
|
|
|
+ const AZStd::vector<AZ::Vector3>& comparisonValues,
|
|
|
|
+ const AZStd::vector<bool>& comparisonExistsFlags)
|
|
{
|
|
{
|
|
// Verify that we have the same quantity of results in both sets.
|
|
// Verify that we have the same quantity of results in both sets.
|
|
ASSERT_EQ(baselineValues.size(), comparisonValues.size());
|
|
ASSERT_EQ(baselineValues.size(), comparisonValues.size());
|
|
@@ -134,6 +138,7 @@ namespace UnitTest::TerrainTest
|
|
size_t foundIndex = foundPosition - baselineQueryPositions.begin();
|
|
size_t foundIndex = foundPosition - baselineQueryPositions.begin();
|
|
EXPECT_FALSE(matchFound[foundIndex]);
|
|
EXPECT_FALSE(matchFound[foundIndex]);
|
|
EXPECT_EQ(baselineValues[foundIndex], comparisonValues[comparisonIndex]);
|
|
EXPECT_EQ(baselineValues[foundIndex], comparisonValues[comparisonIndex]);
|
|
|
|
+ EXPECT_EQ(baselineExistsFlags[foundIndex], comparisonExistsFlags[comparisonIndex]);
|
|
matchFound[foundIndex] = true;
|
|
matchFound[foundIndex] = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -205,20 +210,20 @@ namespace UnitTest::TerrainTest
|
|
const AZ::Vector2& inputQueryStepSize,
|
|
const AZ::Vector2& inputQueryStepSize,
|
|
AzFramework::Terrain::TerrainDataRequests::Sampler sampler,
|
|
AzFramework::Terrain::TerrainDataRequests::Sampler sampler,
|
|
AZStd::vector<AZ::Vector3>& queryPositions,
|
|
AZStd::vector<AZ::Vector3>& queryPositions,
|
|
- AZStd::vector<AzFramework::SurfaceData::SurfacePoint>& resultPoints)
|
|
|
|
|
|
+ AZStd::vector<AzFramework::SurfaceData::SurfacePoint>& resultPoints,
|
|
|
|
+ AZStd::vector<bool>& resultExistsFlags)
|
|
{
|
|
{
|
|
queryPositions.clear();
|
|
queryPositions.clear();
|
|
resultPoints.clear();
|
|
resultPoints.clear();
|
|
|
|
+ resultExistsFlags.clear();
|
|
|
|
|
|
- auto perPositionCallback = [&queryPositions, &resultPoints](
|
|
|
|
|
|
+ auto perPositionCallback = [&queryPositions, &resultPoints, &resultExistsFlags](
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
queryPositions.emplace_back(surfacePoint.m_position.GetX(), surfacePoint.m_position.GetY(), 0.0f);
|
|
queryPositions.emplace_back(surfacePoint.m_position.GetX(), surfacePoint.m_position.GetY(), 0.0f);
|
|
resultPoints.emplace_back(surfacePoint);
|
|
resultPoints.emplace_back(surfacePoint);
|
|
-
|
|
|
|
- // For these unit tests, we expect every point queried to have valid terrain data.
|
|
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ resultExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
AzFramework::Terrain::TerrainQueryRegion queryRegion =
|
|
AzFramework::Terrain::TerrainQueryRegion queryRegion =
|
|
@@ -233,7 +238,9 @@ namespace UnitTest::TerrainTest
|
|
// Compare two sets of output data and verify that they match.
|
|
// Compare two sets of output data and verify that they match.
|
|
void CompareSurfacePointData(
|
|
void CompareSurfacePointData(
|
|
const AZStd::vector<AzFramework::SurfaceData::SurfacePoint>& baselineValues,
|
|
const AZStd::vector<AzFramework::SurfaceData::SurfacePoint>& baselineValues,
|
|
- const AZStd::vector<AzFramework::SurfaceData::SurfacePoint>& comparisonValues)
|
|
|
|
|
|
+ const AZStd::vector<bool>& baselineExistsFlags,
|
|
|
|
+ const AZStd::vector<AzFramework::SurfaceData::SurfacePoint>& comparisonValues,
|
|
|
|
+ const AZStd::vector<bool>& comparisonExistsFlags)
|
|
{
|
|
{
|
|
// Verify that we have the same quantity of results in both sets.
|
|
// Verify that we have the same quantity of results in both sets.
|
|
ASSERT_EQ(baselineValues.size(), comparisonValues.size());
|
|
ASSERT_EQ(baselineValues.size(), comparisonValues.size());
|
|
@@ -241,8 +248,10 @@ namespace UnitTest::TerrainTest
|
|
// Verify that every value is found exactly once in each set. The two sets might not have the values in the same order though,
|
|
// Verify that every value is found exactly once in each set. The two sets might not have the values in the same order though,
|
|
// so we need to search for each value, verify it's found, and verify that it hadn't previously been found.
|
|
// so we need to search for each value, verify it's found, and verify that it hadn't previously been found.
|
|
AZStd::vector<bool> matchFound(baselineValues.size(), false);
|
|
AZStd::vector<bool> matchFound(baselineValues.size(), false);
|
|
- for (auto& comparisonValue : comparisonValues)
|
|
|
|
|
|
+ for (size_t comparisonIndex = 0; comparisonIndex < comparisonValues.size(); comparisonIndex++)
|
|
{
|
|
{
|
|
|
|
+ const auto& comparisonValue = comparisonValues[comparisonIndex];
|
|
|
|
+
|
|
auto foundValue = AZStd::find_if(
|
|
auto foundValue = AZStd::find_if(
|
|
baselineValues.begin(), baselineValues.end(),
|
|
baselineValues.begin(), baselineValues.end(),
|
|
[&comparisonValue](const AzFramework::SurfaceData::SurfacePoint& baselineValue) -> bool
|
|
[&comparisonValue](const AzFramework::SurfaceData::SurfacePoint& baselineValue) -> bool
|
|
@@ -254,8 +263,14 @@ namespace UnitTest::TerrainTest
|
|
EXPECT_NE(foundValue, baselineValues.end());
|
|
EXPECT_NE(foundValue, baselineValues.end());
|
|
if (foundValue != baselineValues.end())
|
|
if (foundValue != baselineValues.end())
|
|
{
|
|
{
|
|
- EXPECT_FALSE(matchFound[foundValue - baselineValues.begin()]);
|
|
|
|
- matchFound[foundValue - baselineValues.begin()] = true;
|
|
|
|
|
|
+ size_t foundIndex = foundValue - baselineValues.begin();
|
|
|
|
+ EXPECT_FALSE(matchFound[foundIndex]);
|
|
|
|
+ EXPECT_EQ(baselineExistsFlags[foundIndex], comparisonExistsFlags[comparisonIndex]);
|
|
|
|
+ matchFound[foundIndex] = true;
|
|
|
|
+ if (baselineExistsFlags[foundIndex] != comparisonExistsFlags[comparisonIndex])
|
|
|
|
+ {
|
|
|
|
+ matchFound[foundIndex] = true;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -309,17 +324,19 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultPositions;
|
|
- GenerateBaselineHeightData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPositions);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineHeightData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPositions, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Process*FromList
|
|
// Gather results from Process*FromList
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
|
|
|
|
- auto listPositionCallback =
|
|
|
|
- [&comparisonResultPositions](const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
|
|
|
|
+ auto listPositionCallback = [&comparisonResultPositions, &comparisonExistsFlags]
|
|
|
|
+ (const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
AzFramework::Terrain::TerrainDataRequestBus::Broadcast(
|
|
AzFramework::Terrain::TerrainDataRequestBus::Broadcast(
|
|
@@ -327,7 +344,7 @@ namespace UnitTest::TerrainTest
|
|
queryPositions, AzFramework::Terrain::TerrainDataRequests::TerrainDataMask::Heights, listPositionCallback, sampler);
|
|
queryPositions, AzFramework::Terrain::TerrainDataRequests::TerrainDataMask::Heights, listPositionCallback, sampler);
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- ComparePositionData(baselineResultPositions, comparisonResultPositions);
|
|
|
|
|
|
+ ComparePositionData(baselineResultPositions, baselineExistsFlags, comparisonResultPositions, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|
|
@@ -344,11 +361,13 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultPositions;
|
|
- GenerateBaselineHeightData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPositions);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineHeightData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPositions, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Get*
|
|
// Gather results from Get*
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
float worldMinZ = TerrainWorldBounds.GetMin().GetZ();
|
|
float worldMinZ = TerrainWorldBounds.GetMin().GetZ();
|
|
for (auto& position : queryPositions)
|
|
for (auto& position : queryPositions)
|
|
{
|
|
{
|
|
@@ -358,11 +377,11 @@ namespace UnitTest::TerrainTest
|
|
terrainHeight, &AzFramework::Terrain::TerrainDataRequests::GetHeight, position, sampler, &terrainExists);
|
|
terrainHeight, &AzFramework::Terrain::TerrainDataRequests::GetHeight, position, sampler, &terrainExists);
|
|
|
|
|
|
comparisonResultPositions.emplace_back(position.GetX(), position.GetY(), terrainHeight);
|
|
comparisonResultPositions.emplace_back(position.GetX(), position.GetY(), terrainHeight);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
}
|
|
}
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- ComparePositionData(baselineResultPositions, comparisonResultPositions);
|
|
|
|
|
|
+ ComparePositionData(baselineResultPositions, baselineExistsFlags, comparisonResultPositions, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|
|
@@ -379,21 +398,23 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultPositions;
|
|
- GenerateBaselineHeightData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPositions);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineHeightData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPositions, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Process*FromRegionAsync
|
|
// Gather results from Process*FromRegionAsync
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
AZStd::mutex outputMutex;
|
|
AZStd::mutex outputMutex;
|
|
|
|
|
|
- auto regionPositionCallback = [&comparisonResultPositions, &outputMutex](
|
|
|
|
|
|
+ auto regionPositionCallback = [&comparisonResultPositions, &comparisonExistsFlags, &outputMutex](
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
// Make sure only one thread can add its result at a time.
|
|
// Make sure only one thread can add its result at a time.
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
auto params = CreateTestAsyncParams();
|
|
auto params = CreateTestAsyncParams();
|
|
@@ -408,7 +429,7 @@ namespace UnitTest::TerrainTest
|
|
m_queryCompletionEvent.acquire();
|
|
m_queryCompletionEvent.acquire();
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- ComparePositionData(baselineResultPositions, comparisonResultPositions);
|
|
|
|
|
|
+ ComparePositionData(baselineResultPositions, baselineExistsFlags, comparisonResultPositions, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|
|
@@ -425,20 +446,22 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultPositions;
|
|
- GenerateBaselineHeightData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPositions);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineHeightData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPositions, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Process*FromListAsync
|
|
// Gather results from Process*FromListAsync
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
AZStd::mutex outputMutex;
|
|
AZStd::mutex outputMutex;
|
|
|
|
|
|
- auto listPositionCallback = [&comparisonResultPositions, &outputMutex](
|
|
|
|
|
|
+ auto listPositionCallback = [&comparisonResultPositions, &comparisonExistsFlags, &outputMutex](
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
// Make sure only one thread can add its result at a time.
|
|
// Make sure only one thread can add its result at a time.
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
auto params = CreateTestAsyncParams();
|
|
auto params = CreateTestAsyncParams();
|
|
@@ -452,7 +475,7 @@ namespace UnitTest::TerrainTest
|
|
m_queryCompletionEvent.acquire();
|
|
m_queryCompletionEvent.acquire();
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- ComparePositionData(baselineResultPositions, comparisonResultPositions);
|
|
|
|
|
|
+ ComparePositionData(baselineResultPositions, baselineExistsFlags, comparisonResultPositions, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|
|
@@ -472,19 +495,21 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultNormals;
|
|
AZStd::vector<AZ::Vector3> baselineResultNormals;
|
|
- GenerateBaselineNormalData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultNormals);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineNormalData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultNormals, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Process*FromList
|
|
// Gather results from Process*FromList
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
AZStd::vector<AZ::Vector3> comparisonResultNormals;
|
|
AZStd::vector<AZ::Vector3> comparisonResultNormals;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
|
|
|
|
- auto listNormalCallback = [&comparisonResultPositions, &comparisonResultNormals](
|
|
|
|
|
|
+ auto listNormalCallback = [&comparisonResultPositions, &comparisonResultNormals, &comparisonExistsFlags](
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
comparisonResultNormals.emplace_back(surfacePoint.m_normal);
|
|
comparisonResultNormals.emplace_back(surfacePoint.m_normal);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
AzFramework::Terrain::TerrainDataRequestBus::Broadcast(
|
|
AzFramework::Terrain::TerrainDataRequestBus::Broadcast(
|
|
@@ -492,7 +517,8 @@ namespace UnitTest::TerrainTest
|
|
AzFramework::Terrain::TerrainDataRequests::TerrainDataMask::Normals, listNormalCallback, sampler);
|
|
AzFramework::Terrain::TerrainDataRequests::TerrainDataMask::Normals, listNormalCallback, sampler);
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- CompareNormalData(queryPositions, baselineResultNormals, comparisonResultPositions, comparisonResultNormals);
|
|
|
|
|
|
+ CompareNormalData(queryPositions, baselineResultNormals, baselineExistsFlags,
|
|
|
|
+ comparisonResultPositions, comparisonResultNormals, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|
|
@@ -509,11 +535,13 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultNormals;
|
|
AZStd::vector<AZ::Vector3> baselineResultNormals;
|
|
- GenerateBaselineNormalData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultNormals);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineNormalData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultNormals, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Get*
|
|
// Gather results from Get*
|
|
AZStd::vector<AZ::Vector3> comparisonResultNormals;
|
|
AZStd::vector<AZ::Vector3> comparisonResultNormals;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
for (auto& position : queryPositions)
|
|
for (auto& position : queryPositions)
|
|
{
|
|
{
|
|
AZ::Vector3 terrainNormal = AZ::Vector3::CreateZero();
|
|
AZ::Vector3 terrainNormal = AZ::Vector3::CreateZero();
|
|
@@ -522,11 +550,12 @@ namespace UnitTest::TerrainTest
|
|
terrainNormal, &AzFramework::Terrain::TerrainDataRequests::GetNormal, position, sampler, &terrainExists);
|
|
terrainNormal, &AzFramework::Terrain::TerrainDataRequests::GetNormal, position, sampler, &terrainExists);
|
|
|
|
|
|
comparisonResultNormals.emplace_back(terrainNormal);
|
|
comparisonResultNormals.emplace_back(terrainNormal);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
}
|
|
}
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- CompareNormalData(queryPositions, baselineResultNormals, queryPositions, comparisonResultNormals);
|
|
|
|
|
|
+ CompareNormalData(queryPositions, baselineResultNormals, baselineExistsFlags,
|
|
|
|
+ queryPositions, comparisonResultNormals, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|
|
@@ -543,15 +572,17 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultNormals;
|
|
AZStd::vector<AZ::Vector3> baselineResultNormals;
|
|
- GenerateBaselineNormalData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultNormals);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineNormalData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultNormals, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Process*FromRegionAsync
|
|
// Gather results from Process*FromRegionAsync
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
AZStd::vector<AZ::Vector3> comparisonResultNormals;
|
|
AZStd::vector<AZ::Vector3> comparisonResultNormals;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
AZStd::mutex outputMutex;
|
|
AZStd::mutex outputMutex;
|
|
|
|
|
|
- auto regionPositionCallback = [&comparisonResultPositions, &comparisonResultNormals, &outputMutex](
|
|
|
|
|
|
+ auto regionPositionCallback = [&comparisonResultPositions, &comparisonResultNormals, &comparisonExistsFlags, &outputMutex](
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
@@ -559,7 +590,7 @@ namespace UnitTest::TerrainTest
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
comparisonResultNormals.emplace_back(surfacePoint.m_normal);
|
|
comparisonResultNormals.emplace_back(surfacePoint.m_normal);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
auto params = CreateTestAsyncParams();
|
|
auto params = CreateTestAsyncParams();
|
|
@@ -574,7 +605,8 @@ namespace UnitTest::TerrainTest
|
|
m_queryCompletionEvent.acquire();
|
|
m_queryCompletionEvent.acquire();
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- CompareNormalData(queryPositions, baselineResultNormals, comparisonResultPositions, comparisonResultNormals);
|
|
|
|
|
|
+ CompareNormalData(queryPositions, baselineResultNormals, baselineExistsFlags,
|
|
|
|
+ comparisonResultPositions, comparisonResultNormals, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|
|
@@ -591,22 +623,24 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> baselineResultNormals;
|
|
AZStd::vector<AZ::Vector3> baselineResultNormals;
|
|
- GenerateBaselineNormalData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultNormals);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineNormalData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultNormals, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Process*FromListAsync
|
|
// Gather results from Process*FromListAsync
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
AZStd::vector<AZ::Vector3> comparisonResultPositions;
|
|
AZStd::vector<AZ::Vector3> comparisonResultNormals;
|
|
AZStd::vector<AZ::Vector3> comparisonResultNormals;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
AZStd::mutex outputMutex;
|
|
AZStd::mutex outputMutex;
|
|
|
|
|
|
- auto listPositionCallback = [&comparisonResultPositions, &comparisonResultNormals, &outputMutex](
|
|
|
|
|
|
+ auto listPositionCallback = [&comparisonResultPositions, &comparisonResultNormals, &comparisonExistsFlags, &outputMutex](
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
// Make sure only one thread can add its result at a time.
|
|
// Make sure only one thread can add its result at a time.
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
comparisonResultPositions.emplace_back(surfacePoint.m_position);
|
|
comparisonResultNormals.emplace_back(surfacePoint.m_normal);
|
|
comparisonResultNormals.emplace_back(surfacePoint.m_normal);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
auto params = CreateTestAsyncParams();
|
|
auto params = CreateTestAsyncParams();
|
|
@@ -620,7 +654,8 @@ namespace UnitTest::TerrainTest
|
|
m_queryCompletionEvent.acquire();
|
|
m_queryCompletionEvent.acquire();
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- CompareNormalData(queryPositions, baselineResultNormals, comparisonResultPositions, comparisonResultNormals);
|
|
|
|
|
|
+ CompareNormalData(queryPositions, baselineResultNormals, baselineExistsFlags,
|
|
|
|
+ comparisonResultPositions, comparisonResultNormals, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|
|
@@ -807,17 +842,20 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> baselineResultPoints;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> baselineResultPoints;
|
|
- GenerateBaselineSurfacePointData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPoints);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineSurfacePointData(
|
|
|
|
+ QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPoints, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Process*FromList
|
|
// Gather results from Process*FromList
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> comparisonResultPoints;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> comparisonResultPoints;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
|
|
|
|
- auto listPositionCallback = [&comparisonResultPoints](
|
|
|
|
|
|
+ auto listPositionCallback = [&comparisonResultPoints, &comparisonExistsFlags](
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
comparisonResultPoints.emplace_back(surfacePoint);
|
|
comparisonResultPoints.emplace_back(surfacePoint);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
AzFramework::Terrain::TerrainDataRequestBus::Broadcast(
|
|
AzFramework::Terrain::TerrainDataRequestBus::Broadcast(
|
|
@@ -825,7 +863,7 @@ namespace UnitTest::TerrainTest
|
|
AzFramework::Terrain::TerrainDataRequests::TerrainDataMask::All, listPositionCallback, sampler);
|
|
AzFramework::Terrain::TerrainDataRequests::TerrainDataMask::All, listPositionCallback, sampler);
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- CompareSurfacePointData(baselineResultPoints, comparisonResultPoints);
|
|
|
|
|
|
+ CompareSurfacePointData(baselineResultPoints, baselineExistsFlags, comparisonResultPoints, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|
|
@@ -842,11 +880,14 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> baselineResultPoints;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> baselineResultPoints;
|
|
- GenerateBaselineSurfacePointData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPoints);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineSurfacePointData(
|
|
|
|
+ QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPoints, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Get*
|
|
// Gather results from Get*
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> comparisonResultPoints;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> comparisonResultPoints;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
AzFramework::SurfaceData::SurfacePoint surfacePoint;
|
|
AzFramework::SurfaceData::SurfacePoint surfacePoint;
|
|
for (auto& position : queryPositions)
|
|
for (auto& position : queryPositions)
|
|
{
|
|
{
|
|
@@ -855,11 +896,11 @@ namespace UnitTest::TerrainTest
|
|
&AzFramework::Terrain::TerrainDataRequests::GetSurfacePoint, position, surfacePoint, sampler, &terrainExists);
|
|
&AzFramework::Terrain::TerrainDataRequests::GetSurfacePoint, position, surfacePoint, sampler, &terrainExists);
|
|
|
|
|
|
comparisonResultPoints.emplace_back(surfacePoint);
|
|
comparisonResultPoints.emplace_back(surfacePoint);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
}
|
|
}
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- CompareSurfacePointData(baselineResultPoints, comparisonResultPoints);
|
|
|
|
|
|
+ CompareSurfacePointData(baselineResultPoints, baselineExistsFlags, comparisonResultPoints, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|
|
@@ -876,21 +917,24 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> baselineResultPoints;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> baselineResultPoints;
|
|
- GenerateBaselineSurfacePointData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPoints);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineSurfacePointData(
|
|
|
|
+ QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPoints, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Process*FromRegionAsync
|
|
// Gather results from Process*FromRegionAsync
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> comparisonResultPoints;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> comparisonResultPoints;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
AZStd::mutex outputMutex;
|
|
AZStd::mutex outputMutex;
|
|
|
|
|
|
- auto regionPositionCallback = [&comparisonResultPoints, &outputMutex](
|
|
|
|
|
|
+ auto regionPositionCallback = [&comparisonResultPoints, &comparisonExistsFlags, &outputMutex](
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
[[maybe_unused]] size_t xIndex, [[maybe_unused]] size_t yIndex,
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
// Make sure only one thread can add its result at a time.
|
|
// Make sure only one thread can add its result at a time.
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
comparisonResultPoints.emplace_back(surfacePoint);
|
|
comparisonResultPoints.emplace_back(surfacePoint);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
auto params = CreateTestAsyncParams();
|
|
auto params = CreateTestAsyncParams();
|
|
@@ -905,7 +949,7 @@ namespace UnitTest::TerrainTest
|
|
m_queryCompletionEvent.acquire();
|
|
m_queryCompletionEvent.acquire();
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- CompareSurfacePointData(baselineResultPoints, comparisonResultPoints);
|
|
|
|
|
|
+ CompareSurfacePointData(baselineResultPoints, baselineExistsFlags, comparisonResultPoints, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|
|
@@ -922,20 +966,23 @@ namespace UnitTest::TerrainTest
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
// Gather all our initial results from calling Process*FromRegion
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AZ::Vector3> queryPositions;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> baselineResultPoints;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> baselineResultPoints;
|
|
- GenerateBaselineSurfacePointData(QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPoints);
|
|
|
|
|
|
+ AZStd::vector<bool> baselineExistsFlags;
|
|
|
|
+ GenerateBaselineSurfacePointData(
|
|
|
|
+ QueryBounds, QueryStepSize, sampler, queryPositions, baselineResultPoints, baselineExistsFlags);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
ASSERT_EQ(queryPositions.size(), ExpectedResultCount);
|
|
|
|
|
|
// Gather results from Process*FromListAsync
|
|
// Gather results from Process*FromListAsync
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> comparisonResultPoints;
|
|
AZStd::vector<AzFramework::SurfaceData::SurfacePoint> comparisonResultPoints;
|
|
|
|
+ AZStd::vector<bool> comparisonExistsFlags;
|
|
AZStd::mutex outputMutex;
|
|
AZStd::mutex outputMutex;
|
|
|
|
|
|
- auto listPositionCallback = [&comparisonResultPoints, &outputMutex](
|
|
|
|
|
|
+ auto listPositionCallback = [&comparisonResultPoints, &comparisonExistsFlags, &outputMutex](
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
const AzFramework::SurfaceData::SurfacePoint& surfacePoint, bool terrainExists)
|
|
{
|
|
{
|
|
// Make sure only one thread can add its result at a time.
|
|
// Make sure only one thread can add its result at a time.
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
AZStd::scoped_lock lock(outputMutex);
|
|
comparisonResultPoints.emplace_back(surfacePoint);
|
|
comparisonResultPoints.emplace_back(surfacePoint);
|
|
- EXPECT_TRUE(terrainExists);
|
|
|
|
|
|
+ comparisonExistsFlags.emplace_back(terrainExists);
|
|
};
|
|
};
|
|
|
|
|
|
auto params = CreateTestAsyncParams();
|
|
auto params = CreateTestAsyncParams();
|
|
@@ -948,7 +995,7 @@ namespace UnitTest::TerrainTest
|
|
m_queryCompletionEvent.acquire();
|
|
m_queryCompletionEvent.acquire();
|
|
|
|
|
|
// Compare the results
|
|
// Compare the results
|
|
- CompareSurfacePointData(baselineResultPoints, comparisonResultPoints);
|
|
|
|
|
|
+ CompareSurfacePointData(baselineResultPoints, baselineExistsFlags, comparisonResultPoints, comparisonExistsFlags);
|
|
}
|
|
}
|
|
|
|
|
|
DestroyTestTerrainSystem();
|
|
DestroyTestTerrainSystem();
|