mirror of
https://github.com/CrispyPin/sinpin-vr.git
synced 2025-04-08 03:13:59 +02:00
62 lines
1.6 KiB
C
62 lines
1.6 KiB
C
#pragma once
|
|
|
|
#include "../openvr/openvr.h"
|
|
#include <glm/glm.hpp>
|
|
|
|
typedef vr::TrackedDeviceIndex_t TrackerID;
|
|
typedef vr::VROverlayHandle_t OverlayID;
|
|
typedef vr::HmdMatrix34_t VRMat;
|
|
|
|
const VRMat VRMatIdentity{{{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}}};
|
|
const int MAX_TRACKERS = vr::k_unMaxTrackedDeviceCount;
|
|
|
|
inline void PrintVec(glm::vec3 v)
|
|
{
|
|
printf("(%.2f, %.2f, %.2f)\n", v.x, v.y, v.z);
|
|
}
|
|
|
|
inline void PrintMat(VRMat m)
|
|
{
|
|
printf("[%.2f, %.2f, %.2f, %.2f]\n", m.m[0][0], m.m[0][1], m.m[0][2], m.m[0][3]);
|
|
printf("[%.2f, %.2f, %.2f, %.2f]\n", m.m[1][0], m.m[1][1], m.m[1][2], m.m[1][3]);
|
|
printf("[%.2f, %.2f, %.2f, %.2f]\n", m.m[2][0], m.m[2][1], m.m[2][2], m.m[2][3]);
|
|
}
|
|
|
|
inline void PrintMat(glm::mat4x4 m)
|
|
{
|
|
printf("[%.2f, %.2f, %.2f, %.2f]\n", m[0][0], m[0][1], m[0][2], m[0][3]);
|
|
printf("[%.2f, %.2f, %.2f, %.2f]\n", m[1][0], m[1][1], m[1][2], m[1][3]);
|
|
printf("[%.2f, %.2f, %.2f, %.2f]\n", m[2][0], m[2][1], m[2][2], m[2][3]);
|
|
printf("[%.2f, %.2f, %.2f, %.2f]\n", m[3][0], m[3][1], m[3][2], m[3][3]);
|
|
}
|
|
|
|
inline glm::mat4x4 ConvertMat(VRMat mat)
|
|
{
|
|
auto m = mat.m;
|
|
return glm::mat4x4(
|
|
m[0][0], m[1][0], m[2][0], 0,
|
|
m[0][1], m[1][1], m[2][1], 0,
|
|
m[0][2], m[1][2], m[2][2], 0,
|
|
m[0][3], m[1][3], m[2][3], 1);
|
|
}
|
|
|
|
inline VRMat ConvertMat(glm::mat4x4 m)
|
|
{
|
|
// clang-format off
|
|
return VRMat{{
|
|
{m[0][0], m[1][0], m[2][0], m[3][0]},
|
|
{m[0][1], m[1][1], m[2][1], m[3][1]},
|
|
{m[0][2], m[1][2], m[2][2], m[3][2]}
|
|
}};
|
|
// clang-format on
|
|
}
|
|
|
|
inline glm::vec3 GetPos(glm::mat4x4 mat)
|
|
{
|
|
return glm::vec3(mat[3][0], mat[3][1], mat[3][2]);
|
|
}
|
|
|
|
inline glm::vec3 GetPos(VRMat mat)
|
|
{
|
|
return glm::vec3(mat.m[0][3], mat.m[1][3], mat.m[2][3]);
|
|
}
|