Conversation
For reasons I haven't yet determined, we occasionally get bActive == false back from openvr for a few frames when overlays become invisible (I think?). This causes us to clear and immediately (a frame later) re-set the input on the tracker, making it look like the user double-pressed the button. Not setting the input at all when the action is inactive matches the logic for the other types of inputs and fixes the double-press. I will continue to investigate _why_ this is sent, in case it's a bug with our action set handling, but I monitored the state we send into openvr and we're never accidentally deactivating sets that I can see.
|
I added some terrible logging to visualize the order of events. In my current project I have a binding that just toggles the If I point the controller away from the overlay before closing it, this inactive state doesn't occur. I also ruled out anything except the overlay being hidden by removing my code to set it invisible. Clicking the button while pointed at the overlay but not actually hiding it also does not trigger the inactive state. |
|
I also noticed while fumbling around that hiding the overlay triggers a bunch of VREvent_ChaperoneFlushCache, so maybe the action sets also get reset on purpose? |
|
Sadly no clue, it's been a long time since I last used OpenVRs version of the action map. OpenXRs actionmap has some weird gotchas around priority order, something like that may be effecting things? You would think the action map works independently from other systems... |
This is a weird one.
For reasons I haven't yet determined, we occasionally get
bActive == falseback from openvr for a few frames when overlays become invisible (I think?), but only if the overlay intersects the laser when hidden. This doesn't make any sense at all which makes me suspect we have a bug somewhere else, but I can't find it. I monitored the state we send into openvr and we're never accidentally deactivating sets that I can see.In any case, this situation causes us to clear and immediately (a frame later) re-set the input on the tracker, making it look like the user double-pressed the button. Not setting the input at all when the action is inactive matches the logic for the other types of inputs and fixes the double-press.
I will continue to investigate why this is sent. (cc @BastiaanOlij in case you remember anything surrounding this while originally adding the action set support.)