- Closes https://github.com/ppy/osu/issues/31797 - Supersedes / closes https://github.com/ppy/osu/pull/32611
IPositionSnapProvider
As proposed in https://github.com/ppy/osu-server-beatmap-submission/pull/5#discussion_r1861680837.
SkinEditor
SkinEditorChangeHandler
TernaryStateRadioMenuItem
SkinComponentsContainerLookup
GlobalSkinnableContainerLookup
SkinComponentsContainer
SkinnableContainer
Closes https://github.com/ppy/osu/issues/29098.
HasFlag
base
GetContainingInputManager()
RestoreState()
IEditorChangeHandler
https://github.com/ppy/osu/pull/28257#discussion_r1606999574
Closes https://github.com/ppy/osu/issues/28237. Solution as proposed here: https://github.com/ppy/osu/pull/28089#issuecomment-2095372157 For flips and rotations by 90 degrees this does what you would expect it to. For arbitrary rotations it *sort of kind of* attempts to do this but the results are a bit wonky - probably still better than what was there before, though?
Closes https://github.com/ppy/osu/issues/28215. `drawable.Position` is a location in the parent's coordinate space, and `drawable.OriginPosition` is in the drawable's local space and additionally does not take scale into account.
userTriggered
Automatically choose origin (along with anchor) to make skin editor placement easier for users
Closes https://github.com/ppy/osu/issues/28115.