[core] Pass placement commit parameters in constructor

This commit is contained in:
Mikhail Pozdnyakov
2020-01-15 15:27:09 +02:00
parent 4735845a6e
commit 5af128f205
3 changed files with 14 additions and 9 deletions

View File

@@ -400,6 +400,7 @@ std::unique_ptr<RenderTree> RenderOrchestrator::createRenderTree(const UpdatePar
updateParameters.mode,
updateParameters.transitionOptions,
updateParameters.crossSourceCollisions,
updateParameters.timePoint,
placementController.getPlacement());
for (auto it = layersNeedPlacement.crbegin(); it != layersNeedPlacement.crend(); ++it) {
@@ -408,7 +409,7 @@ std::unique_ptr<RenderTree> RenderOrchestrator::createRenderTree(const UpdatePar
placement->placeLayer(layer, renderTreeParameters->transformParams.projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision);
}
placement->commit(updateParameters.timePoint, updateParameters.transformState.getZoom());
placement->commit();
crossTileSymbolIndex.pruneUnusedLayers(usedSymbolLayers);
for (const auto& entry : renderSources) {
entry.second->updateFadingTiles();
@@ -427,7 +428,8 @@ std::unique_ptr<RenderTree> RenderOrchestrator::createRenderTree(const UpdatePar
Mutable<Placement> placement = makeMutable<Placement>(updateParameters.transformState,
updateParameters.mode,
updateParameters.transitionOptions,
updateParameters.crossSourceCollisions);
updateParameters.crossSourceCollisions,
updateParameters.timePoint);
for (auto it = layersNeedPlacement.crbegin(); it != layersNeedPlacement.crend(); ++it) {
const RenderLayer& layer = *it;
crossTileSymbolIndex.addLayer(layer, updateParameters.transformState.getLatLng().longitude());
@@ -435,7 +437,7 @@ std::unique_ptr<RenderTree> RenderOrchestrator::createRenderTree(const UpdatePar
renderTreeParameters->transformParams.projMatrix,
updateParameters.debugOptions & MapDebugOptions::Collision);
}
placement->commit(updateParameters.timePoint, updateParameters.transformState.getZoom());
placement->commit();
placementController.setPlacement(std::move(placement));
}
renderTreeParameters->symbolFadeChange = 1.0f;

View File

@@ -61,7 +61,8 @@ const CollisionGroups::CollisionGroup& CollisionGroups::get(const std::string& s
// PlacementController implemenation
PlacementController::PlacementController()
: placement(makeMutable<Placement>(TransformState{}, MapMode::Static, style::TransitionOptions{}, true, nullopt)) {}
: placement(makeMutable<Placement>(
TransformState{}, MapMode::Static, style::TransitionOptions{}, true, TimePoint(), nullopt)) {}
void PlacementController::setPlacement(Immutable<Placement> placement_) {
placement = std::move(placement_);
@@ -94,10 +95,12 @@ Placement::Placement(const TransformState& state_,
MapMode mapMode_,
style::TransitionOptions transitionOptions_,
const bool crossSourceCollisions,
TimePoint commitTime_,
optional<Immutable<Placement>> prevPlacement_)
: collisionIndex(state_, mapMode_),
mapMode(mapMode_),
transitionOptions(std::move(transitionOptions_)),
commitTime(commitTime_),
placementZoom(state_.getZoom()),
collisionGroups(crossSourceCollisions),
prevPlacement(std::move(prevPlacement_)) {
@@ -622,8 +625,7 @@ void Placement::placeBucket(const SymbolBucket& bucket,
std::forward_as_tuple(bucket.bucketInstanceId, params.featureIndex, overscaledID));
}
void Placement::commit(TimePoint now, const double zoom) {
commitTime = now;
void Placement::commit() {
if (!getPrevPlacement()) {
assert(mapMode != MapMode::Continuous);
fadeStartTime = commitTime;
@@ -638,7 +640,7 @@ void Placement::commit(TimePoint now, const double zoom) {
bool placementChanged = false;
prevZoomAdjustment = getPrevPlacement()->zoomAdjustment(zoom);
prevZoomAdjustment = getPrevPlacement()->zoomAdjustment(placementZoom);
float increment = getPrevPlacement()->symbolFadeChange(commitTime);
// add the opacities from the current placement, and copy their current values from the previous placement

View File

@@ -116,9 +116,10 @@ public:
MapMode,
style::TransitionOptions,
const bool crossSourceCollisions,
TimePoint commitTime,
optional<Immutable<Placement>> prevPlacement = nullopt);
void placeLayer(const RenderLayer&, const mat4&, bool showCollisionBoxes);
void commit(TimePoint, const double zoom);
void commit();
void updateLayerBuckets(const RenderLayer&, const TransformState&, bool updateOpacities) const;
float symbolFadeChange(TimePoint now) const;
bool hasTransitions(TimePoint now) const;
@@ -151,7 +152,7 @@ private:
TimePoint fadeStartTime;
TimePoint commitTime;
float placementZoom;
const float placementZoom;
float prevZoomAdjustment = 0;
std::unordered_map<uint32_t, JointPlacement> placements;