void LightManager::addLight(Light *light) { if(light) { if(light->hasParallelBeams()) { parallelBeamsLights.push_back(light); }else { lightOctreeManager->addOctreeable(light); } onLightEvent(light, LightManager::ADD_LIGHT); } }
void LightManager::removeLight(Light *const light) { if(light!=nullptr) { if(light->hasParallelBeams()) { std::vector<Light *>::iterator it = std::find(parallelBeamsLights.begin(), parallelBeamsLights.end(), light); parallelBeamsLights.erase(it); }else { lightOctreeManager->removeOctreeable(light); } onLightEvent(light, LightManager::REMOVE_LIGHT); delete light; } }
void LightManager::removeLight(Light *light) { if(light) { if(light->hasParallelBeams()) { auto it = std::find(parallelBeamsLights.begin(), parallelBeamsLights.end(), light); parallelBeamsLights.erase(it); }else { lightOctreeManager->removeOctreeable(light); } onLightEvent(light, LightManager::REMOVE_LIGHT); delete light; } }
void LightManager::addLight(Light *const light) { if(!isInitialized) { throw std::runtime_error("Light cannot be added to the light manager because it's not initialized."); } if(light!=nullptr) { if(light->hasParallelBeams()) { parallelBeamsLights.push_back(light); }else { lightOctreeManager->addOctreeable(light); } onLightEvent(light, LightManager::ADD_LIGHT); } }