Files
HydraV3/HydraEngine/source/buffer/HydraLightBufferManager.cpp
2026-07-17 15:30:29 +01:00

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;
}