GameObject Input Event Priority

I have multiple overlapping elements with various pointermove/pointerup/pointerdown events that need to be managed. An issue I encountered was that when I assigned a pointermove listener to an object, and then the pointer drags over an object with higher depth, the higher depth object eats the event and the pointermove stops firing for the lower object. I need to be able to manage this event priority.

In Phaser 2 it looks like this was very simple and easy with the use of gameobject.input.priorityId:

However apparently in Phaser 3 this feature was removed? This property no longer exists and I can’t find any examples or documentation on a replacement.

Currently I am using a workaround where I increase the lower object’s depth on pointerdown and revert it back on pointerup. But imo this is a very risky approach which 1) is asking for instability and bugs 2) would not work in all circumstances and 3) seems to have side-effects (once the setDepth is called, and the depthsort event is fired internally, something happens to the internal state of the game object and even on reverting it back to depth = 0, it does not fully return to its “unsorted” state, causing me to force it to negative depth to return to it’s lower depth)

What is the intended approach for managing input priority in Phaser 3? I’ve spent a lot of time looking around and investigating but I can’t find anything.


this.input.on('pointermove', function (pointer, currentlyOver) {
  const gameObjects = currentlyOver.slice().sort(f);
  // …