-Expose AngularVelocity, etc directly from MotionControllerComponent.
-Expose AngularVelocity to blueprint as an FRotator.
-Better parameter names and comments for the FVector representation of angular velocity: AngularVelocityAsVectorAndLength. It was quite prone to misuse previously.
-Fixed late update of HMD motion controllers potentially firing when it should not.
-Split the controller poll function into game and render thread versions.
#jira UE-190852
[REVIEW]
#rb Christopher.fiala
[CL 26611565 by jeff fisher in ue5-main branch]
- RHICreate{Vertex, Index, Structured}Buffer
- RHICreate{ShaderResource, UnorderedAccess}View
- RHIUpdateUniformBuffer
- Various initialization / locking methods for helper buffer types in RHIUtilities.h
The goal is to continue to force resource creation through command lists to avoid surprises with moving things off the render thread.
#rb christopher.waters
[CL 26183242 by zach bethel in ue5-main branch]
* Moved dllexport from type to methods/staticvar in all Engine runtime code. This improves compile times, memory and performance in dll builds
[CL 26082269 by henrik karlsson in ue5-main branch]
* Changed type dllexport to method/staticvar dll export. Various changes for code that upgrade script get wrong
[CL 26082043 by henrik karlsson in ue5-main branch]
-Moving much of engine/source/runtime/headmounteddisplay to a plugin mainly to reduce minimum UE executable size and memory use. But this is also nice for organization. The ideal would be to move everything except interfaces used by core engine. VREditor pulling in UMotionControllerComponent is the main blocker at this time. That dependency is expected to go away eventually at which point we can do the rest of this transfer.
-Added dependencies to XRBase plugin or module as necessary, refactored to avoid some dependencies, removed a few unnecessary dependencies.
-Stripped vestigial VR references from a few project templates. Mostly just unused HeadMountedDisplay module refs, but a tiny bit of code from TP_Puzzle.
-Fixed dependency cycle ignores related to MaterialShaderQualitySettings PIEPreviewDeviceProfileSelector and UnrealEd. For reasons I do not understand the HeadMountedDisplay dependency on AugmentedReality was preventing the detection of those, long existent, cycles.
#jira UE-181824
#review
#rb Robert.Srinivasiah
#preflight 642f3cbf4c3ccbbdf1990a1f 6434291c28551807175e1142
[CL 24984065 by Jeff Fisher in ue5-main branch]
-Refactored FXRMotionControllerBase EControllerHand GetControllerOrientationAndPosition and GetControllerTrackingStatus into a new FXRMotionControllerBaseLegacy that only legacy maintenence mode VR plugin motion controllers will derive from. This allows us to make the new preferred api pure virtual and to eliminate implementations of the old deprecated api from plugins still in active development.
-Updated all VR plugins to comply.
-Removed "AnyHand" support from OpenXRHandTracking. We don't support it in the controllers for OpenXR so we shouldn't support it in openxr hand tracking.
#jira UE-180807
#review
#rb Jules.blok
#preflight 64234a29974dfaa53c0dfe9c
[CL 24826104 by Jeff Fisher in ue5-main branch]
-Deprecated in 5.1. OpenXR should be used instead.
-A few instances of the string "SteamVR" remain. In some case we are comparing to the OpenXR Runtime name, which remains correct. In some we are searching input profile paths for SteamVR, which also remains correct. VRScouting is doing the input profile path and then overriding VREditor's view of the xr plugin name, so at first glance VREditor still seems to be using SteamVR, but it actually does not depend on that (That code will likely be further refactored as time goes on).
#jira UE-181471
#preflight 64233be9803cb466e86ad33c
#review
#rb Arciel.Rekman
[CL 24825198 by Jeff Fisher in ue5-main branch]
-Make a copy of the top FLayerData from which we can copy properties if we need to when adding new ones to the stack.
#jira UE-180749
#review-24719870
#rb Arciel.Rekman
#preflight 6418cec13f3d31c94ababa57
[CL 24724793 by Jeff Fisher in ue5-main branch]
xrGetCurrentInteractionProfile returns 0 for the first few frames. If the MotionControllerComponent tries to start the device visualization before xrGetCurrentInteractionProfile has started returning a valid interaction profile the OpenXRAssetManager will return a null static mesh. Receving the callback from OnXRInteractionProfileChanged allows to set the correct static mesh when the correct interaction profile is set.
#jira UE-179774
#rb jeff.fisher
#preflight 6412f1485819afacaf63500f
[CL 24672044 by erica stella in ue5-main branch]
Also adds a new event to allow devs to respond to interaction profile changes.
#jira UE-173980
#rb robert.srinivasiah
#preflight 63d0622cb91ac945f5cb9dce
[CL 23841551 by Jules Blok in ue5-main branch]
Also fixed a bug for which, if SetupFrameQuadLayers_RenderThread was called more than once with GetStereoLayersDirty = true, NativeQuadLayers were recreated from scratch and lost the current state of bUpdateTexture. This led to static swapchains trying to acquire a second image making the app crash.
#jira UE-169283
#rb robert.srinivasiah
#preflight 63cfbf086730a500ffa12ae2
[CL 23833325 by erica stella in ue5-main branch]