Ensure a-entity rotation Euler has YXZ order even without rotation component #5513
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.
Description:
When using the
rotation
component the order isYXZ
as set by the component. When setting rotation programmatically the recommended approach is directly throughObject3D.rotation
(docs). It's implied that the following two behave the same:However, this is only the case if the element has had a
rotation
component before. Otherwise the user would have to explicitly set or pass the order. For consistency this PR sets the euler order upon entity creation, avoiding the issue.Example Glitch showing the inconsistency: https://glitch.com/edit/#!/mud-grateful-haze
Also noticed a small optimization opportunity. The
rotation
component sets the order separately, which actually invokes a setter that triggers a recalculation of the correspondingObject3D.quaternion
. TheEuler.set
method actually allows the order to be passed as well, preventing this redundant calculation.Changes proposed: