-
Notifications
You must be signed in to change notification settings - Fork 88
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
Enhanced brush mode #17
base: master
Are you sure you want to change the base?
Enhanced brush mode #17
Conversation
- I'm not sure how I feel about this. There's a lot of friction involving entering brush mode and leaving it to gain access to the left mouse button. This feels especially bad when we have nothing in the clipboard and left mouse button doesn't do anything at all. - Solution: Brush Mode should contain a field that tracks a creation command. The user can press the keys we have set up now to change that field. - Should probably turn Brush Mode into a behavior. - For later consideration, we could have a "diret insertion" mode that replicates the behavior seen as of this commit.
It shouldn't continue to be called BrushMode, because there are too many operations to memorize.
I haven't delved much into the full functionality of WPF, so this implementation requires me to understand it before I can draw conclusions
None at the moment, but I would suggest that this needs to be compatible with the Keybinding feature, as users may need to modify the shortcuts to make it easier for them to use them.
I do have an idea, is that the user's current pointer operation can be displayed near the pointer, for example, in your demonstration of the function #Deleting input object, when the user presses and holds the pointer and drags it, the words “Deletion of objects within the range” will be displayed near the pointer to indicate that Anyway, it's not recommended to merge this PR yet, need to wait for me to finish the keybinding feature first, sorry, but it's coming soon! |
[Key.D4] = new BrushModeInputWallRight(), | ||
[Key.D5] = new BrushModeInputLaneColorful(), | ||
[Key.T] = new BrushModeInputTap(), | ||
[Key.D] = new BrushModeInputHold(), |
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.
The H key should be assigned here
I will rename "Brush Mode" to "Batch Mode" and add new keybindings called |
Also implement a "layer" system for keybindings. Keybindings are allowed to conflict with each other if they are on different layers, unless one of them is on Global.
Batch Mode requires its own set of keybindings, separate from the normal ones. So I have started to make a "layer" system. There are three layers, Global, Normal, and Batch. Keybindings in Normal are allowed to conflict with keybindings from Batch mode. Global keybinds are always active. For keybindings such as |
The only object that takes two modifiers is Flick, and we don't care about the selection when adding flicks.
I used the feature a lot and made some changes. InputObjects are now referred to as "Submodes". There are two types of submodes. They determine what is done when clicking.
A new icon is displayed when in a FilterObjectSubmode. The filters are:
DocumentationDefault keybinds✏️: InputSubmode
These tables describe the behavior when clicking with different modifiers in Batch Mode. Left click operations
Right click operations
TODO
|
at fad1143 KeyboardAction_DeleteSelectingObjects() QQ20241028-15741-HD.mp4But I see that you're deleting objects elsewhere as well, so I'd suggest that you need to follow up on that as well |
Thanks, I will follow your code for the other deletion functions |
Could you merge fad1143 into this PR? So i don't have to duplicate your deletion code. |
how , I merged your current work and push to batch_mode in my repo |
Oh, i can do it myself, sorry |
…nflict timesigntures
Crash when clicking on LaneBlock in batch mode:
|
I'm noticing this bug starting today, was it one of the recent commits? Bottom green object is a TAP and top green object is a HOLD. OngekiFumenEditor_XaJFbZp3ZQ.mp4 |
fixed and plz pull |
LaneBlockArea no X axis to move so it's actual not a OngekiMovableObjectBase |
Thank you, i should have mentioned i fixed it with db8b813 |
TODO
[x] Refactor selection area code
[x] Enable click selection with FilterSubmode
[x] Fix missing Brush button text
[x] Fix crash when clicking on LaneBlock in batch mode
[ ] Add menu bar buttons so users can discover keybinds
[ ] Allow dragging when starting drag on non-filter object (out of scope?)
Brush mode improvements
Brush mode has been changed. When in Brush Mode, an overlay is shown in the bottom left. It shows the input object.
By default, the input object is "Clipboard", which is the same as the old brush mode behavior.
Changing input object
The user can press keys to change the input object. See CommandDefinitions for the full list.
Insert input object
Left Click inserts the input object. If Alt or Ctrl is held, modifiers are applied to some inputs. If Shift is held, the previous selection will be kept; otherwise the selection will be cleared.
Deleting input object
If the input object is not "Clipboard", Right Click deletes instances of the input object.
Change selection
If Alt is held while clicking and dragging, normal box selection will be used. This is so that the user does not have to exit Brush Mode to change selection.
Questions
@MikiraSora, before I finish localizing and bugfixing, I want to make sure you like this.
Behavior
?