TimerEvent observer not working for VR (OpenXR)

Since you are working in C++, you can very easily determine what’s happening using the debugger. You can add a breakpoint into your callback’s Execute method and see what is calling it when you are not using VR. Probably the feature is just missing from the corresponding VR class and you can implement it by copy pasting it there (or if it is something longer and so you don’t want to duplicate code then you can move the code to some base class and call it from both the non-VR and VR class).