diff --git a/src/Steps.cpp b/src/Steps.cpp index e1c0d9d31a..0c1de3112a 100644 --- a/src/Steps.cpp +++ b/src/Steps.cpp @@ -520,6 +520,11 @@ void Steps::SetMeter( int meter ) m_iMeter = meter; } +const TimingData *Steps::GetTimingData() const +{ + return m_Timing.empty() ? &m_pSong->m_SongTiming : &m_Timing; +} + bool Steps::HasSignificantTimingChanges() const { if( m_Timing.HasStops() || m_Timing.HasDelays() || m_Timing.HasWarps() || diff --git a/src/Steps.h b/src/Steps.h index 95b179bcd1..178a0ab725 100644 --- a/src/Steps.h +++ b/src/Steps.h @@ -157,6 +157,12 @@ public: * This is required to allow Split Timing. */ TimingData m_Timing; + /** + * @brief Retrieves the appropriate timing data for the Steps. Falls + * back on the Song if needed. */ + const TimingData *GetTimingData() const; + TimingData *GetTimingData() { return const_cast( static_cast( this )->GetTimingData() ); }; + /** * @brief Determine if the Steps have any major timing changes during gameplay. * @return true if it does, or false otherwise. */