From e76f1c5937d747b56c82b3cceefe564953c4e38f Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 17 Jan 2017 13:28:13 -0800 Subject: [PATCH] if another avatar has something hung from their camera, don't act like their camera is my camera --- interface/src/avatar/Avatar.cpp | 18 ++++++++---------- interface/src/avatar/MyAvatar.cpp | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index 4a11c06473..44bc57bd90 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -928,11 +928,10 @@ glm::quat Avatar::getAbsoluteJointRotationInObjectFrame(int index) const { return controllerRightHandTransform.getRotation(); } case CAMERA_MATRIX_INDEX: { - bool success; - Transform avatarTransform; - Transform::mult(avatarTransform, getParentTransform(success), getLocalTransform()); - glm::mat4 invAvatarMat = avatarTransform.getInverseMatrix(); - return glmExtractRotation(invAvatarMat * qApp->getCamera()->getTransform()); + // XXX + glm::quat rotation; + _skeletonModel->getAbsoluteJointRotationInRigFrame(getJointIndex("head"), rotation); + return rotation; } default: { glm::quat rotation; @@ -961,11 +960,10 @@ glm::vec3 Avatar::getAbsoluteJointTranslationInObjectFrame(int index) const { return controllerRightHandTransform.getTranslation(); } case CAMERA_MATRIX_INDEX: { - bool success; - Transform avatarTransform; - Transform::mult(avatarTransform, getParentTransform(success), getLocalTransform()); - glm::mat4 invAvatarMat = avatarTransform.getInverseMatrix(); - return extractTranslation(invAvatarMat * qApp->getCamera()->getTransform()); + // XXX + glm::vec3 translation; + _skeletonModel->getAbsoluteJointTranslationInRigFrame(getJointIndex("head"), translation); + return translation; } default: { glm::vec3 translation; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 488752b309..8a1b174188 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2387,6 +2387,13 @@ glm::quat MyAvatar::getAbsoluteJointRotationInObjectFrame(int index) const { glm::mat4 result = computeCameraRelativeHandControllerMatrix(controllerSensorMatrix); return glmExtractRotation(result); } + case CAMERA_MATRIX_INDEX: { + bool success; + Transform avatarTransform; + Transform::mult(avatarTransform, getParentTransform(success), getLocalTransform()); + glm::mat4 invAvatarMat = avatarTransform.getInverseMatrix(); + return glmExtractRotation(invAvatarMat * qApp->getCamera()->getTransform()); + } default: { return Avatar::getAbsoluteJointRotationInObjectFrame(index); } @@ -2413,6 +2420,13 @@ glm::vec3 MyAvatar::getAbsoluteJointTranslationInObjectFrame(int index) const { glm::mat4 result = computeCameraRelativeHandControllerMatrix(controllerSensorMatrix); return extractTranslation(result); } + case CAMERA_MATRIX_INDEX: { + bool success; + Transform avatarTransform; + Transform::mult(avatarTransform, getParentTransform(success), getLocalTransform()); + glm::mat4 invAvatarMat = avatarTransform.getInverseMatrix(); + return extractTranslation(invAvatarMat * qApp->getCamera()->getTransform()); + } default: { return Avatar::getAbsoluteJointTranslationInObjectFrame(index); }