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