From 0508091130fff5b0c155d75989cfee49a22d2219 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Tue, 3 Nov 2015 11:37:57 -0800 Subject: [PATCH] Rebase fixes --- interface/src/avatar/AvatarActionHold.cpp | 23 ++++++++------- .../input-plugins/ViveControllerManager.cpp | 29 ++++++++++--------- .../src/input-plugins/ViveControllerManager.h | 8 +++-- libraries/script-engine/src/ScriptEngine.cpp | 8 ++--- libraries/script-engine/src/ScriptEngine.h | 2 +- 5 files changed, 38 insertions(+), 32 deletions(-) diff --git a/interface/src/avatar/AvatarActionHold.cpp b/interface/src/avatar/AvatarActionHold.cpp index b6e3ea408f..767c60defe 100644 --- a/interface/src/avatar/AvatarActionHold.cpp +++ b/interface/src/avatar/AvatarActionHold.cpp @@ -37,17 +37,18 @@ AvatarActionHold::~AvatarActionHold() { } #include #include +#include void AvatarActionHold::updateActionWorker(float deltaTimeStep) { bool gotLock = false; glm::quat rotation; glm::vec3 position; std::shared_ptr holdingAvatar = nullptr; - + gotLock = withTryReadLock([&]{ QSharedPointer avatarManager = DependencyManager::get(); AvatarSharedPointer holdingAvatarData = avatarManager->getAvatarBySessionID(_holderID); holdingAvatar = std::static_pointer_cast(holdingAvatarData); - + if (holdingAvatar) { glm::vec3 offset; glm::vec3 palmPosition; @@ -70,23 +71,23 @@ void AvatarActionHold::updateActionWorker(float deltaTimeStep) { const glm::quat quarterX = glm::angleAxis(PI / 2.0f, glm::vec3(1.0f, 0.0f, 0.0f)); const glm::quat yFlip = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); palmPosition = translation + rotation * vive->getPosition(index); - palmRotation = rotation * vive->getRotation(index) * yFlip * quarterX * glm::angleAxis(PI, glm::vec3(1.0f, 0.0f, 0.0f)) * glm::angleAxis(PI_OVER_TWO, glm::vec3(0.0f, 0.0f, 1.0f)); + palmRotation = rotation * vive->getRotation(index) * yFlip * quarterX * glm::angleAxis(PI, glm::vec3(1.0f, 0.0f, 0.0f)) * glm::angleAxis(PI_OVER_TWO, glm::vec3(0.0f, 0.0f, 1.0f)); } else #endif - if (_hand == "right") { - palmPosition = holdingAvatar->getRightPalmPosition(); - palmRotation = holdingAvatar->getRightPalmRotation(); - } else { - palmPosition = holdingAvatar->getLeftPalmPosition(); - palmRotation = holdingAvatar->getLeftPalmRotation(); - } + if (_hand == "right") { + palmPosition = holdingAvatar->getRightPalmPosition(); + palmRotation = holdingAvatar->getRightPalmRotation(); + } else { + palmPosition = holdingAvatar->getLeftPalmPosition(); + palmRotation = holdingAvatar->getLeftPalmRotation(); + } rotation = palmRotation * _relativeRotation; offset = rotation * _relativePosition; position = palmPosition + offset; } }); - + if (holdingAvatar) { if (gotLock) { gotLock = withTryWriteLock([&]{ diff --git a/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp index f5863c6ed0..b083d06a2a 100644 --- a/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp +++ b/libraries/input-plugins/src/input-plugins/ViveControllerManager.cpp @@ -223,6 +223,7 @@ void ViveControllerManager::renderHand(const controller::Pose& pose, gpu::Batch& batch.drawIndexed(gpu::TRIANGLES, mesh->getNumIndices(), 0); } +#ifdef Q_OS_WIN glm::vec3 ViveControllerManager::getPosition(int hand) const { const mat4& mat = _trackedDevicePoseMat4[hand ? 3 : 4]; return extractTranslation(mat); @@ -231,6 +232,7 @@ glm::quat ViveControllerManager::getRotation(int hand) const { const mat4& mat = _trackedDevicePoseMat4[hand ? 3 : 4]; return glm::quat_cast(mat); } +#endif void ViveControllerManager::update(float deltaTime, bool jointsCaptured) { #ifdef Q_OS_WIN @@ -278,22 +280,22 @@ void ViveControllerManager::update(float deltaTime, bool jointsCaptured) { //qDebug() << "Trackpad: " << controllerState.rAxis[0].x << " " << controllerState.rAxis[0].y; //qDebug() << "Trigger: " << controllerState.rAxis[1].x << " " << controllerState.rAxis[1].y; for (uint32_t i = 0; i < vr::k_EButton_Max; ++i) { - auto mask = vr::ButtonMaskFromId((vr::EVRButtonId)i); - bool pressed = 0 != (controllerState.ulButtonPressed & mask); + auto mask = vr::ButtonMaskFromId((vr::EVRButtonId)i); + bool pressed = 0 != (controllerState.ulButtonPressed & mask); handleButtonEvent(i, pressed, left); } - for (uint32_t i = 0; i < vr::k_unControllerStateAxisCount; i++) { - auto mask = vr::ButtonMaskFromId((vr::EVRButtonId)(i + vr::k_EButton_Axis0)); - bool pressed = 0 != (controllerState.ulButtonPressed & mask); - if (pressed || true) { - handleAxisEvent(i, controllerState.rAxis[i].x, controllerState.rAxis[i].y, left); - } else { - handleAxisEvent(i, 0.0f, 0.0f, left); - } + for (uint32_t i = 0; i < vr::k_unControllerStateAxisCount; i++) { + auto mask = vr::ButtonMaskFromId((vr::EVRButtonId)(i + vr::k_EButton_Axis0)); + bool pressed = 0 != (controllerState.ulButtonPressed & mask); + if (pressed || true) { + handleAxisEvent(i, controllerState.rAxis[i].x, controllerState.rAxis[i].y, left); + } else { + handleAxisEvent(i, 0.0f, 0.0f, left); + } } } } - + auto userInputMapper = DependencyManager::get(); if (numTrackedControllers == 0) { @@ -412,12 +414,13 @@ void ViveControllerManager::handlePoseEvent(const mat4& mat, bool left) { // Q = (deltaQ * inverse(deltaQForAlignedHand)) * (yFlip * quarterTurnAboutX) float sign = left ? -1.0f : 1.0f; - + const glm::quat quarterX = glm::angleAxis(PI / 2.0f, glm::vec3(1.0f, 0.0f, 0.0f)); const glm::quat yFlip = glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f)); - const glm::quat signedQuaterZ = glm::angleAxis(sign * PI / 2.0f, glm::vec3(0.0f, 0.0f, 1.0f)); + const glm::quat signedQuaterZ = glm::angleAxis(sign * PI / 2.0f, glm::vec3(0.0f, 0.0f, 1.0f)); const glm::quat eighthX = glm::angleAxis(PI / 4.0f, glm::vec3(1.0f, 0.0f, 0.0f)); + const glm::quat rotationOffset = glm::inverse(signedQuaterZ * eighthX) * yFlip * quarterX; const glm::vec3 translationOffset = glm::vec3(sign * CONTROLLER_LENGTH_OFFSET / 2.0f, CONTROLLER_LENGTH_OFFSET / 2.0f, diff --git a/libraries/input-plugins/src/input-plugins/ViveControllerManager.h b/libraries/input-plugins/src/input-plugins/ViveControllerManager.h index ad0474073c..eee6083102 100644 --- a/libraries/input-plugins/src/input-plugins/ViveControllerManager.h +++ b/libraries/input-plugins/src/input-plugins/ViveControllerManager.h @@ -27,8 +27,8 @@ class ViveControllerManager : public InputPlugin, public controller::InputDevice { Q_OBJECT public: - static const QString NAME; - + static const QString NAME; + ViveControllerManager(); // Plugin functions @@ -52,9 +52,11 @@ public: void setRenderControllers(bool renderControllers) { _renderControllers = renderControllers; } - int getNumDevices() const; + +#ifdef Q_OS_WIN glm::vec3 getPosition(int device) const; glm::quat getRotation(int device) const; +#endif private: void renderHand(const controller::Pose& pose, gpu::Batch& batch, int sign); diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 4e53f6e60b..0173009995 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -367,10 +367,10 @@ void ScriptEngine::init() { registerGlobalObject("AnimationCache", DependencyManager::get().data()); qScriptRegisterMetaType(this, animVarMapToScriptValue, animVarMapFromScriptValue); qScriptRegisterMetaType(this, resultHandlerToScriptValue, resultHandlerFromScriptValue); - + // constants globalObject().setProperty("TREE_SCALE", newVariant(QVariant(TREE_SCALE))); - + auto scriptingInterface = DependencyManager::get(); registerGlobalObject("Controller", scriptingInterface.data()); UserInputMapper::registerControllerTypes(this); @@ -706,7 +706,7 @@ void ScriptEngine::run() { } } lastUpdate = now; - + // Debug and clear exceptions hadUncaughtExceptions(*this, _fileNameString); } @@ -1263,4 +1263,4 @@ void ScriptEngine::callEntityScriptMethod(const EntityItemID& entityID, const QS entityScript.property(methodName).call(entityScript, args); } } -} \ No newline at end of file +} diff --git a/libraries/script-engine/src/ScriptEngine.h b/libraries/script-engine/src/ScriptEngine.h index 8ec06dd89d..1ae2aa05ca 100644 --- a/libraries/script-engine/src/ScriptEngine.h +++ b/libraries/script-engine/src/ScriptEngine.h @@ -205,4 +205,4 @@ private: }; -#endif // hifi_ScriptEngine_h \ No newline at end of file +#endif // hifi_ScriptEngine_h