1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-16 17:42:54 +08:00
osu-lazer/osu.Game.Rulesets.Osu/Objects/Drawables
Bartłomiej Dach cfd8d05fde
Fix spinner ticks not playing samples correctly sometimes
Noticed this during work on https://github.com/ppy/osu/pull/25185.

In some circumstances, it seemed that spinner bonus ticks (and mostly
them specifically) would not always play with the correct volume.
Hours of debugging later pointed at a trace at
`DrawableAudioWrapper.refreshLayoutFromParent()` not firing sometimes.

Initially I thought it to be some sort of framework bug, but after
preparing a diff and running final checks, I noticed that sometimes
the sample was being played *by a `PoolableSkinnableSample` that wasn't
loaded*. And determining why *that* is the case turned out with this
diff.

As it happens, spinner ticks get assigned a start time proportionally,
i.e. the 1st of 10 ticks is placed at 10% of the duration, the 2nd
at 20%, and so on. The start time generally shouldn't matter,
because the spinner is manually judging the ticks. *However*, the ticks
*still* receive a lifetime start / end in the same way normal objects
do, which means that in some cases they can *not be alive* when they're
hit, which means that the `DrawableAudioWrapper` flow *hasn't had
a chance to run*, and rightly so.

To fix, ensure that all spinner ticks are alive throughout the entirety
of the spinner's duration.
2023-10-23 21:29:55 +02:00
..
Connections Automated pass 2023-06-24 01:00:03 +09:00
DrawableHitCircle.cs Fix object dim being applied to approach circles 2023-09-29 18:23:23 +09:00
DrawableOsuHitObject.cs Bypass Parent nullability checks for now 2023-10-17 17:48:45 +09:00
DrawableOsuJudgement.cs Fix SkinnableLighting showing up as a user placeable component 2023-02-17 18:24:05 +09:00
DrawableSlider.cs Merge branch 'master' into legacy-tick-not-so-legacy-after-all 2023-10-04 10:52:13 +09:00
DrawableSliderBall.cs Fix regression in Tracking state handling 2023-10-04 16:11:40 +09:00
DrawableSliderHead.cs Remove slider head circle movement (and remove setting from "classic" mod) 2023-09-14 17:49:41 +09:00
DrawableSliderRepeat.cs Fix legacy slider repeats becoming much too large on hit 2023-10-17 14:47:44 +02:00
DrawableSliderTail.cs Fix potential out-of-order tail and ticks 2023-10-03 18:52:20 +09:00
DrawableSliderTick.cs Simplify some maximum size specs 2023-09-20 12:48:15 +09:00
DrawableSpinner.cs Cap bonus score more correctly 2023-10-20 16:10:54 +09:00
DrawableSpinnerBonusTick.cs Automated pass 2023-06-24 01:00:03 +09:00
DrawableSpinnerTick.cs Fix spinner ticks not playing samples correctly sometimes 2023-10-23 21:29:55 +02:00
IRequireTracking.cs Remove redundant nullable suppression directives 2023-06-07 08:20:41 +03:00
ITrackSnaking.cs Automated pass 2023-06-24 01:00:03 +09:00
SkinnableLighting.cs Fix SkinnableLighting showing up as a user placeable component 2023-02-17 18:24:05 +09:00