The "Perfect curve" one in particular... fixes test failures, as some
tests were relying on this particular casing. But the new version feels
more correct anyway, so it's whatever.
The interface doesn't really do anything useful right now because
it enforces a common contract, but all usages of the contract
go through the concrete implementation, and it inflates
the already-huge diff.
Doesn't do much for the client; mostly a safety for osu-web's sake,
as without the change it could theoretically fail to validate the mod
properly in multiplayer contexts.
Regressed in https://github.com/ppy/osu/pull/25171.
The old code was kinda dependent on correct order of setting `Disabled`.
`CatchHitObjectComposer` would disable distance spacing in its BDL, and
then via the base `DistancedHitObjectComposer.LoadComplete()`, the
slider would be faded out. The switch to composition broke that
ordering.
To fix, stop relying on ordering and just respond to changes as they
come. That's what bindables are for.