32 lines
691 B
C++
32 lines
691 B
C++
|
|
#ifndef CMODELMANAGER_HPP
|
||
|
|
#define CMODELMANAGER_HPP
|
||
|
|
|
||
|
|
#include "CModel.hpp"
|
||
|
|
#include <list>
|
||
|
|
#include <memory>
|
||
|
|
class CModelManager
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
std::list<std::unique_ptr<CModel>> loadedModel;
|
||
|
|
std::unordered_map<std::string, CModel*> modelsMap;
|
||
|
|
|
||
|
|
void addModel(std::string name, std::unique_ptr<CModel>&& model)
|
||
|
|
{
|
||
|
|
loadedModel.push_back(std::move(model));
|
||
|
|
modelsMap[name] = loadedModel.back().get();
|
||
|
|
}
|
||
|
|
std::optional<CModel*> get(std::string name)
|
||
|
|
{
|
||
|
|
auto find = modelsMap.find(name);
|
||
|
|
if(find != modelsMap.end())
|
||
|
|
{
|
||
|
|
return find->second;
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
return nullptr;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
};
|
||
|
|
|
||
|
|
#endif
|