36 lines
770 B
C++
36 lines
770 B
C++
#include "HydraMaterialBufferManager.h"
|
|
|
|
void HydraMaterialBufferManager::Intialise()
|
|
{
|
|
m_material.resize(MAX_MATERIALS);
|
|
for(uint32_t mat_idx = 0; mat_idx < MAX_MATERIALS; mat_idx++)
|
|
{
|
|
m_available_material_ids.push(mat_idx);
|
|
}
|
|
}
|
|
|
|
void HydraMaterialBufferManager::Shutdown()
|
|
{
|
|
}
|
|
|
|
HydraID HydraMaterialBufferManager::CreateMaterial(const HydraMaterialBuffer &material)
|
|
{
|
|
std::lock_guard<std::mutex> lock(m_mutex);
|
|
if(m_available_material_ids.size() == 0)
|
|
{
|
|
return INVALID_HYDRA_ID;
|
|
}
|
|
HydraID mat_id = m_available_material_ids.front();
|
|
m_available_material_ids.pop();
|
|
m_material[mat_id] = material;
|
|
return mat_id;
|
|
}
|
|
|
|
|
|
|
|
|
|
void *HydraMaterialBufferManager::GetMaterialBuffer()
|
|
{
|
|
return &m_material[0];
|
|
}
|