#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