refactoring vr code

This commit is contained in:
2019-05-31 23:02:53 +02:00
parent d2a62df5c7
commit 20582dafa8
6 changed files with 138 additions and 117 deletions

View File

@@ -1,16 +1,9 @@
#pragma once
#include "rtt.h"
#include "app.h"
struct ViveController
struct ViveController : public VRController
{
enum class kButton : uint8_t
{
Pad,
Trigger,
Menu,
Grip,
COUNT,
};
enum class kButtonMask : uint64_t
{
TriggerBit = 0x200000000,
@@ -18,20 +11,20 @@ struct ViveController
MenuBit = 0x000000002,
GripBit = 0x000000004,
};
enum class kAction
{
Press,
Release,
};
static std::map<kButton, kButtonMask> m_mask;
std::array<bool, (int)kButton::COUNT> m_buttons;
std::array<bool, (int)kButton::COUNT> m_analog_buttons;
glm::mat4 m_mat;
vr::VRControllerState_t m_state{ 0 };
bool m_valid = false;
glm::vec2 axis(kButton button) const {
glm::vec2 axis(kButton button) const
{
return { m_state.rAxis[(int)button].x, m_state.rAxis[(int)button].y };
}
virtual float get_trigger_value() override
{
return axis(VRController::kButton::Trigger).x;
}
};
struct Vive