Fix incorrect assertion placement in spinner rotation tracker

Checking the delta after the application of rate is not correct. The
delta is in screen-space *before* the rate from rate-changing mods were
applied; the point of the application of the rate is to compensate for
the fact that the spinner is still judged in "track time" - but the goal
is to keep the spinner's difficulty *independent* of rate, which means
that with DT active the user's spin is "twice as effective" to
compensate for the fact that the spinner is twice as short in real time.

In another formulation, with DT active, the user gets to record replay
frames "half as often" as in normal gameplay.
This commit is contained in:
Bartłomiej Dach 2023-10-30 21:15:40 +01:00
parent f2c0bc8218
commit e5b51f769c
No known key found for this signature in database
1 changed files with 2 additions and 2 deletions

View File

@ -101,11 +101,11 @@ public void AddRotation(float delta)
rotationTransferred = true; rotationTransferred = true;
} }
Debug.Assert(Math.Abs(delta) <= 180);
double rate = gameplayClock?.GetTrueGameplayRate() ?? Clock.Rate; double rate = gameplayClock?.GetTrueGameplayRate() ?? Clock.Rate;
delta = (float)(delta * Math.Abs(rate)); delta = (float)(delta * Math.Abs(rate));
Debug.Assert(Math.Abs(delta) <= 180);
currentRotation += delta; currentRotation += delta;
drawableSpinner.Result.History.ReportDelta(Time.Current, delta); drawableSpinner.Result.History.ReportDelta(Time.Current, delta);
} }