-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add hexgrid and circular grid to the osu editor #26310
Conversation
This reverts commit de14da9.
This caused issues in rendering the outline of the grid because the outline was getting masked at some resolutions.
Initial five-minute impressions without looking at the actual code:
2024-06-06.14-20-16.mp4Will likely need general feedback from @ppy/team-client as to how much of this we actually want before proceeding with proper structural review. |
I think the rotation bounds should not change, in order to make the interaction more seamless when switching between grid types. For example when you set the rotation to 45 degrees on the square grid, change the grid type to hex and rotation gets clipped to 30 degrees, change the grid type back to square grid. In that scenario your grid rotation changes due to changing the grid type and the user has to manually set it back, which is not acceptable UX.
The distance snap grid is not suitable for any geometry snapping usecase besides its intended distance snap mapping. It can not snap slider control points, and you can only have the previous hit object as the origin. The circular grid is very useful is many scenarios, like ensuring equal distance between some objects that is not the previous hit object, or making circular blanketing sliders. Combined with the 'grid from points' feature in the later PR, the circular grid will be very quick to set up, so it will definitely be more convenient than the distance snap grid.
The 'intersection snapping feature' seems to be working as intended by first snapping to the beat snap grid and then snapping to the |
If such interactions are a worry (I'm not sure that they should be), then the way to fix that would be to store the grid settings local to the grid type. As in, you could change things on square grid, then go to triangle, change whatever and then go back to square which would continue to use original settings. On a similar point, the rotation slider should be disabled on the circular grid because it does nothing useful. |
I don't want to change it in this direction. I think it makes the behaviour overly complicated and less seamless. With grid type-specifc settings, the experience is not seamless. If the user wants a grid in some position and use different grid types, then he has to manually reset the position every time he switches type. That's not seamless. The rotation slider for the circular grid is not irrelevant. If the settings carry over between types like it does now, then this would allow you to set the rotation before you switch to a grid type which requires the rotation. I think its good UX that you can have the same behaviour with a different order of operations. Either you set the settings first and then change grid type, or you change the grid type and then change the settings. I want it to be identical either way. |
Well if things are going to lean that way then the rotation slider should just have [-180deg, 180deg] range and not [-45deg, 45deg] which is specific to square grid.
Why would you want that though? The rotation slider does nothing for circular grid. You can't even see it do anything. Why would you want to adjust a grid based on it not moving at all? |
With a full [-180deg, 180deg] range the precision of the slider bar is compromised. I'd say keep it on [-45deg, 45deg] range to increase precision since that range happens to be exactly enough for all grid types.
You're right the rotation slider does nothing for the circular grid, but it does do something for the other grid types. For example someone might attempt to first change rotation and then change grid type from circular to something else. Such an action is both reasonable and productive. Why go out of your way to take away that action? I want to give the users as much freedom as possible. |
Yeah I dunno. Will need a third opinion here because the visions for this feature are clearly divergent at this point. My point is that I wish to guide users into understanding what does what and why things have constraints and limits that they do by interacting with them directly rather than giving them too many options and then having them wonder why some of them are redundant or useless. |
After testing this, I think the experience is currently very frustrating. However I think that most of these issues come from the overall way the right side-menu works and less from the grid-specific menu. I'll briefly include the frustrations I've had with editing the grid that aren't directly part of this PR as well, though they probably warrant their own discussion post where I go into more detail Issues with the side menu/grid overall
2024-06-10.12-01-05.mp4
Grid menu when sidebar is collapsed
Grid menu in expanded state
Other thoughts/ideas
|
I'm gonna limit it to stuff relevant to changes in this PR.
Just looking at the grid is enough to tell you which grid is selected.
I think the "soft" limits idea is a reasonable middle-ground. I'll just have to rewrite slider bars so they support soft limits and dont look ass when disabled.
That's addressed in #26313
I agree less vertical space would be better. If I go with a horizontal button group then I'd also add a label that says "Grid type" so you know what it controls. |
Well put it this way if you can do it locally to the editor then maybe although I think it's going to be janky. Definitely would not want to see any changes to Not especially convinced by the proposal on a UX level but it's at least better than this branch right now. |
I checked and the only way to implement the features I need in a non-jank way is to change framework or |
@bdach I went and implemented your UX suggestions anyways. I just want to move this PR forwards. The disabled sliderbar still doesn't look quite right because of the alpha showing the overlap, but I don't know how to fix that. |
osu.Game/Screens/Edit/Compose/Components/TriangularPositionSnapGrid.cs
Outdated
Show resolved
Hide resolved
UX seems fine to me now for whatever that's worth. |
Co-authored-by: Bartłomiej Dach <[email protected]>
Co-authored-by: Bartłomiej Dach <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seems ok
@peppy requesting double-check to make sure you're fine with this in the current form
Actually I'm just gonna get this in to get it off of my review list. |
Part of #26303
Requires:
Adds hex grids and circular grids and the ability to toggle between them