Skip to content

Conversation

@vincentfretin
Copy link
Contributor

Description:
Fix errors when buttons are pressed on Quest 2 controllers before the model is loaded.
I don't have a Quest 2, please someone test the changes.
I tested on Quest 1, I didn't break it. :)

Changes proposed:

…, this fixes Quest 2 buttons highlighting errors when the model is not loaded yet (fix aframevr#5212 and aframevr#5220)
if (!buttonObjects) { return; }
analogValue = evt.detail.state.value;
analogValue *= this.data.hand === 'left' ? -1 : 1;

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thinking this code block doesn't belong here (function should be model agnostic) and probably we should listen to a triggermoved listener event like here:

https://github.com/aframevr/aframe/pull/5223/files#diff-2ee48b207a426377ea32a1749d345fd8c9b1adbe0b9d971eccb7860e1fb41cd2L214

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand what you want to change here. onButtonChangedV3 is called from onButtonChanged that is a listener of buttonchanged already. If you have a refactoring in mind, you should probably merge this PR first and do a refactoring in another PR?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line https://github.com/aframevr/aframe/pull/5223/files#diff-2ee48b207a426377ea32a1749d345fd8c9b1adbe0b9d971eccb7860e1fb41cd2R343 if (!buttonObjects) { return; } is needed because the model is accessed here https://github.com/aframevr/aframe/pull/5223/files#diff-2ee48b207a426377ea32a1749d345fd8c9b1adbe0b9d971eccb7860e1fb41cd2R352 to update the trigger / grip. Those updates should be done in a different method than clickButtons that should remain model agnostic.

My proposal is that this check should not be necessary https://github.com/aframevr/aframe/pull/5223/files#diff-2ee48b207a426377ea32a1749d345fd8c9b1adbe0b9d971eccb7860e1fb41cd2R343 and grip / trigger and button should be updated in a separate method similar to how we do with thumbstick in onThumbStickMoved

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alternatively move the logic to updateButtonModel. Goal is to consolidate model updates in fewer places. Less redundant checks and easier to maintain.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clickButtons is not a method, it's just an array, I think you meant onButtonChangedV3 here?
onThumbstickMoved is for thumbstickmoved event
onButtonChange/onButtonChangedV3 is for buttonchanged event.
onThumbstickMoved and onButtonChange have similar check for buttonMeshes.
You probably want to keep a separate listener for each event, right?
You want to remove onButtonChangedV3 and put the code back to onButtonChange and slightly refactor it, not sure what can be refactored exactly though? Is that what you want?
Or simply do the if (buttonMeshes) check before calling this.onButtonChangedV3(evt) and remove it from onButtonChangedV3?. I'll do the latter that in a commit now.

updateButtonModel is called from updateModel which is called by onButtonEvent, used to define listeners onButtonDown onButtonUp onButtonTouchStart onButtonTouchEnd, but not for onButtonChanged currently, not sure what is particular about it currently and if we can define onButtonChanged to use onButtonEvent instead and move all the current logic of onButtonChanged/onButtonChangedV3 to updateButtonModel. If this is what you want, I really prefer we do it in a separate PR, because it's not a trivial change, I don't want to break anything in this PR.

@vincentfretin
Copy link
Contributor Author

I tried to put the condition in onButtonChanged but I got a failing test

 oculus-touch-controls
    buttonchanged
      ✖ can emit triggerchanged

I thought it was a simple change though I don't understand why it failed. I reverted it.
Feel free to merge it as is or not. I'll try doing a refactor in two weeks maybe, not right now.

@vincentfretin
Copy link
Contributor Author

@dmarcos you should merge it really, it's a minimal set of changes to fix the errors of the two linked issues.
I don't know when I'll have the time to do a refactoring like you suggested, but I think it should be in a separate PR anyway.

@dmarcos dmarcos merged commit 14a882d into aframevr:master Mar 30, 2023
@dmarcos
Copy link
Member

dmarcos commented Mar 30, 2023

Super thanks!

@vincentfretin vincentfretin deleted the fix-quest2-buttons branch March 31, 2023 07:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants