# PlaneRotationGizmo - use rotation if quaternion is null

**URL:** <https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792>\
**Category:** Feature requests\
**Created:** [July 28, 2019, 7:15pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792 "2019-07-28T19:15:51Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![aWeirdo](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/aweirdo/32/52_2.png) [@aWeirdo](https://forum.babylonjs.com/u/aWeirdo)\
**Post date:** [July 28, 2019, 7:15pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/1 "2019-07-28T19:15:51Z")

</div>

Hey guys,  
Could we update PlaneRotationGizmo to use mesh.rotation if no quaternion is set?  
Currently it forces a change to use mesh.rotationQuaternion.

> <https://github.com/BabylonJS/Babylon.js/blob/master/src/Gizmos/planeRotationGizmo.ts#L103>

To avoid issues with back-compat,  
perhaps a (parent) RotationGizmo.useQuaternion property (default true) which switches to a different dragBehavior function for each child gizmo when changed ?

…and if you’re unaware of this (like me) and mindlessly use mesh.rotation in the rest of your code, it bugs out and you spend an hour wondering what’s going on 🤔 … while thinking it looks perfectly fine and should work 😄

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [July 29, 2019, 4:34pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/2 "2019-07-29T16:34:52Z")

</div>

Pinging @Cedric

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [July 29, 2019, 5:05pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/3 "2019-07-29T17:05:47Z")

</div>

I’m taking a look

---

<div class="post-metadata">

**Author:** ![aWeirdo](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/aweirdo/32/52_2.png) [@aWeirdo](https://forum.babylonjs.com/u/aWeirdo)\
**Post date:** [July 29, 2019, 8:56pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/4 "2019-07-29T20:56:55Z")

</div>

cool, thanks! 🙂

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [July 29, 2019, 9:15pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/5 "2019-07-29T21:15:33Z")

</div>

Hi @aWeirdo  
I’m not sure about the change. Correct me if I’m wrong: I guess your tried to read back mesh.rotation after doing some rotation using the gizmo and it was out of sync?  
If it’s what happen, I’d prefer add a synchronization system to update mesh.rotation from the quaternion instead of changing the gizmo to work on euler.

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [July 29, 2019, 10:11pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/6 "2019-07-29T22:11:33Z")

</div>

I did a simple change to always use the Euler angle here when an option constructor Boolean is set to true:  
‘’’

> <https://github.com/BabylonJS/Babylon.js/blob/master/src/Gizmos/planeRotationGizmo.ts#L104>

  
‘’’

I keep the calculation with the quaternion and set back the Euler angle here :  
‘’’

> <https://github.com/BabylonJS/Babylon.js/blob/master/src/Gizmos/planeRotationGizmo.ts#L178>

  
‘’’

But the Mesh.rotationQuaternion is not updated once you change the Mesh.rotation with code. Only the Quaternion to Euler works when using the Gizmo. So the 2 rotations are out of sync. Which might not be what you want ?

---

<div class="post-metadata">

**Author:** ![aWeirdo](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/aweirdo/32/52_2.png) [@aWeirdo](https://forum.babylonjs.com/u/aWeirdo)\
**Post date:** [July 30, 2019, 12:11am UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/7 "2019-07-30T00:11:03Z")

</div>

Hi @Cedric  
Thank you, i think this could work.  
I only have my phone atm, but i’ll look at it tomorrow.

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [July 30, 2019, 12:12am UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/8 "2019-07-30T00:12:17Z")

</div>

Great! Then, I’ll do a PR if that’s what you need. 🙂

---

<div class="post-metadata">

**Author:** ![aWeirdo](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/aweirdo/32/52_2.png) [@aWeirdo](https://forum.babylonjs.com/u/aWeirdo)\
**Post date:** [July 31, 2019, 4:58pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/9 "2019-07-31T16:58:24Z")

</div>

Hi @Cedric, I apologize for my poor responsiveness, busy few days.  
Did you make any progress on this? 🙂 i was unable to find a PR.

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [July 31, 2019, 4:59pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/10 "2019-07-31T16:59:55Z")

</div>

Hi @aWeirdo

I’m making the PR today

---

<div class="post-metadata">

**Author:** ![aWeirdo](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/aweirdo/32/52_2.png) [@aWeirdo](https://forum.babylonjs.com/u/aWeirdo)\
**Post date:** [July 31, 2019, 5:04pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/11 "2019-07-31T17:04:02Z")

</div>

ok.  
I made a local fix which i just updated & threw in a PG, as i was unsure if you had gotten around to it yet 🙂 not fully back-compat.

[https://playground.babylonjs.com/#E7GCJK](https://playground.babylonjs.com/#E7GCJK)

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [July 31, 2019, 6:32pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/12 "2019-07-31T18:32:13Z")

</div>

Here is the PR:

> <https://github.com/BabylonJS/Babylon.js/pull/6652>

---

<div class="post-metadata">

**Author:** ![Cedric](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/cedric/32/2742_2.png) [@Cedric](https://forum.babylonjs.com/u/Cedric)\
**Post date:** [July 31, 2019, 8:47pm UTC](https://forum.babylonjs.com/t/planerotationgizmo-use-rotation-if-quaternion-is-null/4792/13 "2019-07-31T20:47:57Z")

</div>

@aWeirdo It’s merged. It will be in nightly tomorrow
