Added a version converter for MaterialAssignmentId. This allowed me to successfully load the Sponza level in AtomTest.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
This commit is contained in:
@@ -31,6 +31,7 @@ namespace AZ
|
||||
AZ_RTTI(AZ::Render::MaterialAssignmentId, "{EB603581-4654-4C17-B6DE-AE61E79EDA97}");
|
||||
AZ_CLASS_ALLOCATOR(AZ::Render::MaterialAssignmentId, SystemAllocator, 0);
|
||||
static void Reflect(ReflectContext* context);
|
||||
static bool ConvertVersion(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement);
|
||||
|
||||
MaterialAssignmentId() = default;
|
||||
|
||||
|
||||
@@ -14,12 +14,37 @@ namespace AZ
|
||||
{
|
||||
namespace Render
|
||||
{
|
||||
bool MaterialAssignmentId::ConvertVersion(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement)
|
||||
{
|
||||
if (classElement.GetVersion() < 2)
|
||||
{
|
||||
constexpr AZ::u32 materialAssetIdCrc = AZ_CRC("materialAssetId");
|
||||
|
||||
AZ::Data::AssetId materialAssetId;
|
||||
if (!classElement.GetChildData(materialAssetIdCrc, materialAssetId))
|
||||
{
|
||||
AZ_Error("AZ::Render::MaterialAssignmentId::ConvertVersion", false, "Failed to get AssetId element");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!classElement.RemoveElementByName(materialAssetIdCrc))
|
||||
{
|
||||
AZ_Error("AZ::Render::MaterialAssignmentId::ConvertVersion", false, "Failed to remove deprecated element materialAssetId");
|
||||
// No need to early-return, the object will still load successfully, it will just report more errors about the unrecognized element.
|
||||
}
|
||||
|
||||
classElement.AddElementWithData(context, "materialSlotStableId", materialAssetId.m_subId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void MaterialAssignmentId::Reflect(ReflectContext* context)
|
||||
{
|
||||
if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
|
||||
{
|
||||
serializeContext->Class<MaterialAssignmentId>()
|
||||
->Version(2)
|
||||
->Version(2, &MaterialAssignmentId::ConvertVersion)
|
||||
->Field("lodIndex", &MaterialAssignmentId::m_lodIndex)
|
||||
->Field("materialSlotStableId", &MaterialAssignmentId::m_materialSlotStableId)
|
||||
;
|
||||
|
||||
+1
-1
@@ -80,7 +80,7 @@ namespace AZ
|
||||
if (AZ::SerializeContext* serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
|
||||
{
|
||||
serializeContext->Class<EditorMaterialComponentSlot>()
|
||||
->Version(5, &EditorMaterialComponentSlot::ConvertVersion)
|
||||
->Version(6, &EditorMaterialComponentSlot::ConvertVersion)
|
||||
->Field("id", &EditorMaterialComponentSlot::m_id)
|
||||
->Field("materialAsset", &EditorMaterialComponentSlot::m_materialAsset)
|
||||
->Field("defaultMaterialAsset", &EditorMaterialComponentSlot::m_defaultMaterialAsset)
|
||||
|
||||
Reference in New Issue
Block a user