From 0333adb95badf8fe884722e12b00b39405e4afa5 Mon Sep 17 00:00:00 2001 From: Sam Gondelman Date: Wed, 1 Jul 2015 18:46:57 -0700 Subject: [PATCH] moved controllers to input-plugins, they work now --- interface/src/Application.cpp | 2 +- .../openvr/OpenVrDisplayPlugin.cpp | 10 ++++++---- .../input-plugins}/ViveControllerManager.cpp | 19 +++++++++---------- .../input-plugins}/ViveControllerManager.h | 2 +- 4 files changed, 17 insertions(+), 16 deletions(-) rename libraries/{display-plugins/src/display-plugins/openvr => input-plugins/src/input-plugins}/ViveControllerManager.cpp (95%) rename libraries/{display-plugins/src/display-plugins/openvr => input-plugins/src/input-plugins}/ViveControllerManager.h (97%) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index e12dee4c60..7293de3dee 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -64,7 +64,6 @@ #include #include #include -#include #include #include #include @@ -124,6 +123,7 @@ #include "devices/RealSense.h" #include "devices/SDL2Manager.h" #include "devices/MIDIManager.h" +#include #include "RenderDeferredTask.h" #include "scripting/AccountScriptingInterface.h" #include "scripting/AudioDeviceScriptingInterface.h" diff --git a/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp index 3c40c7b1ff..2fb21212ac 100644 --- a/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/openvr/OpenVrDisplayPlugin.cpp @@ -29,10 +29,10 @@ const QString & OpenVrDisplayPlugin::getName() const { return NAME; } -static vr::IVRSystem *_hmd{ nullptr }; +vr::IVRSystem *_hmd{ nullptr }; static vr::IVRCompositor* _compositor{ nullptr }; -static vr::TrackedDevicePose_t _trackedDevicePose[vr::k_unMaxTrackedDeviceCount]; -static mat4 _trackedDevicePoseMat4[vr::k_unMaxTrackedDeviceCount]; +vr::TrackedDevicePose_t _trackedDevicePose[vr::k_unMaxTrackedDeviceCount]; +mat4 _trackedDevicePoseMat4[vr::k_unMaxTrackedDeviceCount]; static uvec2 _windowSize; static ivec2 _windowPosition; static uvec2 _renderTargetSize; @@ -158,7 +158,9 @@ void OpenVrDisplayPlugin::finishFrame() { // swapBuffers(); doneCurrent(); _compositor->WaitGetPoses(_trackedDevicePose, vr::k_unMaxTrackedDeviceCount); - _trackedDevicePoseMat4[0] = toGlm(_trackedDevicePose[0].mDeviceToAbsoluteTracking); + for (int i = 0; i < vr::k_unMaxTrackedDeviceCount; i++) { + _trackedDevicePoseMat4[i] = toGlm(_trackedDevicePose[i].mDeviceToAbsoluteTracking); + } openvr_for_each_eye([&](vr::Hmd_Eye eye) { _eyesData[eye]._pose = _trackedDevicePoseMat4[0]; }); diff --git a/libraries/display-plugins/src/display-plugins/openvr/ViveControllerManager.cpp b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp similarity index 95% rename from libraries/display-plugins/src/display-plugins/openvr/ViveControllerManager.cpp rename to libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp index 26c23af002..149301fe48 100644 --- a/libraries/display-plugins/src/display-plugins/openvr/ViveControllerManager.cpp +++ b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp @@ -11,11 +11,10 @@ #include "ViveControllerManager.h" -#include #include -#include "OpenVrDisplayPlugin.h" -#include "OpenVrHelpers.h" +//#include +#include #include "UserActivityLogger.h" extern vr::IVRSystem *_hmd; @@ -74,14 +73,14 @@ void ViveControllerManager::update() { } const mat4& mat = _trackedDevicePoseMat4[unTrackedDevice]; - + handlePoseEvent(mat, trackedControllerCount - 1); // handle inputs - vr::VRControllerState_t* controllerState; - if(_hmd->GetControllerState(unTrackedDevice, controllerState)) { - - } + //vr::VRControllerState_t* controllerState; + //if(_hmd->GetControllerState(unTrackedDevice, controllerState)) { + // + //} } @@ -130,7 +129,7 @@ void ViveControllerManager::handleButtonEvent(unsigned int buttons, int index) { void ViveControllerManager::handlePoseEvent(const mat4& mat, int index) { glm::vec3 position(mat[3][0], mat[3][1], mat[3][2]); glm::quat rotation = glm::quat_cast(mat); - rotation = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)) * rotation; + //rotation = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)) * rotation; _poseStateMap[makeInput(JointChannel(index)).getChannel()] = UserInputMapper::PoseValue(position, rotation); } @@ -141,7 +140,7 @@ void ViveControllerManager::registerToUserInputMapper(UserInputMapper& mapper) { auto proxy = UserInputMapper::DeviceProxy::Pointer(new UserInputMapper::DeviceProxy("SteamVR Controller")); proxy->getButton = [this] (const UserInputMapper::Input& input, int timestamp) -> bool { return this->getButton(input.getChannel()); }; proxy->getAxis = [this] (const UserInputMapper::Input& input, int timestamp) -> float { return this->getAxis(input.getChannel()); }; - proxy->getPose = [this] (const UserInputMapper::Input& input, int timestamp) -> UserInputMapper::PoseValue { return this->getPose(input.getChannel()); } + proxy->getPose = [this](const UserInputMapper::Input& input, int timestamp) -> UserInputMapper::PoseValue { return this->getPose(input.getChannel()); }; proxy->getAvailabeInputs = [this] () -> QVector { QVector availableInputs; // availableInputs.append(UserInputMapper::InputPair(makeInput(BUTTON_0, 0), "Left Start")); diff --git a/libraries/display-plugins/src/display-plugins/openvr/ViveControllerManager.h b/libraries/input-plugins/src/input-plugins/ViveControllerManager.h similarity index 97% rename from libraries/display-plugins/src/display-plugins/openvr/ViveControllerManager.h rename to libraries/input-plugins/src/input-plugins/ViveControllerManager.h index bda0fa5f6f..f780bd0671 100644 --- a/libraries/display-plugins/src/display-plugins/openvr/ViveControllerManager.h +++ b/libraries/input-plugins/src/input-plugins/ViveControllerManager.h @@ -17,7 +17,7 @@ #include -#include +#include "UserInputMapper.h" class ViveControllerManager : public QObject { Q_OBJECT