Implemented simple tests for sync track calculations.

This commit is contained in:
Martin Felis
2021-11-16 20:14:22 +01:00
parent fbac21cf14
commit 1cfba1c388
2 changed files with 61 additions and 8 deletions
+20 -2
View File
@@ -27,14 +27,32 @@ struct SyncTrack {
int m_num_intervals;
float m_interval_durations[cSyncTrackMaxIntervals];
float ConvertAbsTimeToSyncTime (float abs_time) {
float CalcSyncFromAbsTime (float abs_time) {
float sync_time = fmodf (abs_time, m_duration) / m_duration;
int interval_index = 0;
while (sync_time < m_interval_durations[interval_index]) {
while (sync_time >= m_interval_durations[interval_index]) {
sync_time -= m_interval_durations[interval_index];
interval_index ++;
}
return float(interval_index) + sync_time / m_interval_durations[interval_index];
}
float CalcRatioFromSyncTime (float sync_time) {
float interval_ratio = fmodf(sync_time, 1.0f);
int interval = int(sync_time - interval_ratio);
float result = 0.f;
int i = 0;
while (i < interval) {
result += m_interval_durations[i];
i++;
}
result += m_interval_durations[i] * interval_ratio;
return result;
}
static SyncTrack Blend(float weight, const SyncTrack& track_A, const SyncTrack& track_B) {