Visible with console command “Stat Slate”, the ProcessMouseMoveEvent of Slate slows down FPS to a crawl on relatively simple UserWidgets.
with a “Relatively simple UserWidget” I mean for example a game main menu containing lists of setting UserWidgets for the graphics, audio, anything you’d expect from a modern game.
Surprisingly, during mouse movement, Slate seems to go through a set of logic for every widget in the hierarchy, even if they are removed from the screen (RemoveFromParent), invisible, or not hit testable.
This means if you open and remove your UserWidget menu rapidly, Slate will crawl until the UserWidgets are garbage collected.
Why does Slate behave like this, as it is in my opinion unacceptable for any serious game project. Can ProcessMouseMoveEvent be avoided entirely during a lifetime stage of a UserWidget?