Replies: 5 comments 31 replies
-
cc @MaDDoXbr @GoogleFrog @Ruwetuin @springraaar @ForbodingAngel @skymyj |
Beta Was this translation helpful? Give feedback.
-
Loose thoughts:
|
Beta Was this translation helpful? Give feedback.
-
#567 Might be related. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
A per discussion with @sprunk here I'm prioritizing a proper We might be able to rework this discussion to reflect future requirements of games for full externalization of selection, but since this is not a demand any consumer apparently has for now I won't be proceeding with it. Thanks for the feedback and helping find a better solution. |
Beta Was this translation helpful? Give feedback.
-
I noticed this was implemented for allowing games to take over box selection from engine.
I went through all current Recoil consumers and was able to find none that makes use of Set/GetSelectionBoxHandledByEngine.
At the same time, I believe this is an important ability for the engine to support (games that don't want to use engine defaults/want to implement own selection logic), and have delved into and dealt with smart select (one such widget for own selection logic, used in BAR) issues and their causes: mostly inability to infer selection events due to the complexity managing mousepress/release owner and having to ignore engine triggered selections.
I have a WIP PR that implements a
BoxSelection(anchorx, anchory, pivotx, pivoty)
callin that allows games to:[PS: As well observed by @sprunk it would also make sense to expose
BoxSelection{Move,Update}
for dynamic selection boxes (logic without releasing box)]Apart from that it also addresses a few shortcomings I identified with the previous approach:
Since this seems (to me) to be a more appropriate model for exposing this ability to games I suggest allowing this callin to be available. I am unsure if
{Get,Set}BoxSelectionHandledByEngine
still have any relevant role in this circumstance.Nothing changes for consumers that don't intend to perform own selection logic and the incurred overhead is minimal (checking that boxSelectionList.size == 0 on mouserelease without mouseowner and dragselectionthreshold met).
Full selection box externalization would perhaps include things like
DrawBoxSelection
and/or other control callouts, but this does not seem to be a demanded feature (at least that I know).PS: This is already somewhat possible, at least Zero-K and BAR have special logic for selections that in some way or another override the default engine one. However they rely on 1) checking mouse state with
Update
which: is not exactly reliable nor desirable to be used, and at least for BAR is a source of issues and unnecessarily complex code; and 2) nooping or double selecting to ignore engine default.Beta Was this translation helpful? Give feedback.
All reactions