From fab5cfd275bb827ab9c81c7d1e1be2a298a403d4 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Fri, 7 Feb 2025 18:57:26 +0900 Subject: [PATCH] Fix slider ball rotation not being updated when rewinding to a slider --- .../Objects/Drawables/DrawableSliderBall.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderBall.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderBall.cs index 24c0d0fcf0..9b8b197804 100644 --- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderBall.cs +++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderBall.cs @@ -66,8 +66,9 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables Slider slider = drawableSlider.HitObject; Position = slider.CurvePositionAt(completionProgress); - //0.1 / slider.Path.Distance is the additional progress needed to ensure the diff length is 0.1 - var diff = slider.CurvePositionAt(completionProgress) - slider.CurvePositionAt(Math.Min(1, completionProgress + 0.1 / slider.Path.Distance)); + // 0.1 / slider.Path.Distance is the additional progress needed to ensure the diff length is 0.1 + double checkDistance = 0.1 / slider.Path.Distance; + var diff = slider.CurvePositionAt(Math.Min(1 - checkDistance, completionProgress)) - slider.CurvePositionAt(Math.Min(1, completionProgress + checkDistance)); // Ensure the value is substantially high enough to allow for Atan2 to get a valid angle. // Needed for when near completion, or in case of a very short slider.