summaryrefslogtreecommitdiff
path: root/src/mbgl/style/style.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/style/style.cpp')
-rw-r--r--src/mbgl/style/style.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp
index 63fb602616..080911b746 100644
--- a/src/mbgl/style/style.cpp
+++ b/src/mbgl/style/style.cpp
@@ -59,6 +59,7 @@ Style::Style(Scheduler& scheduler_, FileSource& fileSource_, float pixelRatio)
spriteAtlas(std::make_unique<SpriteAtlas>(Size{ 1024, 1024 }, pixelRatio)),
lineAtlas(std::make_unique<LineAtlas>(Size{ 256, 512 })),
light(std::make_unique<Light>()),
+ renderLight(std::make_unique<RenderLight>(*light)),
observer(&nullObserver) {
glyphAtlas->setObserver(this);
spriteAtlas->setObserver(this);
@@ -147,7 +148,7 @@ void Style::setJSON(const std::string& json) {
defaultZoom = parser.zoom;
defaultBearing = parser.bearing;
defaultPitch = parser.pitch;
- light = std::make_unique<Light>(parser.light);
+ setLight(std::make_unique<Light>(parser.light));
glyphAtlas->setURL(parser.glyphURL);
spriteAtlas->load(parser.spriteURL, scheduler, fileSource);
@@ -310,6 +311,19 @@ void Style::removeRenderLayer(const std::string& id) {
}
}
+void Style::setLight(std::unique_ptr<Light> light_) {
+ light = std::move(light_);
+ renderLight = std::make_unique<RenderLight>(*light);
+}
+
+Light* Style::getLight() const {
+ return light.get();
+}
+
+RenderLight* Style::getRenderLight() const {
+ return renderLight.get();
+}
+
std::string Style::getName() const {
return name;
}
@@ -364,11 +378,11 @@ void Style::update(const UpdateParameters& parameters) {
const bool evaluate = cascade || zoomChanged || parameters.updateFlags & Update::RecalculateStyle;
if (cascade) {
- transitioningLight = TransitioningLight(*light, std::move(transitioningLight), cascadeParameters);
+ renderLight->transition(cascadeParameters);
}
- if (evaluate || transitioningLight.hasTransition()) {
- evaluatedLight = EvaluatedLight(transitioningLight, evaluationParameters);
+ if (evaluate || renderLight->hasTransition()) {
+ renderLight->evaluate(evaluationParameters);
}
for (const auto& renderSource : renderSources) {
@@ -443,7 +457,7 @@ RenderSource* Style::getRenderSource(const std::string& id) const {
}
bool Style::hasTransitions() const {
- if (transitioningLight.hasTransition()) {
+ if (renderLight->hasTransition()) {
return true;
}