Implemented simple tests for sync track calculations.
This commit is contained in:
+20
-2
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user