48 lines
1.1 KiB
C++
48 lines
1.1 KiB
C++
#include "HydraLightBufferManager.h"
|
|
|
|
void HydraLightBufferManager::Initialise()
|
|
{
|
|
m_light_lookup.resize(MAX_LIGHTS);
|
|
m_lights.resize(MAX_LIGHTS);
|
|
for(uint32_t i = 0; i < MAX_LIGHTS; i ++)
|
|
{
|
|
m_available_lights.push(i);
|
|
}
|
|
}
|
|
|
|
void HydraLightBufferManager::Shutdown()
|
|
{
|
|
}
|
|
|
|
HydraID HydraLightBufferManager::CreateLight(HydraLightBuffer light_buffer)
|
|
{
|
|
std::lock_guard<std::mutex> lock(m_mutex);
|
|
if(m_available_lights.size() > 0)
|
|
{
|
|
HydraID light_id = m_available_lights.front();
|
|
m_available_lights.pop();
|
|
m_lights[m_light_count] = light_buffer;
|
|
m_light_lookup[light_id] = m_light_count;
|
|
m_light_count++;
|
|
return light_id;
|
|
}
|
|
|
|
return INVALID_HYDRA_ID;
|
|
}
|
|
|
|
HydraLightBuffer *const HydraLightBufferManager::GetLightBufferBase()
|
|
{
|
|
return &m_lights[0];
|
|
}
|
|
|
|
HydraLightBuffer &HydraLightBufferManager::GetLightBuffer(HydraID light_id)
|
|
{
|
|
HydraID light_idx = m_light_lookup[light_id];
|
|
return m_lights[light_idx];
|
|
}
|
|
|
|
uint32_t HydraLightBufferManager::GetLightCount()
|
|
{
|
|
return m_light_count;
|
|
}
|