void Map::prepare() { view.make_active(); // Update transform transitions. animationTime = util::now(); if (transform.needsTransition()) { transform.updateTransitions(animationTime); } const TransformState oldState = state; state = transform.currentState(); bool pixelRatioChanged = oldState.getPixelRatio() != state.getPixelRatio(); bool dimensionsChanged = oldState.getFramebufferWidth() != state.getFramebufferWidth() || oldState.getFramebufferHeight() != state.getFramebufferHeight(); if (pixelRatioChanged) { style->sprite = std::make_shared<Sprite>(*this, state.getPixelRatio()); style->sprite->load(kSpriteURL); spriteAtlas->resize(state.getPixelRatio()); } if (pixelRatioChanged || dimensionsChanged) { painter.clearFramebuffers(); } style->cascade(state.getNormalizedZoom()); // Update style transitions. animationTime = util::now(); if (style->needsTransition()) { style->updateTransitions(animationTime); update(); } // Allow the sprite atlas to potentially pull new sprite images if needed. if (style->sprite && style->sprite->isLoaded()) { spriteAtlas->update(*style->sprite); } updateTiles(); }