mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 13:28:09 +02:00
Update Avatar*Pointers to use std::*_ptr instead of Q*Pointer
This commit is contained in:
parent
b90e04e451
commit
389d5556f5
6 changed files with 30 additions and 27 deletions
|
@ -2287,8 +2287,8 @@ void Application::updateMyAvatarLookAtPosition() {
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
AvatarSharedPointer lookingAt = _myAvatar->getLookAtTargetAvatar().toStrongRef();
|
AvatarSharedPointer lookingAt = _myAvatar->getLookAtTargetAvatar().lock();
|
||||||
if (lookingAt && _myAvatar != lookingAt.data()) {
|
if (lookingAt && _myAvatar != lookingAt.get()) {
|
||||||
|
|
||||||
isLookingAtSomeone = true;
|
isLookingAtSomeone = true;
|
||||||
// If I am looking at someone else, look directly at one of their eyes
|
// 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 a face tracker is active, look at the eye for the side my gaze is biased toward
|
||||||
if (tracker->getEstimatedEyeYaw() > _myAvatar->getHead()->getFinalYaw()) {
|
if (tracker->getEstimatedEyeYaw() > _myAvatar->getHead()->getFinalYaw()) {
|
||||||
// Look at their right eye
|
// Look at their right eye
|
||||||
lookAtSpot = static_cast<Avatar*>(lookingAt.data())->getHead()->getRightEyePosition();
|
lookAtSpot = static_cast<Avatar*>(lookingAt.get())->getHead()->getRightEyePosition();
|
||||||
} else {
|
} else {
|
||||||
// Look at their left eye
|
// Look at their left eye
|
||||||
lookAtSpot = static_cast<Avatar*>(lookingAt.data())->getHead()->getLeftEyePosition();
|
lookAtSpot = static_cast<Avatar*>(lookingAt.get())->getHead()->getLeftEyePosition();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Need to add randomly looking back and forth between left and right eye for case with no tracker
|
// Need to add randomly looking back and forth between left and right eye for case with no tracker
|
||||||
if (_myAvatar->isLookingAtLeftEye()) {
|
if (_myAvatar->isLookingAtLeftEye()) {
|
||||||
lookAtSpot = static_cast<Avatar*>(lookingAt.data())->getHead()->getLeftEyePosition();
|
lookAtSpot = static_cast<Avatar*>(lookingAt.get())->getHead()->getLeftEyePosition();
|
||||||
} else {
|
} else {
|
||||||
lookAtSpot = static_cast<Avatar*>(lookingAt.data())->getHead()->getRightEyePosition();
|
lookAtSpot = static_cast<Avatar*>(lookingAt.get())->getHead()->getRightEyePosition();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -144,7 +144,7 @@ void AvatarManager::simulateAvatarFades(float deltaTime) {
|
||||||
const float MIN_FADE_SCALE = 0.001f;
|
const float MIN_FADE_SCALE = 0.001f;
|
||||||
|
|
||||||
while (fadingIterator != _avatarFades.end()) {
|
while (fadingIterator != _avatarFades.end()) {
|
||||||
Avatar* avatar = static_cast<Avatar*>(fadingIterator->data());
|
Avatar* avatar = static_cast<Avatar*>(fadingIterator->get());
|
||||||
avatar->setTargetScale(avatar->getScale() * SHRINK_RATE, true);
|
avatar->setTargetScale(avatar->getScale() * SHRINK_RATE, true);
|
||||||
if (avatar->getTargetScale() < MIN_FADE_SCALE) {
|
if (avatar->getTargetScale() < MIN_FADE_SCALE) {
|
||||||
fadingIterator = _avatarFades.erase(fadingIterator);
|
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);
|
Glower glower(renderArgs, renderArgs->_renderMode == RenderArgs::NORMAL_RENDER_MODE ? 1.0f : 0.0f);
|
||||||
|
|
||||||
foreach(const AvatarSharedPointer& fadingAvatar, _avatarFades) {
|
foreach(const AvatarSharedPointer& fadingAvatar, _avatarFades) {
|
||||||
Avatar* avatar = static_cast<Avatar*>(fadingAvatar.data());
|
|
||||||
if (avatar != static_cast<Avatar*>(_myAvatar.data()) && avatar->isInitialized()) {
|
|
||||||
avatar->render(renderArgs, cameraPosition);
|
avatar->render(renderArgs, cameraPosition);
|
||||||
|
Avatar* avatar = static_cast<Avatar*>(fadingAvatar.get());
|
||||||
|
if (avatar != static_cast<Avatar*>(_myAvatar.get()) && avatar->isInitialized()) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -194,8 +194,8 @@ void AvatarManager::removeAvatarMotionState(Avatar* avatar) {
|
||||||
void AvatarManager::removeAvatar(const QUuid& sessionUUID) {
|
void AvatarManager::removeAvatar(const QUuid& sessionUUID) {
|
||||||
AvatarHash::iterator avatarIterator = _avatarHash.find(sessionUUID);
|
AvatarHash::iterator avatarIterator = _avatarHash.find(sessionUUID);
|
||||||
if (avatarIterator != _avatarHash.end()) {
|
if (avatarIterator != _avatarHash.end()) {
|
||||||
Avatar* avatar = reinterpret_cast<Avatar*>(avatarIterator.value().data());
|
Avatar* avatar = reinterpret_cast<Avatar*>(avatarIterator.value().get());
|
||||||
if (avatar != _myAvatar && avatar->isInitialized()) {
|
if (avatar != _myAvatar.get() && avatar->isInitialized()) {
|
||||||
removeAvatarMotionState(avatar);
|
removeAvatarMotionState(avatar);
|
||||||
|
|
||||||
_avatarFades.push_back(avatarIterator.value());
|
_avatarFades.push_back(avatarIterator.value());
|
||||||
|
@ -208,8 +208,8 @@ void AvatarManager::clearOtherAvatars() {
|
||||||
// clear any avatars that came from an avatar-mixer
|
// clear any avatars that came from an avatar-mixer
|
||||||
AvatarHash::iterator avatarIterator = _avatarHash.begin();
|
AvatarHash::iterator avatarIterator = _avatarHash.begin();
|
||||||
while (avatarIterator != _avatarHash.end()) {
|
while (avatarIterator != _avatarHash.end()) {
|
||||||
Avatar* avatar = reinterpret_cast<Avatar*>(avatarIterator.value().data());
|
Avatar* avatar = reinterpret_cast<Avatar*>(avatarIterator.value().get());
|
||||||
if (avatar == _myAvatar || !avatar->isInitialized()) {
|
if (avatar == _myAvatar.get() || !avatar->isInitialized()) {
|
||||||
// don't remove myAvatar or uninitialized avatars from the list
|
// don't remove myAvatar or uninitialized avatars from the list
|
||||||
++avatarIterator;
|
++avatarIterator;
|
||||||
} else {
|
} else {
|
||||||
|
@ -276,7 +276,7 @@ void AvatarManager::handleCollisionEvents(CollisionEvents& collisionEvents) {
|
||||||
void AvatarManager::updateAvatarPhysicsShape(const QUuid& id) {
|
void AvatarManager::updateAvatarPhysicsShape(const QUuid& id) {
|
||||||
AvatarHash::iterator avatarItr = _avatarHash.find(id);
|
AvatarHash::iterator avatarItr = _avatarHash.find(id);
|
||||||
if (avatarItr != _avatarHash.end()) {
|
if (avatarItr != _avatarHash.end()) {
|
||||||
Avatar* avatar = static_cast<Avatar*>(avatarItr.value().data());
|
Avatar* avatar = static_cast<Avatar*>(avatarItr.value().get());
|
||||||
AvatarMotionState* motionState = avatar->_motionState;
|
AvatarMotionState* motionState = avatar->_motionState;
|
||||||
if (motionState) {
|
if (motionState) {
|
||||||
motionState->addDirtyFlags(EntityItem::DIRTY_SHAPE);
|
motionState->addDirtyFlags(EntityItem::DIRTY_SHAPE);
|
||||||
|
|
|
@ -35,7 +35,7 @@ public:
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
MyAvatar* getMyAvatar() { return _myAvatar.data(); }
|
MyAvatar* getMyAvatar() { return _myAvatar.get(); }
|
||||||
|
|
||||||
void updateMyAvatar(float deltaTime);
|
void updateMyAvatar(float deltaTime);
|
||||||
void updateOtherAvatars(float deltaTime);
|
void updateOtherAvatars(float deltaTime);
|
||||||
|
@ -79,7 +79,7 @@ private:
|
||||||
virtual void removeAvatar(const QUuid& sessionUUID);
|
virtual void removeAvatar(const QUuid& sessionUUID);
|
||||||
|
|
||||||
QVector<AvatarSharedPointer> _avatarFades;
|
QVector<AvatarSharedPointer> _avatarFades;
|
||||||
QSharedPointer<MyAvatar> _myAvatar;
|
std::shared_ptr<MyAvatar> _myAvatar;
|
||||||
quint64 _lastSendAvatarDataTime = 0; // Controls MyAvatar send data rate.
|
quint64 _lastSendAvatarDataTime = 0; // Controls MyAvatar send data rate.
|
||||||
|
|
||||||
QVector<AvatarManager::LocalLight> _localLights;
|
QVector<AvatarManager::LocalLight> _localLights;
|
||||||
|
|
|
@ -105,7 +105,7 @@ MyAvatar::MyAvatar() :
|
||||||
}
|
}
|
||||||
|
|
||||||
MyAvatar::~MyAvatar() {
|
MyAvatar::~MyAvatar() {
|
||||||
_lookAtTargetAvatar.clear();
|
_lookAtTargetAvatar.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray MyAvatar::toByteArray() {
|
QByteArray MyAvatar::toByteArray() {
|
||||||
|
@ -335,7 +335,7 @@ void MyAvatar::render(RenderArgs* renderArgs, const glm::vec3& cameraPosition, b
|
||||||
}
|
}
|
||||||
|
|
||||||
Avatar::render(renderArgs, cameraPosition, postLighting);
|
Avatar::render(renderArgs, cameraPosition, postLighting);
|
||||||
|
|
||||||
// don't display IK constraints in shadow mode
|
// don't display IK constraints in shadow mode
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::ShowIKConstraints) && postLighting) {
|
if (Menu::getInstance()->isOptionChecked(MenuOption::ShowIKConstraints) && postLighting) {
|
||||||
_skeletonModel.renderIKConstraints();
|
_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
|
// 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);
|
_targetAvatarPosition = glm::vec3(0.0f);
|
||||||
|
|
||||||
glm::vec3 lookForward = getHead()->getFinalOrientationInWorldFrame() * IDENTITY_FRONT;
|
glm::vec3 lookForward = getHead()->getFinalOrientationInWorldFrame() * IDENTITY_FRONT;
|
||||||
|
@ -868,7 +868,7 @@ void MyAvatar::updateLookAtTargetAvatar() {
|
||||||
|
|
||||||
int howManyLookingAtMe = 0;
|
int howManyLookingAtMe = 0;
|
||||||
foreach (const AvatarSharedPointer& avatarPointer, DependencyManager::get<AvatarManager>()->getAvatarHash()) {
|
foreach (const AvatarSharedPointer& avatarPointer, DependencyManager::get<AvatarManager>()->getAvatarHash()) {
|
||||||
Avatar* avatar = static_cast<Avatar*>(avatarPointer.data());
|
Avatar* avatar = static_cast<Avatar*>(avatarPointer.get());
|
||||||
bool isCurrentTarget = avatar->getIsLookAtTarget();
|
bool isCurrentTarget = avatar->getIsLookAtTarget();
|
||||||
float distanceTo = glm::length(avatar->getHead()->getEyePosition() - cameraPosition);
|
float distanceTo = glm::length(avatar->getHead()->getEyePosition() - cameraPosition);
|
||||||
avatar->setIsLookAtTarget(false);
|
avatar->setIsLookAtTarget(false);
|
||||||
|
@ -896,13 +896,14 @@ void MyAvatar::updateLookAtTargetAvatar() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_lookAtTargetAvatar) {
|
auto avatarPointer = _lookAtTargetAvatar.lock();
|
||||||
static_cast<Avatar*>(_lookAtTargetAvatar.data())->setIsLookAtTarget(true);
|
if (avatarPointer) {
|
||||||
|
static_cast<Avatar*>(avatarPointer.get())->setIsLookAtTarget(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyAvatar::clearLookAtTargetAvatar() {
|
void MyAvatar::clearLookAtTargetAvatar() {
|
||||||
_lookAtTargetAvatar.clear();
|
_lookAtTargetAvatar.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MyAvatar::isLookingAtLeftEye() {
|
bool MyAvatar::isLookingAtLeftEye() {
|
||||||
|
|
|
@ -108,7 +108,7 @@ public:
|
||||||
Q_INVOKABLE glm::vec3 getEyePosition() const { return getHead()->getEyePosition(); }
|
Q_INVOKABLE glm::vec3 getEyePosition() const { return getHead()->getEyePosition(); }
|
||||||
|
|
||||||
Q_INVOKABLE glm::vec3 getTargetAvatarPosition() const { return _targetAvatarPosition; }
|
Q_INVOKABLE glm::vec3 getTargetAvatarPosition() const { return _targetAvatarPosition; }
|
||||||
QWeakPointer<AvatarData> getLookAtTargetAvatar() const { return _lookAtTargetAvatar; }
|
AvatarWeakPointer getLookAtTargetAvatar() const { return _lookAtTargetAvatar; }
|
||||||
void updateLookAtTargetAvatar();
|
void updateLookAtTargetAvatar();
|
||||||
void clearLookAtTargetAvatar();
|
void clearLookAtTargetAvatar();
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ private:
|
||||||
|
|
||||||
DynamicCharacterController _characterController;
|
DynamicCharacterController _characterController;
|
||||||
|
|
||||||
QWeakPointer<AvatarData> _lookAtTargetAvatar;
|
AvatarWeakPointer _lookAtTargetAvatar;
|
||||||
glm::vec3 _targetAvatarPosition;
|
glm::vec3 _targetAvatarPosition;
|
||||||
bool _shouldRender;
|
bool _shouldRender;
|
||||||
bool _billboardValid;
|
bool _billboardValid;
|
||||||
|
|
|
@ -16,14 +16,16 @@
|
||||||
#include <QtCore/QSharedPointer>
|
#include <QtCore/QSharedPointer>
|
||||||
#include <QtCore/QUuid>
|
#include <QtCore/QUuid>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#include <DependencyManager.h>
|
#include <DependencyManager.h>
|
||||||
#include <Node.h>
|
#include <Node.h>
|
||||||
|
|
||||||
#include "AvatarData.h"
|
#include "AvatarData.h"
|
||||||
#include <glm/glm.hpp>
|
#include <glm/glm.hpp>
|
||||||
|
|
||||||
typedef QSharedPointer<AvatarData> AvatarSharedPointer;
|
typedef std::shared_ptr<AvatarData> AvatarSharedPointer;
|
||||||
typedef QWeakPointer<AvatarData> AvatarWeakPointer;
|
typedef std::weak_ptr<AvatarData> AvatarWeakPointer;
|
||||||
typedef QHash<QUuid, AvatarSharedPointer> AvatarHash;
|
typedef QHash<QUuid, AvatarSharedPointer> AvatarHash;
|
||||||
|
|
||||||
class AvatarHashMap : public QObject, public Dependency {
|
class AvatarHashMap : public QObject, public Dependency {
|
||||||
|
|
Loading…
Reference in a new issue