diff --git a/src/Engine/Core/ResourceManager.cpp b/src/Engine/Core/ResourceManager.cpp index 81823dbf..62a60f14 100644 --- a/src/Engine/Core/ResourceManager.cpp +++ b/src/Engine/Core/ResourceManager.cpp @@ -100,7 +100,7 @@ Resource* ResourceManager::Load(std::string resourceType, std::string resourceNa LOG_WARNING("Hot-loading resource \"%s\"", resourceName.c_str()); } - return CreateResource(resourceType, resourceName, parent); + return CreateResource(resourceType, resourceName, parent); } Resource* ResourceManager::CreateResource(std::string resourceType, std::string resourceName, Resource* parent) @@ -112,10 +112,16 @@ Resource* ResourceManager::CreateResource(std::string resourceType, std::string } // Call the factory function - Resource* resource = facIt->second(resourceName); - // Store IDs - resource->TypeID = GetTypeID(resourceType); - resource->ResourceID = GetNewResourceID(resource->TypeID); + Resource* resource; + try { + resource = facIt->second(resourceName); + // Store IDs + resource->TypeID = GetTypeID(resourceType); + resource->ResourceID = GetNewResourceID(resource->TypeID); + } catch (const std::exception& e) { + resource = nullptr; + LOG_ERROR("Failed to load resource \"%s\" of type \"%s\": %s", resourceName.c_str(), resourceType.c_str(), e.what()); + } // Cache m_ResourceCache[std::make_pair(resourceType, resourceName)] = resource; m_ResourceFromName[resourceName] = resource; diff --git a/src/Engine/Rendering/RawModel.cpp b/src/Engine/Rendering/RawModel.cpp index 962c278f..5aec7f22 100644 --- a/src/Engine/Rendering/RawModel.cpp +++ b/src/Engine/Rendering/RawModel.cpp @@ -8,7 +8,7 @@ RawModel::RawModel(std::string fileName) if (scene == nullptr) { LOG_ERROR("Failed to load model \"%s\"", fileName.c_str()); LOG_ERROR("Assimp error: %s", importer.GetErrorString()); - return; + throw std::runtime_error("Failed to open model file."); } auto m = scene->mRootNode->mTransformation; diff --git a/src/Engine/Rendering/RenderQueueFactory.cpp b/src/Engine/Rendering/RenderQueueFactory.cpp index 4b82647c..163a1f86 100644 --- a/src/Engine/Rendering/RenderQueueFactory.cpp +++ b/src/Engine/Rendering/RenderQueueFactory.cpp @@ -77,6 +77,9 @@ void RenderQueueFactory::FillModels(World* world, RenderQueue* renderQueue) } glm::vec4 color = modelC["Color"]; Model* model = ResourceManager::Load(resource); + if (model == nullptr) { + model = ResourceManager::Load("Models/Core/Error.obj"); + } for (auto texGroup : model->TextureGroups) { ModelJob job;