#include "light.h" #include "location.h" Light::Light(std::shared_ptr type, const Location & position) : type {std::move(type)}, instance {this->type->instances.acquire(Renderable::commonLocationData.lock()->acquire(position))} { std::ranges::transform(this->type->spotLight, std::back_inserter(spotLightInstances), [spotLights = Renderable::commonSpotLights.lock(), this](const Illuminator::SpotLight::CPtr & spotLight) { return spotLights->acquire(*spotLight, instance->location.index); }); std::ranges::transform(this->type->pointLight, std::back_inserter(pointLightInstances), [pointLights = Renderable::commonPointLights.lock(), this]( const Illuminator::PointLight::CPtr & pointLight) { return pointLights->acquire(*pointLight, instance->location.index); }); }