#ifndef _gpuCacheMaterialBakers_h_
#define _gpuCacheMaterialBakers_h_
#include "gpuCacheMaterial.h"
#include <memory>
#include <unordered_map>
namespace GPUCache {
class MaterialBaker
{
public:
MaterialBaker();
virtual ~MaterialBaker();
MaterialBaker(const MaterialBaker&) = delete;
MaterialBaker& operator=(const MaterialBaker&) = delete;
MaterialGraphMap::Ptr get();
private:
class MaterialGraphBaker;
typedef std::shared_ptr<MaterialGraphBaker> MaterialGraphBakerPtr;
typedef std::unordered_map<MString,MaterialGraphBakerPtr,MStringHash> MaterialGraphBakers;
MaterialGraphBakers fMaterialGraphBakers;
typedef std::unordered_map<MString,MaterialGraph::Ptr,MStringHash> NamedMaterialGraphs;
NamedMaterialGraphs fExistingGraphs;
};
}
#endif