mirror of https://github.com/ppy/osu
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:
parent
f2c0bc8218
commit
e5b51f769c
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue