[fix] Fixed an issue that time variable returned an absolute beat count.

This commit is contained in:
falsycat 2019-10-06 00:00:00 +00:00
parent 0684fd293d
commit 92ee305fff
2 changed files with 11 additions and 3 deletions

View File

@ -35,8 +35,9 @@ abstract class AbstractScheduledController : ScheduledControllerInterface {
assert(next_operation_index_ <= operations_.length);
const last_operation = &operations_[next_operation_index_-1];
if (IsTimeInPeriod(time, last_operation.period)) {
ProcessOperation(time, *last_operation);
const period = last_operation.period;
if (IsTimeInPeriod(time, period)) {
ProcessOperation(period.ConvertToRelativeTime(time), *last_operation);
return;
}
FinalizeOperation(*last_operation);
@ -47,7 +48,8 @@ abstract class AbstractScheduledController : ScheduledControllerInterface {
const next_operation = &operations_[next_operation_index_];
if (IsTimeInPeriod(time, next_operation.period)) {
PrepareOperation(*next_operation);
ProcessOperation(time, *next_operation);
ProcessOperation(
next_operation.period.ConvertToRelativeTime(time), *next_operation);
++next_operation_index_;
}
}

View File

@ -12,3 +12,9 @@ bool IsTimeInPeriod(float time, in Period period) {
bool IsPeriodIntersectedToPeriod(in Period p1, in Period p2) {
return p1.start < p2.end && p2.start < p1.end;
}
///
float ConvertToRelativeTime(in Period period, float src)
in (period.start < period.end) {
return (src - period.start) / (period.end - period.start);
}