Previously, carousel panels would appear immediately at their required Y
position. This didn't look great when they appear with other panels
surrounding them.
Now they will spawn in underneath the nearest item before them, making
the animation feel much more correct.
The new carousel implementation was lacking some scroll related
behaviours. This makes sure that post-filter, the selection is
re-centered *unless* the user has scrolled away manually.
This matches the old carousel's behaviour. See
https://github.com/ppy/osu/pull/16647 for original implementation.
Closes https://github.com/ppy/osu/issues/33052.
The original `IEnumerable` flow prioritised slight performance gains,
but a filter's implementation could actually make this detrimental to
overall performance.
I noticed in passing that there were already potentially multiple
enumerations, via `updateYPositions` and the final `ToList` call. Rather
than faffing around, let's keep things simple and require lists.
In benchmarking, the difference is (currently) negiligible. Slight
improvement if anything.
This aims to bring some conformity to naming to make it easier to
understand component structure for new components.
Renames are pulled out of the song select v2 changes and are more
relevant there due to many new classes being added.
- `V2` suffix is dropped, with v2 components being moved to a relevant V2 namespace.
- Related classes have a prefix of the area they are used.
- Experimenting with using partial/nested classes in the song select v2 implementation.
Not committing to this yet but want to see how it plays out.
- Moved base carousel components to a generic namespace to avoid confusion with actual beatmap carousel implementation.