Program Listing for File ResourceManager.hpp
↰ Return to documentation for file (engine/include/Cacao/ResourceManager.hpp
)
#pragma once
#include "DllHelper.hpp"
#include "Resource.hpp"
#include "Cubemap.hpp"
#include "Mesh.hpp"
#include "Model.hpp"
#include "Sound.hpp"
#include "Tex2D.hpp"
#include <memory>
namespace Cacao {
class CACAO_API ResourceManager {
public:
static ResourceManager& Get();
ResourceManager(const ResourceManager&) = delete;
ResourceManager(ResourceManager&&) = delete;
ResourceManager& operator=(const ResourceManager&) = delete;
ResourceManager& operator=(ResourceManager&&) = delete;
template<typename T>
requires std::is_base_of_v<Resource, T> && (!std::is_same_v<BlobResource, T>)
std::shared_ptr<T> Load(const std::string& address) = delete;
struct Impl;
private:
std::unique_ptr<Impl> impl;
friend class ImplAccessor;
ResourceManager();
~ResourceManager();
};
//Allowed Load specializations
template<>
std::shared_ptr<Cubemap> ResourceManager::Load<Cubemap>(const std::string&);
template<>
std::shared_ptr<Mesh> ResourceManager::Load<Mesh>(const std::string&);
template<>
std::shared_ptr<Model> ResourceManager::Load<Model>(const std::string&);
template<>
std::shared_ptr<Sound> ResourceManager::Load<Sound>(const std::string&);
template<>
std::shared_ptr<Tex2D> ResourceManager::Load<Tex2D>(const std::string&);
}