IsPointerBlocker Improvement

It appears that the GUI.Control.isPointerBlocker flag only allows one to stop pointer events from propagating through the scene. I’m curious why this doesn’t also stop the pointer events from propagating up the GUI control hierarchy. Perhaps even better would be another flag that separately controlled this (e.g., GUI.Control.isPointerGUIBlocker).

I’ve also noticed some other odd behavior with this flag. E.g., if I have code that “drag” animates a control with the mouse pointer, and which disables the scene’s pointer events via isPointerBlocker, I get a very noticeable slowdown in performance. (If anything, wouldn’t one expect an improvement in performance here?)

Additionally, I said “propagating up the control hierarchy” because that is indeed what seems to be happening. Mouse events activated by a control seemed to get passed on to its ancestors - regardless of their positions. (I.e., the “parent” control will receive the mouse event triggered by its child even when the mouse pointer isn’t actually positioned within the parent.) You can see that here:
https://playground.babylonjs.com/#0108NG#345 . This doesn’t really seem optimal.

If I got anything wrong here (or I am simply missing the reasons for the current design) I would be grateful for the correction. If not, perhaps this behavior could be improved?

cc @RaananW, @carolhmj and @DarraghBurke :wink: