diff --git a/include/Engine/Core/ResourceManager.h b/include/Engine/Core/ResourceManager.h index d408f5af..86ed6254 100644 --- a/include/Engine/Core/ResourceManager.h +++ b/include/Engine/Core/ResourceManager.h @@ -81,6 +81,8 @@ public: @param resourceName Fully qualified name of the resource to reload. */ static void Reload(std::string resourceName); + + static void Release(std::string resourceType, std::string resourceName); static void Update(); diff --git a/src/Engine/Core/ResourceManager.cpp b/src/Engine/Core/ResourceManager.cpp index 325bfab8..81823dbf 100644 --- a/src/Engine/Core/ResourceManager.cpp +++ b/src/Engine/Core/ResourceManager.cpp @@ -35,6 +35,20 @@ void ResourceManager::Reload(std::string resourceName) } } + +void ResourceManager::Release(std::string resourceType, std::string resourceName) +{ + auto key = std::make_pair(resourceType, resourceName); + if (m_ResourceCache.find(key) == m_ResourceCache.end()) { + return; + } + auto resource = m_ResourceCache.at(key); + m_ResourceCache.erase(key); + m_ResourceFromName.erase(resourceName); + m_ResourceParents.erase(resource); + delete resource; +} + unsigned int ResourceManager::GetNewResourceID(unsigned int typeID) { return m_ResourceCount[typeID]++;