How to get Quaternion Representation of MotionController Rotation Natively?

Hi, I’ve been trying to grab a FQuat instead of an FRotator from the device-agnostic Motion Controller interface, but I can’t get at it. I’m using a Vive, and I ran into floating-point errors with the traditional FRotator representation while trying to make a world-repositioning functionality, also Quats are more intuitive for handling this kind of thing.

In the engine, it appears that for some ungodly reason each headset’s (Oculus and Vive’s) rotation information gets downconverted from an FQuat to a FRotator inside the plumbing from the headset’s plugin out into the device-agnostic interface! Why would this even seem like a good idea? This results in a loss of information along the pipeline! Anyway I’ve tried to remedy it by attempting to access the value directly from the plugin:

	bool RetVal = false;
	int32 ControllerIndex = 0;
	EControllerHand DeviceHand = EControllerHand::Left;
	FVector OutPosition;
	FQuat DeviceOrientation = FQuat::Identity;
	FSteamVRHMD* SteamVRHMD = GetSteamVRHMD();
	if (SteamVRHMD)
	{
		
		RetVal = SteamVRHMD->GetControllerHandPositionAndOrientation(ControllerIndex, DeviceHand, OutPosition, DeviceOrientation);
	}

But then I need to:

#include "SteamVRHMD.h"

Which just doesn’t ever want to include, no matter how I specify the file path to it in the #include. I always get some variation on:

fatal error C1083: Cannot open include file: 'SteamVRHMD.h': No such file or directory

Some help or a bugfix request put in would be absolutely appreciated, this is turning into a huge showstopper in my game.

I’m also having this issue would appreciate a fix for this!

Anyone found the fix yet?

Let me know if this works for you

#include "..\Plugins\Runtime\Steam\SteamVR\Source\SteamVR\Private\SteamVRHMD.h"

I am a complete noob to the C++ implementation links in UDK for now, but as soon as I find the answer I will edit the question.

So, for now I’ve been using

RightHandComponent->GetComponentQuat();

on a MotionControllerComponent instantiated like this:

RightHandComponent = CreateDefaultSubobject<UMotionControllerComponent>(TEXT("RightHand"));
	RightHandComponent->Hand = EControllerHand::Right;
	RightHandComponent->AttachToComponent(VROriginComp, attRules);

And it seems to work pretty well, and I can use it as intended with no issue.