# ArcRotateCameraPointersInput issue

**URL:** <https://forum.babylonjs.com/t/arcrotatecamerapointersinput-issue/60620>\
**Category:** Bugs\
**Created:** [September 23, 2025, 11:14am UTC](https://forum.babylonjs.com/t/arcrotatecamerapointersinput-issue/60620 "2025-09-23T11:14:08Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Florin\_Dumitru](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/florin_dumitru/32/22899_2.png) [@Florin\_Dumitru](https://forum.babylonjs.com/u/Florin_Dumitru)\
**Post date:** [September 23, 2025, 11:14am UTC](https://forum.babylonjs.com/t/arcrotatecamerapointersinput-issue/60620/1 "2025-09-23T11:14:08Z")

</div>

Hi,

I was working with the **ArcRotateCamera** & **ArcRotateCameraPointersInput** to set it up with advanced pointers control. The issue is that while on desktop it is behaving as expected, on mobile (chrome devtools mobile simulation or actual mobile device) the behavior is broken. See this [playground](https://playground.babylonjs.com/#SRZRWV#2413).

As it can be seen, on mobile devices, the **arcRotateCamera** does no rotate anymore when gestures are provided. This is caused by **ArcRotateCameraPointersInput**. Testing without them, the camera rotates as expected. I also tested with the different parameters like ‘multiTouchPanning‘, ‘multiTouchPanAndZoom’. The main issue seems to be that the **gestures instead of going into rotation, go towards moving the target & zooming**. I believe this is not what was intended when developing this component.

---

<div class="post-metadata">

**Author:** ![Florin\_Dumitru](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/florin_dumitru/32/22899_2.png) [@Florin\_Dumitru](https://forum.babylonjs.com/u/Florin_Dumitru)\
**Post date:** [September 23, 2025, 12:58pm UTC](https://forum.babylonjs.com/t/arcrotatecamerapointersinput-issue/60620/2 "2025-09-23T12:58:17Z")

</div>

After some more testing I found out the **onMultiTouch** event is being called on mobile instead of **onTouch.** Without actually doing the multi touch gesture… I think the issue is in BaseCameraPointersInput.attachControl in one of the 26 if/else clauses.

---

<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:** [September 23, 2025, 2:35pm UTC](https://forum.babylonjs.com/t/arcrotatecamerapointersinput-issue/60620/3 "2025-09-23T14:35:38Z")

</div>

cc @amoebachant

---

<div class="post-metadata">

**Author:** ![amoebachant](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/amoebachant/32/39450_2.png) [@amoebachant](https://forum.babylonjs.com/u/amoebachant)\
**Post date:** [September 23, 2025, 4:40pm UTC](https://forum.babylonjs.com/t/arcrotatecamerapointersinput-issue/60620/4 "2025-09-23T16:40:27Z")

</div>

Looking into it…

---

<div class="post-metadata">

**Author:** ![amoebachant](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/amoebachant/32/39450_2.png) [@amoebachant](https://forum.babylonjs.com/u/amoebachant)\
**Post date:** [September 23, 2025, 6:48pm UTC](https://forum.babylonjs.com/t/arcrotatecamerapointersinput-issue/60620/5 "2025-09-23T18:48:42Z")

</div>

Hi @Florin_Dumitru, I did some debugging and found that you’re right, onMultiTouch is being called, and that’s because this.\_pointA and this.\_pointB both have values, and that’s because two instances of this.\_pointerInput() are being run when you touch the screen. Looking back at the playground you sent, you call both camera.attachControl() and mouseInputs.attachControl(), which is causing this handler to be registered twice. Do you have a scenario where you need to call attachControl on both of those?

Thanks!

---

<div class="post-metadata">

**Author:** ![Florin\_Dumitru](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/florin_dumitru/32/22899_2.png) [@Florin\_Dumitru](https://forum.babylonjs.com/u/Florin_Dumitru)\
**Post date:** [September 24, 2025, 8:23am UTC](https://forum.babylonjs.com/t/arcrotatecamerapointersinput-issue/60620/6 "2025-09-24T08:23:13Z")

</div>

Hi @amoebachant and thanks for testing. I was unaware that camera.attachControl() and mouseInputs.attachControl() create two instances of \_pointerInput. Somehow I thought that the more specialized behavior will override. The use case was to have different inputs attach & detach at different times, but from what I tested now, that works without having to call the general camera.attachControl(). So I guess now it remains to be decided if this edge case should be possible at all or at least be mentioned in the documentation. For my issue, it was resolved by removing camera.attachControl().

---

<div class="post-metadata">

**Author:** ![amoebachant](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/amoebachant/32/39450_2.png) [@amoebachant](https://forum.babylonjs.com/u/amoebachant)\
**Post date:** [September 24, 2025, 7:43pm UTC](https://forum.babylonjs.com/t/arcrotatecamerapointersinput-issue/60620/7 "2025-09-24T19:43:42Z")

</div>

Thanks for the follow up @Florin_Dumitru! I’ll give some thought to deciding if the code should guard against this case or if it should just be documented. Thanks again for the report!
