move defaultTransitionDuration to MapData
This commit is contained in:
@@ -78,9 +78,10 @@ public:
|
||||
// Notifies the Map thread that the state has changed and an update might be necessary.
|
||||
using UpdateType = uint32_t;
|
||||
enum class Update : UpdateType {
|
||||
Nothing = 0,
|
||||
StyleInfo = 1 << 0,
|
||||
Debug = 1 << 1,
|
||||
Nothing = 0,
|
||||
StyleInfo = 1 << 0,
|
||||
Debug = 1 << 1,
|
||||
DefaultTransitionDuration = 1 << 2,
|
||||
};
|
||||
void triggerUpdate(Update = Update::Nothing);
|
||||
|
||||
@@ -253,8 +254,6 @@ private:
|
||||
std::vector<std::string> classes;
|
||||
std::string accessToken;
|
||||
|
||||
std::chrono::steady_clock::duration defaultTransitionDuration;
|
||||
|
||||
std::set<util::ptr<StyleSource>> activeSources;
|
||||
|
||||
std::atomic<UpdateType> updated;
|
||||
|
||||
@@ -649,14 +649,15 @@ std::vector<std::string> Map::getClasses() const {
|
||||
}
|
||||
|
||||
void Map::setDefaultTransitionDuration(std::chrono::steady_clock::duration duration) {
|
||||
defaultTransitionDuration = duration;
|
||||
if (style) {
|
||||
style->setDefaultTransitionDuration(duration);
|
||||
}
|
||||
assert(Environment::currentlyOn(ThreadType::Main));
|
||||
|
||||
data->setDefaultTransitionDuration(duration);
|
||||
triggerUpdate(Update::DefaultTransitionDuration);
|
||||
}
|
||||
|
||||
std::chrono::steady_clock::duration Map::getDefaultTransitionDuration() {
|
||||
return defaultTransitionDuration;
|
||||
assert(Environment::currentlyOn(ThreadType::Main));
|
||||
return data->getDefaultTransitionDuration();
|
||||
}
|
||||
|
||||
void Map::updateSources() {
|
||||
@@ -753,7 +754,7 @@ void Map::loadStyleJSON(const std::string& json, const std::string& base) {
|
||||
style->base = base;
|
||||
style->loadJSON((const uint8_t *)json.c_str());
|
||||
style->cascadeClasses(classes);
|
||||
style->setDefaultTransitionDuration(defaultTransitionDuration);
|
||||
style->setDefaultTransitionDuration(data->getDefaultTransitionDuration());
|
||||
|
||||
const std::string glyphURL = util::mapbox::normalizeGlyphsURL(style->glyph_url, getAccessToken());
|
||||
glyphStore->setURL(glyphURL);
|
||||
@@ -772,6 +773,11 @@ void Map::prepare() {
|
||||
assert(painter);
|
||||
painter->setDebug(data->getDebug());
|
||||
}
|
||||
if (u & static_cast<UpdateType>(Update::DefaultTransitionDuration)) {
|
||||
if (style) {
|
||||
style->setDefaultTransitionDuration(data->getDefaultTransitionDuration());
|
||||
}
|
||||
}
|
||||
|
||||
// Update transform transitions.
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ class MapData {
|
||||
public:
|
||||
inline MapData() {
|
||||
setAnimationTime(std::chrono::steady_clock::time_point::min());
|
||||
setDefaultTransitionDuration(std::chrono::steady_clock::duration::zero());
|
||||
}
|
||||
|
||||
inline StyleInfo getStyleInfo() const {
|
||||
@@ -50,12 +51,20 @@ public:
|
||||
animationTime = timePoint.time_since_epoch();
|
||||
};
|
||||
|
||||
inline std::chrono::steady_clock::duration getDefaultTransitionDuration() const {
|
||||
return defaultTransitionDuration;
|
||||
}
|
||||
inline void setDefaultTransitionDuration(std::chrono::steady_clock::duration duration) {
|
||||
defaultTransitionDuration = duration;
|
||||
};
|
||||
|
||||
private:
|
||||
mutable std::mutex mtx;
|
||||
|
||||
StyleInfo styleInfo;
|
||||
std::atomic<uint8_t> debug { false };
|
||||
std::atomic<std::chrono::steady_clock::time_point::duration> animationTime;
|
||||
std::atomic<std::chrono::steady_clock::duration> defaultTransitionDuration;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user