public void SetHandPresence(Hand p_hand, bool p_state, GlmSharp.vec3 p_tipPos) { switch (p_hand) { case Hand.Left: { m_leftHandOverlay.SetHandPresence(p_state, p_tipPos); Valve.VR.HmdMatrix34_t l_matrix = new Valve.VR.HmdMatrix34_t(); (m_headTransform * GlmSharp.mat4.Translate(p_tipPos)).Convert(ref l_matrix); Valve.VR.OpenVR.Overlay.SetOverlayTransformAbsolute(m_leftFingerOverlay, Valve.VR.ETrackingUniverseOrigin.TrackingUniverseRawAndUncalibrated, ref l_matrix); } break; case Hand.Right: { m_rightHandOverlay.SetHandPresence(p_state, p_tipPos); Valve.VR.HmdMatrix34_t l_matrix = new Valve.VR.HmdMatrix34_t(); (m_headTransform * GlmSharp.mat4.Translate(p_tipPos)).Convert(ref l_matrix); Valve.VR.OpenVR.Overlay.SetOverlayTransformAbsolute(m_rightFingerOverlay, Valve.VR.ETrackingUniverseOrigin.TrackingUniverseRawAndUncalibrated, ref l_matrix); } break; } }
public static void Convert(this GlmSharp.mat4 p_src, ref Valve.VR.HmdMatrix34_t p_dst) { p_dst.m0 = p_src.m00; p_dst.m1 = p_src.m10; p_dst.m2 = p_src.m20; p_dst.m3 = p_src.m30; p_dst.m4 = p_src.m01; p_dst.m5 = p_src.m11; p_dst.m6 = p_src.m21; p_dst.m7 = p_src.m31; p_dst.m8 = p_src.m02; p_dst.m9 = p_src.m12; p_dst.m10 = p_src.m22; p_dst.m11 = p_src.m32; }
public static void Convert(this Valve.VR.HmdMatrix34_t p_src, ref GlmSharp.mat4 p_dst) { p_dst.m00 = p_src.m0; p_dst.m01 = p_src.m4; p_dst.m02 = p_src.m8; p_dst.m03 = 0f; p_dst.m10 = p_src.m1; p_dst.m11 = p_src.m5; p_dst.m12 = p_src.m9; p_dst.m13 = 0f; p_dst.m20 = p_src.m2; p_dst.m21 = p_src.m6; p_dst.m22 = p_src.m10; p_dst.m23 = 0f; p_dst.m30 = p_src.m3; p_dst.m31 = p_src.m7; p_dst.m32 = p_src.m11; p_dst.m33 = 1f; }
public Pose(Valve.VR.HmdMatrix34_t pose) { var m = Matrix4x4.identity; m[0, 0] = pose.m0; m[0, 1] = pose.m1; m[0, 2] = -pose.m2; m[0, 3] = pose.m3; m[1, 0] = pose.m4; m[1, 1] = pose.m5; m[1, 2] = -pose.m6; m[1, 3] = pose.m7; m[2, 0] = -pose.m8; m[2, 1] = -pose.m9; m[2, 2] = pose.m10; m[2, 3] = -pose.m11; pos = m.GetPosition(); rot = m.GetRotation(); }