Merge pull request #7171 from aws-lumberyard-dev/TerrainMaterialsFix
LYN-7637 Allow Terrain Physics Collider to assign a default physics material
This commit is contained in:
@@ -72,8 +72,9 @@ namespace Terrain
|
||||
if (auto serialize = azrtti_cast<AZ::SerializeContext*>(context))
|
||||
{
|
||||
serialize->Class<TerrainPhysicsColliderConfig, AZ::ComponentConfig>()
|
||||
->Version(2)->Field(
|
||||
"Mappings", &TerrainPhysicsColliderConfig::m_surfaceMaterialMappings)
|
||||
->Version(3)
|
||||
->Field("DefaultMaterial", &TerrainPhysicsColliderConfig::m_defaultMaterialSelection)
|
||||
->Field("Mappings", &TerrainPhysicsColliderConfig::m_surfaceMaterialMappings)
|
||||
;
|
||||
|
||||
if (auto edit = serialize->GetEditContext())
|
||||
@@ -84,6 +85,8 @@ namespace Terrain
|
||||
->ClassElement(AZ::Edit::ClassElements::EditorData, "")
|
||||
->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly)
|
||||
->Attribute(AZ::Edit::Attributes::AutoExpand, true)
|
||||
->DataElement(AZ::Edit::UIHandlers::Default, &TerrainPhysicsColliderConfig::m_defaultMaterialSelection,
|
||||
"Default Surface Physics Material", "Select a material to be used by unmapped surfaces by default")
|
||||
->DataElement(
|
||||
AZ::Edit::UIHandlers::Default, &TerrainPhysicsColliderConfig::m_surfaceMaterialMappings,
|
||||
"Surface to Material Mappings", "Maps surfaces to physics materials")
|
||||
@@ -321,7 +324,7 @@ namespace Terrain
|
||||
}
|
||||
|
||||
// If this surface isn't mapped, use the default material.
|
||||
return Physics::MaterialId();
|
||||
return m_configuration.m_defaultMaterialSelection.GetMaterialId();
|
||||
}
|
||||
|
||||
void TerrainPhysicsColliderComponent::GenerateHeightsAndMaterialsInBounds(
|
||||
@@ -419,7 +422,7 @@ namespace Terrain
|
||||
AZStd::vector<Physics::MaterialId> materialList;
|
||||
|
||||
// Ensure the list contains the default material as the first entry.
|
||||
materialList.emplace_back(Physics::MaterialId());
|
||||
materialList.emplace_back(m_configuration.m_defaultMaterialSelection.GetMaterialId());
|
||||
|
||||
for (auto& mapping : m_configuration.m_surfaceMaterialMappings)
|
||||
{
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace Terrain
|
||||
AZ_CLASS_ALLOCATOR(TerrainPhysicsColliderConfig, AZ::SystemAllocator, 0);
|
||||
AZ_RTTI(TerrainPhysicsColliderConfig, "{E9EADB8F-C3A5-4B9C-A62D-2DBC86B4CE59}", AZ::ComponentConfig);
|
||||
static void Reflect(AZ::ReflectContext* context);
|
||||
|
||||
Physics::MaterialSelection m_defaultMaterialSelection;
|
||||
AZStd::vector<TerrainPhysicsSurfaceMaterialMapping> m_surfaceMaterialMappings;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user