From 389d5556f5516ef6e3fe989f1b9cff48d7378839 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Wed, 27 May 2015 12:36:55 -0700 Subject: [PATCH] Update Avatar*Pointers to use std::*_ptr instead of Q*Pointer --- interface/src/Application.cpp | 12 ++++++------ interface/src/avatar/AvatarManager.cpp | 16 ++++++++-------- interface/src/avatar/AvatarManager.h | 4 ++-- interface/src/avatar/MyAvatar.cpp | 15 ++++++++------- interface/src/avatar/MyAvatar.h | 4 ++-- libraries/avatars/src/AvatarHashMap.h | 6 ++++-- 6 files changed, 30 insertions(+), 27 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 36cea02bf0..8733226bbc 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2287,8 +2287,8 @@ void Application::updateMyAvatarLookAtPosition() { } } else { - AvatarSharedPointer lookingAt = _myAvatar->getLookAtTargetAvatar().toStrongRef(); - if (lookingAt && _myAvatar != lookingAt.data()) { + AvatarSharedPointer lookingAt = _myAvatar->getLookAtTargetAvatar().lock(); + if (lookingAt && _myAvatar != lookingAt.get()) { isLookingAtSomeone = true; // If I am looking at someone else, look directly at one of their eyes @@ -2296,17 +2296,17 @@ void Application::updateMyAvatarLookAtPosition() { // If a face tracker is active, look at the eye for the side my gaze is biased toward if (tracker->getEstimatedEyeYaw() > _myAvatar->getHead()->getFinalYaw()) { // Look at their right eye - lookAtSpot = static_cast(lookingAt.data())->getHead()->getRightEyePosition(); + lookAtSpot = static_cast(lookingAt.get())->getHead()->getRightEyePosition(); } else { // Look at their left eye - lookAtSpot = static_cast(lookingAt.data())->getHead()->getLeftEyePosition(); + lookAtSpot = static_cast(lookingAt.get())->getHead()->getLeftEyePosition(); } } else { // Need to add randomly looking back and forth between left and right eye for case with no tracker if (_myAvatar->isLookingAtLeftEye()) { - lookAtSpot = static_cast(lookingAt.data())->getHead()->getLeftEyePosition(); + lookAtSpot = static_cast(lookingAt.get())->getHead()->getLeftEyePosition(); } else { - lookAtSpot = static_cast(lookingAt.data())->getHead()->getRightEyePosition(); + lookAtSpot = static_cast(lookingAt.get())->getHead()->getRightEyePosition(); } } } else { diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index 2b3b2f2df0..b9d5043834 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -144,7 +144,7 @@ void AvatarManager::simulateAvatarFades(float deltaTime) { const float MIN_FADE_SCALE = 0.001f; while (fadingIterator != _avatarFades.end()) { - Avatar* avatar = static_cast(fadingIterator->data()); + Avatar* avatar = static_cast(fadingIterator->get()); avatar->setTargetScale(avatar->getScale() * SHRINK_RATE, true); if (avatar->getTargetScale() < MIN_FADE_SCALE) { fadingIterator = _avatarFades.erase(fadingIterator); @@ -160,9 +160,9 @@ void AvatarManager::renderAvatarFades(RenderArgs* renderArgs, const glm::vec3& c Glower glower(renderArgs, renderArgs->_renderMode == RenderArgs::NORMAL_RENDER_MODE ? 1.0f : 0.0f); foreach(const AvatarSharedPointer& fadingAvatar, _avatarFades) { - Avatar* avatar = static_cast(fadingAvatar.data()); - if (avatar != static_cast(_myAvatar.data()) && avatar->isInitialized()) { avatar->render(renderArgs, cameraPosition); + Avatar* avatar = static_cast(fadingAvatar.get()); + if (avatar != static_cast(_myAvatar.get()) && avatar->isInitialized()) { } } } @@ -194,8 +194,8 @@ void AvatarManager::removeAvatarMotionState(Avatar* avatar) { void AvatarManager::removeAvatar(const QUuid& sessionUUID) { AvatarHash::iterator avatarIterator = _avatarHash.find(sessionUUID); if (avatarIterator != _avatarHash.end()) { - Avatar* avatar = reinterpret_cast(avatarIterator.value().data()); - if (avatar != _myAvatar && avatar->isInitialized()) { + Avatar* avatar = reinterpret_cast(avatarIterator.value().get()); + if (avatar != _myAvatar.get() && avatar->isInitialized()) { removeAvatarMotionState(avatar); _avatarFades.push_back(avatarIterator.value()); @@ -208,8 +208,8 @@ void AvatarManager::clearOtherAvatars() { // clear any avatars that came from an avatar-mixer AvatarHash::iterator avatarIterator = _avatarHash.begin(); while (avatarIterator != _avatarHash.end()) { - Avatar* avatar = reinterpret_cast(avatarIterator.value().data()); - if (avatar == _myAvatar || !avatar->isInitialized()) { + Avatar* avatar = reinterpret_cast(avatarIterator.value().get()); + if (avatar == _myAvatar.get() || !avatar->isInitialized()) { // don't remove myAvatar or uninitialized avatars from the list ++avatarIterator; } else { @@ -276,7 +276,7 @@ void AvatarManager::handleCollisionEvents(CollisionEvents& collisionEvents) { void AvatarManager::updateAvatarPhysicsShape(const QUuid& id) { AvatarHash::iterator avatarItr = _avatarHash.find(id); if (avatarItr != _avatarHash.end()) { - Avatar* avatar = static_cast(avatarItr.value().data()); + Avatar* avatar = static_cast(avatarItr.value().get()); AvatarMotionState* motionState = avatar->_motionState; if (motionState) { motionState->addDirtyFlags(EntityItem::DIRTY_SHAPE); diff --git a/interface/src/avatar/AvatarManager.h b/interface/src/avatar/AvatarManager.h index bc4f7765d8..15b69426c2 100644 --- a/interface/src/avatar/AvatarManager.h +++ b/interface/src/avatar/AvatarManager.h @@ -35,7 +35,7 @@ public: void init(); - MyAvatar* getMyAvatar() { return _myAvatar.data(); } + MyAvatar* getMyAvatar() { return _myAvatar.get(); } void updateMyAvatar(float deltaTime); void updateOtherAvatars(float deltaTime); @@ -79,7 +79,7 @@ private: virtual void removeAvatar(const QUuid& sessionUUID); QVector _avatarFades; - QSharedPointer _myAvatar; + std::shared_ptr _myAvatar; quint64 _lastSendAvatarDataTime = 0; // Controls MyAvatar send data rate. QVector _localLights; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index e1f62f616e..bdf66eb1b5 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -105,7 +105,7 @@ MyAvatar::MyAvatar() : } MyAvatar::~MyAvatar() { - _lookAtTargetAvatar.clear(); + _lookAtTargetAvatar.reset(); } QByteArray MyAvatar::toByteArray() { @@ -335,7 +335,7 @@ void MyAvatar::render(RenderArgs* renderArgs, const glm::vec3& cameraPosition, b } Avatar::render(renderArgs, cameraPosition, postLighting); - + // don't display IK constraints in shadow mode if (Menu::getInstance()->isOptionChecked(MenuOption::ShowIKConstraints) && postLighting) { _skeletonModel.renderIKConstraints(); @@ -856,7 +856,7 @@ void MyAvatar::updateLookAtTargetAvatar() { // // Look at the avatar whose eyes are closest to the ray in direction of my avatar's head // - _lookAtTargetAvatar.clear(); + _lookAtTargetAvatar.reset(); _targetAvatarPosition = glm::vec3(0.0f); glm::vec3 lookForward = getHead()->getFinalOrientationInWorldFrame() * IDENTITY_FRONT; @@ -868,7 +868,7 @@ void MyAvatar::updateLookAtTargetAvatar() { int howManyLookingAtMe = 0; foreach (const AvatarSharedPointer& avatarPointer, DependencyManager::get()->getAvatarHash()) { - Avatar* avatar = static_cast(avatarPointer.data()); + Avatar* avatar = static_cast(avatarPointer.get()); bool isCurrentTarget = avatar->getIsLookAtTarget(); float distanceTo = glm::length(avatar->getHead()->getEyePosition() - cameraPosition); avatar->setIsLookAtTarget(false); @@ -896,13 +896,14 @@ void MyAvatar::updateLookAtTargetAvatar() { } } } - if (_lookAtTargetAvatar) { - static_cast(_lookAtTargetAvatar.data())->setIsLookAtTarget(true); + auto avatarPointer = _lookAtTargetAvatar.lock(); + if (avatarPointer) { + static_cast(avatarPointer.get())->setIsLookAtTarget(true); } } void MyAvatar::clearLookAtTargetAvatar() { - _lookAtTargetAvatar.clear(); + _lookAtTargetAvatar.reset(); } bool MyAvatar::isLookingAtLeftEye() { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 34264f5808..eaaf595030 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -108,7 +108,7 @@ public: Q_INVOKABLE glm::vec3 getEyePosition() const { return getHead()->getEyePosition(); } Q_INVOKABLE glm::vec3 getTargetAvatarPosition() const { return _targetAvatarPosition; } - QWeakPointer getLookAtTargetAvatar() const { return _lookAtTargetAvatar; } + AvatarWeakPointer getLookAtTargetAvatar() const { return _lookAtTargetAvatar; } void updateLookAtTargetAvatar(); void clearLookAtTargetAvatar(); @@ -226,7 +226,7 @@ private: DynamicCharacterController _characterController; - QWeakPointer _lookAtTargetAvatar; + AvatarWeakPointer _lookAtTargetAvatar; glm::vec3 _targetAvatarPosition; bool _shouldRender; bool _billboardValid; diff --git a/libraries/avatars/src/AvatarHashMap.h b/libraries/avatars/src/AvatarHashMap.h index 9204826d03..2fb6e4fd03 100644 --- a/libraries/avatars/src/AvatarHashMap.h +++ b/libraries/avatars/src/AvatarHashMap.h @@ -16,14 +16,16 @@ #include #include +#include + #include #include #include "AvatarData.h" #include -typedef QSharedPointer AvatarSharedPointer; -typedef QWeakPointer AvatarWeakPointer; +typedef std::shared_ptr AvatarSharedPointer; +typedef std::weak_ptr AvatarWeakPointer; typedef QHash AvatarHash; class AvatarHashMap : public QObject, public Dependency {