From 857a4ab739bb335a420f9d87779b9a5e57dba87a Mon Sep 17 00:00:00 2001 From: Angus Antley Date: Wed, 3 Apr 2019 13:04:55 -0700 Subject: [PATCH] enabled MyAvatar.get and .set rotation --- libraries/avatars/src/AvatarData.cpp | 5 ++--- libraries/avatars/src/AvatarData.h | 19 +++++++++++-------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index a2b0b808ba..08f65b6d6a 100755 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -1721,7 +1721,6 @@ glm::vec3 AvatarData::getJointTranslation(const QString& name) const { // on another thread in between the call to getJointIndex and getJointTranslation // return getJointTranslation(getJointIndex(name)); return readLockWithNamedJointIndex(name, [this](int index) { - return _jointData.at(index).translation; return getJointTranslation(index); }); } @@ -1809,8 +1808,8 @@ glm::quat AvatarData::getJointRotation(const QString& name) const { // Can't do this, not thread safe // return getJointRotation(getJointIndex(name)); - return readLockWithNamedJointIndex(name, [&](int index) { - return _jointData.at(index).rotation; + return readLockWithNamedJointIndex(name, [this](int index) { + return getJointRotation(index); }); } diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index caa1f9f892..2eb5e28eea 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -1750,14 +1750,14 @@ protected: template T readLockWithNamedJointIndex(const QString& name, const T& defaultValue, F f) const { - int index = getFauxJointIndex(name); - QReadLocker readLock(&_jointDataLock); - - // The first conditional is superfluous, but illustrative - if (index == -1 || index < _jointData.size()) { + int index = getJointIndex(name); + if (index == -1) { + index = getFauxJointIndex(name); + } + if (index == -1) { return defaultValue; } - + QReadLocker readLock(&_jointDataLock); return f(index); } @@ -1768,11 +1768,14 @@ protected: template void writeLockWithNamedJointIndex(const QString& name, F f) { - int index = getFauxJointIndex(name); - QWriteLocker writeLock(&_jointDataLock); + int index = getJointIndex(name); + if (index == -1) { + index = getFauxJointIndex(name); + } if (index == -1) { return; } + QWriteLocker writeLock(&_jointDataLock); if (_jointData.size() <= index) { _jointData.resize(index + 1); }