Store Result.TimeAbsolute separately from offset

Calculating from TimeOffset is bad because it loses precision.
The result time won't change anymore
even If `HitObject.GetEndTime()` changes later.
This commit is contained in:
ekrctb
2023-01-24 15:35:06 +09:00
parent cc87923179
commit efef97d5be
4 changed files with 20 additions and 10 deletions

View File

@ -673,7 +673,8 @@ namespace osu.Game.Rulesets.Objects.Drawables
$"{GetType().ReadableName()} applied an invalid hit result (was: {Result.Type}, expected: [{Result.Judgement.MinResult} ... {Result.Judgement.MaxResult}]).");
}
Result.TimeOffset = Math.Min(MaximumJudgementOffset, Time.Current - HitObject.GetEndTime());
Result.TimeAbsolute = Time.Current;
Result.TimeOffset = Math.Min(MaximumJudgementOffset, Result.TimeAbsolute - HitObject.GetEndTime());
if (Result.HasResult)
updateState(Result.IsHit ? ArmedState.Hit : ArmedState.Miss);