3D widget is very useful to build a scene with runtime font, multiple child widgets… But I have problem about interaction with these widgets, in VR.
I’ve found current interaction, like mouse over and mouse click, is based on desktop’s cursor position, I doubt it would work in VR, especially without desktop window, only VR application exist.
Is there any tips? I really hate methods like manually placing collision bodies to make widgets “interactive”.
You are in luck… watch my tutorials. You need 4.13 though: 4.13/4.14 Widget Interaction Component - YouTube
Or you can use Mitch’s UMGInteraction Plugin, which is compatible with 4.11/4.12:
No problem! Don’t forget to mark it Answered!
I am using 4.11 so I just download Mitch’s plugin, it worked!
Really thank you very much, you make my life much easier!
I still have problems.
After “::ShowWindow((::HWND)GEngine->GameViewport->GetWindow()->GetNativeWindow()->GetOSWindowHandle(), false)”, the interaction is far from perfect. Only “pressed” and “released” event is available for button, while “clicked”, “hovered”, “unhovered” never get fired.
I have made some hack and get inputs directly from steam vr plugin, so at least I got “pressed” and “released”. But I still want a perfect interaction with 3D widget if posssible, can you help me?
Does your tutorial fix these problems or any ideas is appreciated!!!
I found a workaround to fix most of problems. There is a ‘bAppIsActive’ in FSlateApplication, after window got hidden, this variable would turn to false and block mouse capturing. Adding a new variable like bHMDIsActive world fix that.
Besides, ‘hover’/‘unhover’ still are not fired. For Mitch’s plugin, I think add another two emulators to call SWidget’s OnMouseEnter/OnMouseLeave world be good, hope that should be good enough for me.
I am not familiar with input event routing. Thanks again for inspiring!