MobileVR: Orientation is progressive and needs to be initialized #91305
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Somewhere in converting our native mobile implementation from Godot 3 to Godot 4 we broke the orientation logic.
Orientation
used to be a member variable which is cumulative, either mixing in new magneto data or adjusting with gyro data.In the new logic
orientation
is a local variable that is not initialised and we lost this cumulation of values. As we store the new orientation in the head transform, we can initialise our variable with this value as well.Tested on Pixel 6 and works fine on that now.
This fixes the orientation issue reported in #89755
I could not reproduce the flickering issue reported in that same issue, however I believe that may be a Qualcomm issue, or something entirely unrelated.
This PR also does not address:
Test project, works both on desktop (but without the gyro) and on mobile (though no inputs to move, just for testing orientation):
TestMobileVR.zip