public bool GetLastWorldFromHeadPose(out HmdMatrix34 Pose)
        {
            CheckIfUsable();

            using (NativeBuffer buffer = new NativeBuffer(Marshal.SizeOf(typeof(HmdMatrix34))))
            {
                bool result = NativeMethods.VR_Hmd_GetLastWorldFromHeadPose(buffer.UnmanagedMemory);
                Pose = NativeHelpers.ConvertStruct<HmdMatrix34>(buffer.UnmanagedMemory, buffer.UnmanagedSize);

                return result;
            }
        }
        public bool GetWorldFromHeadPose(float PredictedSecondsFromNow, out HmdMatrix34 Pose, out HmdTrackingResult Result)
        {
            CheckIfUsable();

            using (NativeBuffer buffer = new NativeBuffer(Marshal.SizeOf(typeof(HmdMatrix34))))
            {
                int TempResult = 0;

                bool result = NativeMethods.VR_Hmd_GetWorldFromHeadPose(PredictedSecondsFromNow, buffer.UnmanagedMemory, ref TempResult);
                Pose = NativeHelpers.ConvertStruct<HmdMatrix34>(buffer.UnmanagedMemory, buffer.UnmanagedSize);
                Result = (HmdTrackingResult)TempResult;

                return result;
            }
        }