From 6894ed3426a9e86959ce0a326b024acab33a6a40 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 3 Sep 2021 16:48:37 +0900 Subject: [PATCH] Fix new ordering of retrieval meaning `EndTime` is not available in time --- osu.Game/Rulesets/Objects/HitObject.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/osu.Game/Rulesets/Objects/HitObject.cs b/osu.Game/Rulesets/Objects/HitObject.cs index 9446c9aa95..49bcf7a10c 100644 --- a/osu.Game/Rulesets/Objects/HitObject.cs +++ b/osu.Game/Rulesets/Objects/HitObject.cs @@ -67,7 +67,6 @@ namespace osu.Game.Rulesets.Objects } public SampleControlPoint SampleControlPoint = SampleControlPoint.DEFAULT; - public DifficultyControlPoint DifficultyControlPoint = DifficultyControlPoint.DEFAULT; /// @@ -106,15 +105,17 @@ namespace osu.Game.Rulesets.Objects /// The cancellation token. public void ApplyDefaults(ControlPointInfo controlPointInfo, BeatmapDifficulty difficulty, CancellationToken cancellationToken = default) { - if (controlPointInfo is LegacyControlPointInfo legacyInfo) - { - // This is done here since ApplyDefaultsToSelf may be used to determine the end time - SampleControlPoint = legacyInfo.SamplePointAt(this.GetEndTime() + control_point_leniency); + var legacyInfo = controlPointInfo as LegacyControlPointInfo; + + if (legacyInfo != null) DifficultyControlPoint = legacyInfo.DifficultyPointAt(StartTime); - } ApplyDefaultsToSelf(controlPointInfo, difficulty); + // This is done here after ApplyDefaultsToSelf as we may require custom defaults to be applied to have an accurate end time. + if (legacyInfo != null) + SampleControlPoint = legacyInfo.SamplePointAt(this.GetEndTime() + control_point_leniency); + nestedHitObjects.Clear(); CreateNestedHitObjects(cancellationToken);