Merge branch 'development' into cmake/SPEC-2513_w4267
This commit is contained in:
@@ -307,6 +307,30 @@ namespace AZ
|
||||
m_meshFeatureProcessor = nullptr;
|
||||
m_skinnedMeshFeatureProcessor = nullptr;
|
||||
}
|
||||
|
||||
RPI::ModelMaterialSlotMap AtomActorInstance::GetModelMaterialSlots() const
|
||||
{
|
||||
Data::Asset<const RPI::ModelAsset> modelAsset = GetModelAsset();
|
||||
if (modelAsset.IsReady())
|
||||
{
|
||||
return modelAsset->GetMaterialSlots();
|
||||
}
|
||||
else
|
||||
{
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
MaterialAssignmentId AtomActorInstance::FindMaterialAssignmentId(
|
||||
const MaterialAssignmentLodIndex lod, const AZStd::string& label) const
|
||||
{
|
||||
if (m_skinnedMeshInstance && m_skinnedMeshInstance->m_model)
|
||||
{
|
||||
return FindMaterialAssignmentIdInModel(m_skinnedMeshInstance->m_model, lod, label);
|
||||
}
|
||||
|
||||
return MaterialAssignmentId();
|
||||
}
|
||||
|
||||
MaterialAssignmentMap AtomActorInstance::GetMaterialAssignments() const
|
||||
{
|
||||
@@ -490,16 +514,18 @@ namespace AZ
|
||||
const AZStd::vector< SkinnedSubMeshProperties>& subMeshProperties = inputLod.GetSubMeshProperties();
|
||||
for (const SkinnedSubMeshProperties& submesh : subMeshProperties)
|
||||
{
|
||||
AZ_Error("AtomActorInstance", submesh.m_material, "Actor does not have a valid default material in lod %d", lodIndex);
|
||||
if (submesh.m_material)
|
||||
Data::Asset<RPI::MaterialAsset> materialAsset = submesh.m_materialSlot.m_defaultMaterialAsset;
|
||||
AZ_Error("AtomActorInstance", materialAsset, "Actor does not have a valid default material in lod %d", lodIndex);
|
||||
|
||||
if (materialAsset)
|
||||
{
|
||||
if (!submesh.m_material->IsReady())
|
||||
if (!materialAsset->IsReady())
|
||||
{
|
||||
// Start listening for the material's OnAssetReady event.
|
||||
// AtomActorInstance::Create is called on the main thread, so there should be no need to synchronize with the OnAssetReady event handler
|
||||
// since those events will also come from the main thread
|
||||
m_waitForMaterialLoadIds.insert(submesh.m_material->GetId());
|
||||
Data::AssetBus::MultiHandler::BusConnect(submesh.m_material->GetId());
|
||||
m_waitForMaterialLoadIds.insert(materialAsset->GetId());
|
||||
Data::AssetBus::MultiHandler::BusConnect(materialAsset->GetId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user