EControllerHand (Hand on motion controllers) has been removed by Epic and replaced with an FName titles MotionSource.
They however still use EControllerHand on the back end everywhere with a utility function that they did not expose to blueprint. So I have added GetHandType (in motion controllers) and GetHandTypeFromMotionSourceName (In function library) to fill the gap.
Wherever the blueprints were getting the controllers Hand variable from I now added a call to GetHandType in the template. Others will want to do the same.
Also! Since they changed the variable type, all existed blueprints will have the value reset to default, you will need to go in and set RightHand controllers back to Right everywhere in BP as they are now Left.
HMD types have been renamed slightly, you will need to re-link the oculus and psvr enum outputs from the GetHMDType node if you switch on it like the template does.
Epic has moved over to a new ScreenPercentage for VR, now you want to leave ScreenPercentage as 100 and set VR.PixelDensity up or down from 1.0f to effect supersampling instead.
Rotate Around Pivot
This node has been changed to a callable one instead of a pure one, this is to avoid it being called twice when getting its two seperate outputs. You will need to link it inline with the execution line where you use it. The template only uses this in one location (teleport) and it needs re-linked in there.
This node has been changed to a callable one instead of a pure one. This is because it returns two variables and as pure was being accessed multiple times. You will need to link it inline where it is being used.
OpenVR functions have been re-written to use device indexes directly instead of going through enums for it. The new lighthouses 2.0 can inflate the expected indexes of controllers and trackers and the tracker/controller connection order is not guaranteed. This way enforces checking for a specific index by type instead of guessing or assuming the enum is correct.
Epics indexes should also work 1:1 with it.
FPS Test pawns
I converted the VRcharacter over to a server authoritive rotation model early on in 4.19. If you are using FPS pawns for testing or need the legacy "Trust the client" rotation model then you need to set bUseClientControlRotation to true in the VRCharacterMovementComponent.