Files
comaps/drape_frontend/animation/base_interpolator.cpp
Konstantin Pastbin e3e4a1985a Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)
To expand with full Organic Maps and Maps.ME commits history run:
  git remote add om-historic [om-historic.git repo url]
  git fetch --tags om-historic
  git replace squashed-history historic-commits
2025-05-08 21:10:51 +07:00

53 lines
1.0 KiB
C++

#include "drape_frontend/animation/base_interpolator.hpp"
#include "drape_frontend/animation/interpolation_holder.hpp"
#include "base/assert.hpp"
#include "base/math.hpp"
#include <algorithm>
namespace df
{
BaseInterpolator::BaseInterpolator(double duration, double delay)
: m_elapsedTime(0.0)
, m_duration(duration)
, m_delay(delay)
{
ASSERT(m_duration > 0.0, ());
InterpolationHolder::Instance().RegisterInterpolator(this);
}
BaseInterpolator::~BaseInterpolator()
{
InterpolationHolder::Instance().DeregisterInterpolator(this);
}
bool BaseInterpolator::IsFinished() const
{
return m_elapsedTime > (m_duration + m_delay);
}
void BaseInterpolator::Advance(double elapsedSeconds)
{
m_elapsedTime += elapsedSeconds;
}
double BaseInterpolator::GetT() const
{
if (IsFinished())
return 1.0;
return std::max(m_elapsedTime - m_delay, 0.0) / m_duration;
}
double BaseInterpolator::GetElapsedTime() const
{
return m_elapsedTime;
}
double BaseInterpolator::GetDuration() const
{
return m_duration;
}
} // namespace df