mirror of
https://github.com/overte-org/overte.git
synced 2025-08-07 13:50:35 +02:00
getAvatarHash => withAvatarHash
This commit is contained in:
parent
c2a4aab7c3
commit
7b0b77f4d1
4 changed files with 65 additions and 55 deletions
|
@ -355,5 +355,9 @@ AvatarSharedPointer AvatarManager::getAvatarBySessionID(const QUuid& sessionID)
|
|||
if (sessionID == _myAvatar->getSessionUUID()) {
|
||||
return std::static_pointer_cast<Avatar>(_myAvatar);
|
||||
}
|
||||
return getAvatarHash()[sessionID];
|
||||
AvatarSharedPointer avatar;
|
||||
withAvatarHash([&avatar, &sessionID] (const AvatarHash& hash) {
|
||||
avatar = hash[sessionID];
|
||||
});
|
||||
return avatar;
|
||||
}
|
||||
|
|
|
@ -1018,7 +1018,8 @@ void MyAvatar::updateLookAtTargetAvatar() {
|
|||
const float KEEP_LOOKING_AT_CURRENT_ANGLE_FACTOR = 1.3f;
|
||||
const float GREATEST_LOOKING_AT_DISTANCE = 10.0f;
|
||||
|
||||
foreach (const AvatarSharedPointer& avatarPointer, DependencyManager::get<AvatarManager>()->getAvatarHash()) {
|
||||
DependencyManager::get<AvatarManager>()->withAvatarHash([&] (const AvatarHash& hash) {
|
||||
foreach (const AvatarSharedPointer& avatarPointer, hash) {
|
||||
auto avatar = static_pointer_cast<Avatar>(avatarPointer);
|
||||
bool isCurrentTarget = avatar->getIsLookAtTarget();
|
||||
float distanceTo = glm::length(avatar->getHead()->getEyePosition() - cameraPosition);
|
||||
|
@ -1050,7 +1051,6 @@ void MyAvatar::updateLookAtTargetAvatar() {
|
|||
glm::vec3 humanLeftEye = humanSystem->getPosition() + (humanSystem->getOrientation() * leftEyeHeadLocal);
|
||||
glm::vec3 humanRightEye = humanSystem->getPosition() + (humanSystem->getOrientation() * rightEyeHeadLocal);
|
||||
|
||||
|
||||
// First find out where (in world space) the person is looking relative to that bridge-of-the-avatar point.
|
||||
// (We will be adding that offset to the camera position, after making some other adjustments.)
|
||||
glm::vec3 gazeOffset = lookAtPosition - getHead()->getEyePosition();
|
||||
|
@ -1083,6 +1083,7 @@ void MyAvatar::updateLookAtTargetAvatar() {
|
|||
avatar->getHead()->clearCorrectedLookAtPosition();
|
||||
}
|
||||
}
|
||||
});
|
||||
auto avatarPointer = _lookAtTargetAvatar.lock();
|
||||
if (avatarPointer) {
|
||||
static_pointer_cast<Avatar>(avatarPointer)->setIsLookAtTarget(true);
|
||||
|
|
|
@ -22,6 +22,10 @@ AvatarHashMap::AvatarHashMap() {
|
|||
connect(DependencyManager::get<NodeList>().data(), &NodeList::uuidChanged, this, &AvatarHashMap::sessionUUIDChanged);
|
||||
}
|
||||
|
||||
void AvatarHashMap::withAvatarHash(std::function<void(const AvatarHash& hash)> callback) {
|
||||
QReadLocker locker(&_hashLock);
|
||||
callback(_avatarHash);
|
||||
}
|
||||
bool AvatarHashMap::isAvatarInRange(const glm::vec3& position, const float range) {
|
||||
QReadLocker locker(&_hashLock);
|
||||
foreach(const AvatarSharedPointer& sharedAvatar, _avatarHash) {
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include <QtCore/QSharedPointer>
|
||||
#include <QtCore/QUuid>
|
||||
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
|
||||
#include <DependencyManager.h>
|
||||
|
@ -30,7 +31,7 @@ class AvatarHashMap : public QObject, public Dependency {
|
|||
SINGLETON_DEPENDENCY
|
||||
|
||||
public:
|
||||
const AvatarHash& getAvatarHash() { return _avatarHash; }
|
||||
void withAvatarHash(std::function<void(const AvatarHash& hash)>);
|
||||
int size() { return _avatarHash.size(); }
|
||||
|
||||
public slots:
|
||||
|
|
Loading…
Reference in a new issue