Add Nahida model import and preview pipeline
This commit is contained in:
@@ -193,6 +193,32 @@ void MeshRendererComponent::SetMaterialPath(size_t index, const std::string& mat
|
||||
}
|
||||
}
|
||||
|
||||
void MeshRendererComponent::SetMaterialAssetRef(size_t index, const Resources::AssetRef& materialRef) {
|
||||
EnsureMaterialSlot(index);
|
||||
m_pendingMaterialLoads[index].reset();
|
||||
m_asyncMaterialLoadRequested[index] = false;
|
||||
m_materials[index].Reset();
|
||||
m_materialPaths[index].clear();
|
||||
m_materialRefs[index] = materialRef;
|
||||
if (!m_materialRefs[index].IsValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Containers::String resolvedPath;
|
||||
if (Resources::ResourceManager::Get().TryResolveAssetPath(m_materialRefs[index], resolvedPath)) {
|
||||
m_materialPaths[index] = ToStdString(resolvedPath);
|
||||
}
|
||||
|
||||
if (Resources::ResourceManager::Get().IsDeferredSceneLoadEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_materials[index] = Resources::ResourceManager::Get().Load<Resources::Material>(m_materialRefs[index]);
|
||||
if (m_materials[index].Get() != nullptr && m_materialPaths[index].empty()) {
|
||||
m_materialPaths[index] = MaterialPathFromHandle(m_materials[index]);
|
||||
}
|
||||
}
|
||||
|
||||
void MeshRendererComponent::SetMaterial(size_t index, const Resources::ResourceHandle<Resources::Material>& material) {
|
||||
EnsureMaterialSlot(index);
|
||||
m_pendingMaterialLoads[index].reset();
|
||||
@@ -445,7 +471,8 @@ void MeshRendererComponent::ResolvePendingMaterials() {
|
||||
}
|
||||
|
||||
m_materialPaths[index] = MaterialPathFromHandle(m_materials[index]);
|
||||
if (!Resources::ResourceManager::Get().TryGetAssetRef(m_materialPaths[index].c_str(),
|
||||
if (!m_materialRefs[index].IsValid() &&
|
||||
!Resources::ResourceManager::Get().TryGetAssetRef(m_materialPaths[index].c_str(),
|
||||
Resources::ResourceType::Material,
|
||||
m_materialRefs[index])) {
|
||||
m_materialRefs[index].Reset();
|
||||
|
||||
Reference in New Issue
Block a user