Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
193 stars 9 forks source link

A component based Timeout solution for buttons #2497

Open ProbablePrime opened 3 years ago

ProbablePrime commented 3 years ago

Is your feature request related to a problem? Please describe.

With the rise of Context Menus and other Component based button solutions. There's also a rise in systems that don't really have a method to timeout these interactions.

This can lead to spammed button pushes that are spammed both accidentally and on purpose.

Relevant issues

Somewhat related to: https://github.com/Neos-Metaverse/NeosPublic/issues/799 but we're separating them for clarity

Describe the solution you'd like

A component based solution to introduce a timeout to various button types including:

My initial thought is to handle this within the component by adding an extra field to components(Timeout). Which prevents button events from being created from the button component within timeout seconds. I feel this would be clearer than a separate component that handles it somehow too.

Describe alternatives you've considered

Using Local Impulse Timeout within a LogiX Setup is possible but this issue is more about Component based setups using things like Common UI Interaction components etc.

ukilop commented 3 years ago

Maybe ButtonActionTrigger as well?

ProbablePrime commented 3 years ago

I think it makes more sense to add this to the actual button that triggers components such as that one.

So that the Timeout is setup on the Button(TouchButton or whatever) and it doesn't trigger ActionTrigger/ValueSet/ValueWhatever because it is timedout.

ukilop commented 3 years ago

oh, this is what I get for not reading everything first ;-; so maybe good as place as any to suggest this, can we have a bool related to timeout that is simply "would I be blocked if I tried right now"

this idea branched from the ImpulseTimeout logix node so similar could be applied there as well

chemicalcrux commented 3 years ago

Button events are already a bit of "spooky action at a distance", and allowing for sibling components to affect them would be even spookier.

On the other hand, it would certainly make for less clutter on the individual components, since you wouldn't need an extra Timeout field on everything.