Merge pull request #6163 from aws-lumberyard-dev/terrain/sphrose/SurfaceDataConstants
LYN-7056 SurfaceDataConstants should be revised to have no terrain references
This commit is contained in:
@@ -9,25 +9,14 @@
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/Math/Crc.h>
|
||||
#include <AzFramework/Terrain/TerrainDataRequestBus.h>
|
||||
#include <AzFramework/SurfaceData/SurfaceData.h>
|
||||
|
||||
namespace SurfaceData
|
||||
{
|
||||
namespace Constants
|
||||
{
|
||||
static const char* s_unassignedTagName = AzFramework::SurfaceData::Constants::s_unassignedTagName;
|
||||
static const char* s_terrainHoleTagName = "terrainHole";
|
||||
static const char* s_terrainTagName = "terrain";
|
||||
|
||||
static const AZ::Crc32 s_unassignedTagCrc = AZ::Crc32(s_unassignedTagName);
|
||||
static const AZ::Crc32 s_terrainHoleTagCrc = AZ::Crc32(s_terrainHoleTagName);
|
||||
static const AZ::Crc32 s_terrainTagCrc = AZ::Crc32(s_terrainTagName);
|
||||
|
||||
static const char* s_allTagNames[] =
|
||||
{
|
||||
s_unassignedTagName,
|
||||
s_terrainHoleTagName,
|
||||
s_terrainTagName,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
#include <AzFramework/Asset/GenericAssetHandler.h>
|
||||
#include <AzToolsFramework/UI/PropertyEditor/PropertyEditorAPI.h>
|
||||
|
||||
|
||||
namespace SurfaceData
|
||||
{
|
||||
namespace Details
|
||||
@@ -124,10 +123,7 @@ namespace SurfaceData
|
||||
|
||||
void EditorSurfaceDataSystemComponent::GetRegisteredSurfaceTagNames(SurfaceTagNameSet& masks) const
|
||||
{
|
||||
for (const auto& tagName : Constants::s_allTagNames)
|
||||
{
|
||||
masks.insert(tagName);
|
||||
}
|
||||
masks.insert(Constants::s_unassignedTagName);
|
||||
|
||||
for (const auto& assetPair : m_surfaceTagNameAssets)
|
||||
{
|
||||
|
||||
@@ -47,7 +47,6 @@ namespace SurfaceData
|
||||
static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
|
||||
|
||||
private:
|
||||
|
||||
void LoadAsset(const AZ::Data::AssetId& assetId);
|
||||
void AddAsset(AZ::Data::Asset<AZ::Data::AssetData>& asset);
|
||||
|
||||
|
||||
@@ -281,15 +281,17 @@ public:
|
||||
|
||||
TEST_F(SurfaceDataTestApp, SurfaceData_TestRegisteredTags)
|
||||
{
|
||||
// Check that only the unassigned tag exists if no other providers are registered.
|
||||
AZStd::vector<AZStd::pair<AZ::u32, AZStd::string>> registeredTags = SurfaceData::SurfaceTag::GetRegisteredTags();
|
||||
|
||||
for (const auto& searchTerm : SurfaceData::Constants::s_allTagNames)
|
||||
{
|
||||
ASSERT_TRUE(AZStd::find_if(registeredTags.begin(), registeredTags.end(), [searchTerm](decltype(registeredTags)::value_type pair)
|
||||
const auto& searchTerm = SurfaceData::Constants::s_unassignedTagName;
|
||||
|
||||
ASSERT_TRUE(AZStd::find_if(
|
||||
registeredTags.begin(), registeredTags.end(),
|
||||
[=](decltype(registeredTags)::value_type pair)
|
||||
{
|
||||
return pair.second == searchTerm;
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
#if AZ_TRAIT_DISABLE_FAILED_SURFACE_DATA_TESTS
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* 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
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/Math/Crc.h>
|
||||
#include <AzFramework/SurfaceData/SurfaceData.h>
|
||||
|
||||
namespace Terrain
|
||||
{
|
||||
namespace Constants
|
||||
{
|
||||
static const char* s_terrainHoleTagName = "terrainHole";
|
||||
static const char* s_terrainTagName = "terrain";
|
||||
|
||||
static const AZ::Crc32 s_terrainHoleTagCrc = AZ::Crc32(s_terrainHoleTagName);
|
||||
static const AZ::Crc32 s_terrainTagCrc = AZ::Crc32(s_terrainTagName);
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@
|
||||
*/
|
||||
|
||||
#include <Components/TerrainSurfaceDataSystemComponent.h>
|
||||
#include <Terrain/TerrainDataConstants.h>
|
||||
#include <AzCore/Debug/Profiler.h>
|
||||
#include <AzCore/Math/MathUtils.h>
|
||||
#include <AzCore/Serialization/EditContext.h>
|
||||
@@ -14,6 +15,7 @@
|
||||
#include <SurfaceData/SurfaceDataSystemRequestBus.h>
|
||||
#include <SurfaceData/SurfaceTag.h>
|
||||
#include <SurfaceData/Utility/SurfaceDataUtility.h>
|
||||
#include <SurfaceData/SurfaceDataTagProviderRequestBus.h>
|
||||
|
||||
namespace Terrain
|
||||
{
|
||||
@@ -96,6 +98,7 @@ namespace Terrain
|
||||
{
|
||||
m_providerHandle = SurfaceData::InvalidSurfaceDataRegistryHandle;
|
||||
AzFramework::Terrain::TerrainDataNotificationBus::Handler::BusConnect();
|
||||
SurfaceData::SurfaceDataTagProviderRequestBus::Handler::BusConnect();
|
||||
|
||||
UpdateTerrainData(AZ::Aabb::CreateNull());
|
||||
}
|
||||
@@ -110,6 +113,7 @@ namespace Terrain
|
||||
}
|
||||
|
||||
SurfaceData::SurfaceDataProviderRequestBus::Handler::BusDisconnect();
|
||||
SurfaceData::SurfaceDataTagProviderRequestBus::Handler::BusDisconnect();
|
||||
AzFramework::Terrain::TerrainDataNotificationBus::Handler::BusDisconnect();
|
||||
|
||||
// Clear the cached terrain bounds data
|
||||
@@ -162,8 +166,7 @@ namespace Terrain
|
||||
point.m_normal = terrainSurfacePoint.m_normal;
|
||||
|
||||
// Always add a "terrain" or "terrainHole" tag.
|
||||
const AZ::Crc32 terrainTag =
|
||||
isHole ? SurfaceData::Constants::s_terrainHoleTagCrc : SurfaceData::Constants::s_terrainTagCrc;
|
||||
const AZ::Crc32 terrainTag = isHole ? Constants::s_terrainHoleTagCrc : Constants::s_terrainTagCrc;
|
||||
SurfaceData::AddMaxValueForMasks(point.m_masks, terrainTag, 1.0f);
|
||||
|
||||
// Add all of the surface tags that the terrain has at this point.
|
||||
@@ -189,8 +192,8 @@ namespace Terrain
|
||||
SurfaceData::SurfaceTagVector TerrainSurfaceDataSystemComponent::GetSurfaceTags() const
|
||||
{
|
||||
SurfaceData::SurfaceTagVector tags;
|
||||
tags.push_back(SurfaceData::Constants::s_terrainHoleTagCrc);
|
||||
tags.push_back(SurfaceData::Constants::s_terrainTagCrc);
|
||||
tags.push_back(Constants::s_terrainHoleTagCrc);
|
||||
tags.push_back(Constants::s_terrainTagCrc);
|
||||
return tags;
|
||||
}
|
||||
|
||||
@@ -248,8 +251,6 @@ namespace Terrain
|
||||
SurfaceData::SurfaceDataSystemRequestBus::Broadcast(
|
||||
&SurfaceData::SurfaceDataSystemRequestBus::Events::UnregisterSurfaceDataProvider, m_providerHandle);
|
||||
m_providerHandle = SurfaceData::InvalidSurfaceDataRegistryHandle;
|
||||
|
||||
SurfaceData::SurfaceDataProviderRequestBus::Handler::BusDisconnect();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -263,4 +264,10 @@ namespace Terrain
|
||||
{
|
||||
UpdateTerrainData(dirtyRegion);
|
||||
}
|
||||
|
||||
void TerrainSurfaceDataSystemComponent::GetRegisteredSurfaceTagNames(SurfaceData::SurfaceTagNameSet& names) const
|
||||
{
|
||||
names.insert(Constants::s_terrainHoleTagName);
|
||||
names.insert(Constants::s_terrainTagName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <AzFramework/Terrain/TerrainDataRequestBus.h>
|
||||
#include <SurfaceData/SurfaceDataModifierRequestBus.h>
|
||||
#include <SurfaceData/SurfaceDataProviderRequestBus.h>
|
||||
#include <SurfaceData/SurfaceDataTagProviderRequestBus.h>
|
||||
|
||||
namespace Terrain
|
||||
{
|
||||
@@ -32,6 +33,7 @@ namespace Terrain
|
||||
: public AZ::Component
|
||||
, private SurfaceData::SurfaceDataProviderRequestBus::Handler
|
||||
, private AzFramework::Terrain::TerrainDataNotificationBus::Handler
|
||||
, private SurfaceData::SurfaceDataTagProviderRequestBus::Handler
|
||||
{
|
||||
friend class EditorTerrainSurfaceDataSystemComponent;
|
||||
TerrainSurfaceDataSystemComponent(const TerrainSurfaceDataSystemConfig&);
|
||||
@@ -72,5 +74,9 @@ namespace Terrain
|
||||
|
||||
AZ::Aabb m_terrainBounds = AZ::Aabb::CreateNull();
|
||||
AZStd::atomic_bool m_terrainBoundsIsValid{ false };
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// SurfaceData::SurfaceDataTagProviderRequestBus
|
||||
void GetRegisteredSurfaceTagNames(SurfaceData::SurfaceTagNameSet& names) const override;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
set(FILES
|
||||
Include/Terrain/Ebuses/TerrainAreaSurfaceRequestBus.h
|
||||
Include/Terrain/TerrainDataConstants.h
|
||||
Source/Components/TerrainHeightGradientListComponent.cpp
|
||||
Source/Components/TerrainHeightGradientListComponent.h
|
||||
Source/Components/TerrainLayerSpawnerComponent.cpp
|
||||
|
||||
@@ -108,7 +108,7 @@ namespace UnitTest
|
||||
Vegetation::SurfaceMaskDepthFilterConfig config;
|
||||
config.m_lowerDistance = -1000.0f;
|
||||
config.m_upperDistance = -0.5f;
|
||||
config.m_depthComparisonTags.push_back(SurfaceData::Constants::s_terrainTagCrc);
|
||||
config.m_depthComparisonTags.push_back(SurfaceData::Constants::s_unassignedTagCrc);
|
||||
|
||||
Vegetation::SurfaceMaskDepthFilterComponent* component = nullptr;
|
||||
auto entity = CreateEntity(config, &component, [](AZ::Entity* e)
|
||||
@@ -120,7 +120,7 @@ namespace UnitTest
|
||||
mockSurfaceHandler.m_outPosition = AZ::Vector3::CreateZero();
|
||||
mockSurfaceHandler.m_outNormal = AZ::Vector3::CreateAxisZ();
|
||||
mockSurfaceHandler.m_outMasks.clear();
|
||||
mockSurfaceHandler.m_outMasks[SurfaceData::Constants::s_terrainTagCrc] = 1.0f;
|
||||
mockSurfaceHandler.m_outMasks[SurfaceData::Constants::s_unassignedTagCrc] = 1.0f;
|
||||
|
||||
// passes
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user