From b899834c54a89437544fcc4a3bc0d8acf99448c9 Mon Sep 17 00:00:00 2001 From: Jose Carlos Date: Fri, 14 Feb 2014 00:23:21 +0100 Subject: [PATCH] Show "displayname" in correct position Show "displayname" when on mouse hover Persistant displayname data --- interface/src/Menu.cpp | 2 +- interface/src/avatar/Avatar.cpp | 28 +++++++++++++++++++--------- interface/src/avatar/Avatar.h | 6 ++++++ interface/src/avatar/MyAvatar.cpp | 7 +++++++ interface/src/avatar/Profile.cpp | 5 ----- interface/src/avatar/Profile.h | 3 --- libraries/avatars/src/AvatarData.cpp | 14 +++++++------- libraries/avatars/src/AvatarData.h | 6 +++--- 8 files changed, 43 insertions(+), 28 deletions(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 6dbbf176ee..394ca4febd 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -781,7 +781,7 @@ void Menu::editPreferences() { skeletonURLEdit->setMinimumWidth(QLINE_MINIMUM_WIDTH); form->addRow("Skeleton URL:", skeletonURLEdit); - QString displayNameString = applicationInstance->getProfile()->getDisplayName(); + QString displayNameString = applicationInstance->getAvatar()->getDisplayNameStr(); QLineEdit* displayNameEdit = new QLineEdit(displayNameString); displayNameEdit->setMinimumWidth(QLINE_MINIMUM_WIDTH); form->addRow("Display name:", displayNameEdit); diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index dc92d1eed9..29d9011bac 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -76,7 +76,8 @@ Avatar::Avatar() : _moving(false), _owningAvatarMixer(), _initialized(false), - _displayNameWidth(0) + _displayNameWidth(0), + _isShowDisplayName(false) { // we may have been created in the network thread, but we live in the main thread moveToThread(Application::getInstance()->thread()); @@ -187,7 +188,9 @@ void Avatar::render(bool forceRenderHead) { } // render display name - renderDisplayName(); + if (_isShowDisplayName) { + renderDisplayName(); + } if (!_chatMessage.empty()) { int width = 0; @@ -261,11 +264,14 @@ void Avatar::renderBody(bool forceRenderHead) { void Avatar::renderDisplayName() { - if (_displayNameStr.isEmpty()) { - return; + QString displayName; + if (_displayName.isEmpty()) { + displayName = "test string"; + } else { + displayName = _displayName; } - - glm::vec3 textPosition = _head.getPosition(); //+ glm::vec3(0,50,0); + + glm::vec3 textPosition = getPosition() + getBodyUpDirection() * getHeight(); // Scale is already considered in getHeight glPushMatrix(); glDepthMask(false); @@ -318,11 +324,11 @@ void Avatar::renderDisplayName() { glScalef(scaleFactor, scaleFactor, 1.0); - glColor3f(0.93, 0.93, 0.93); + glColor3f((GLfloat)0.93, (GLfloat)0.93, (GLfloat)0.93); // TextRenderer, based on QT opengl text rendering functions - QByteArray ba = _displayNameStr.toLocal8Bit(); + QByteArray ba = displayName.toLocal8Bit(); const char *text = ba.data(); displayNameTextRenderer()->draw(-_displayNameWidth/2.0, 0, text); } @@ -429,7 +435,7 @@ void Avatar::setSkeletonModelURL(const QUrl &skeletonModelURL) { } void Avatar::setDisplayName(const QString& displayName) { - AvatarData::setDisplayNameStr(displayName); + AvatarData::setDisplayName(displayName); int width = 0; for (int i = 0; i < displayName.size(); i++) { width += (displayNameTextRenderer()->computeWidth(displayName[i].toLatin1())); @@ -519,3 +525,7 @@ float Avatar::getPelvisToHeadLength() const { return glm::distance(_position, _head.getPosition()); } +void Avatar::setShowDisplayName(bool showDisplayName) { + _isShowDisplayName = showDisplayName; +} + diff --git a/interface/src/avatar/Avatar.h b/interface/src/avatar/Avatar.h index 41b821838c..0ac5668555 100755 --- a/interface/src/avatar/Avatar.h +++ b/interface/src/avatar/Avatar.h @@ -116,6 +116,8 @@ public: virtual void setFaceModelURL(const QUrl& faceModelURL); virtual void setSkeletonModelURL(const QUrl& skeletonModelURL); virtual void setDisplayName(const QString& displayName); + + void setShowDisplayName(bool showDisplayName); int parseData(const QByteArray& packet); @@ -150,11 +152,15 @@ protected: float getPelvisFloatingHeight() const; float getPelvisToHeadLength() const; + + + private: bool _initialized; int _displayNameWidth; + bool _isShowDisplayName; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 98eb9a4431..59055e259e 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -63,6 +63,7 @@ MyAvatar::MyAvatar() : for (int i = 0; i < MAX_DRIVE_KEYS; i++) { _driveKeys[i] = 0.0f; } + setShowDisplayName(true); } MyAvatar::~MyAvatar() { @@ -611,6 +612,7 @@ void MyAvatar::saveData(QSettings* settings) { settings->setValue("faceModelURL", _faceModelURL); settings->setValue("skeletonModelURL", _skeletonModelURL); + settings->setValue("displayName", _displayName); settings->endGroup(); } @@ -638,6 +640,7 @@ void MyAvatar::loadData(QSettings* settings) { setFaceModelURL(settings->value("faceModelURL").toUrl()); setSkeletonModelURL(settings->value("skeletonModelURL").toUrl()); + setDisplayName(settings->value("displayName").toString()); settings->endGroup(); } @@ -689,8 +692,12 @@ void MyAvatar::updateLookAtTargetAvatar(glm::vec3 &eyePosition) { eyePosition = (avatar->getHead().calculateAverageEyePosition() - avatar->getHead().getScalePivot()) * (avatar->getScale() / avatar->getHead().getScale()) + avatar->getHead().getScalePivot(); _lookAtTargetAvatar = avatarPointer; + avatar->setShowDisplayName(true); return; + } else { + avatar->setShowDisplayName(false); } + } _lookAtTargetAvatar.clear(); } diff --git a/interface/src/avatar/Profile.cpp b/interface/src/avatar/Profile.cpp index b910b56f76..a2a412199e 100644 --- a/interface/src/avatar/Profile.cpp +++ b/interface/src/avatar/Profile.cpp @@ -17,7 +17,6 @@ Profile::Profile(const QString &username) : _username(), - _displayName(), _uuid(), _lastDomain(), _lastPosition(0.0, 0.0, 0.0), @@ -166,7 +165,3 @@ void Profile::processDataServerResponse(const QString& userString, const QString void Profile::setUsername(const QString& username) { _username = username; } - -void Profile::setDisplayName(const QString& displayName) { - _displayName = displayName; -} diff --git a/interface/src/avatar/Profile.h b/interface/src/avatar/Profile.h index 41e6b671fb..c1f3f3c4de 100644 --- a/interface/src/avatar/Profile.h +++ b/interface/src/avatar/Profile.h @@ -28,8 +28,6 @@ public: const QString& getUsername() const { return _username; } - const QString& getDisplayName() const { return _displayName; } - void setUUID(const QUuid& uuid) { _uuid = uuid; } const QUuid& getUUID() { return _uuid; } @@ -51,7 +49,6 @@ private: void setDisplayName(const QString& displaName); QString _username; - QString _displayName; QUuid _uuid; QString _lastDomain; glm::vec3 _lastPosition; diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 3c711dc127..a16feb8514 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -274,8 +274,8 @@ bool AvatarData::hasIdentityChangedAfterParsing(const QByteArray &packet) { QUuid avatarUUID; QUrl faceModelURL, skeletonModelURL; - QString displayNameStr; - packetStream >> avatarUUID >> faceModelURL >> skeletonModelURL >> displayNameStr; + QString displayName; + packetStream >> avatarUUID >> faceModelURL >> skeletonModelURL >> displayName; bool hasIdentityChanged = false; @@ -289,8 +289,8 @@ bool AvatarData::hasIdentityChangedAfterParsing(const QByteArray &packet) { hasIdentityChanged = true; } - if (displayNameStr != _displayNameStr) { - setDisplayNameStr(displayNameStr); + if (displayName != _displayName) { + setDisplayName(displayName); hasIdentityChanged = true; } @@ -301,7 +301,7 @@ QByteArray AvatarData::identityByteArray() { QByteArray identityData; QDataStream identityStream(&identityData, QIODevice::Append); - identityStream << QUuid() << _faceModelURL << _skeletonModelURL << _displayNameStr; + identityStream << QUuid() << _faceModelURL << _skeletonModelURL << _displayName; return identityData; } @@ -316,9 +316,9 @@ void AvatarData::setSkeletonModelURL(const QUrl& skeletonModelURL) { _skeletonModelURL = skeletonModelURL; } -void AvatarData::setDisplayNameStr(const QString& displayName) { +void AvatarData::setDisplayName(const QString& displayName) { qDebug() << "Changing display name for avatar to" << displayName; - _displayNameStr = displayName; + _displayName = displayName; } diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 4fc4e1f4f7..289fd2b21c 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -149,10 +149,10 @@ public: const QUrl& getFaceModelURL() const { return _faceModelURL; } const QUrl& getSkeletonModelURL() const { return _skeletonModelURL; } - const QString& getDisplayNameStr() const { return _displayNameStr; } + const QString& getDisplayNameStr() const { return _displayName; } virtual void setFaceModelURL(const QUrl& faceModelURL); virtual void setSkeletonModelURL(const QUrl& skeletonModelURL); - virtual void setDisplayNameStr(const QString& displayName); + virtual void setDisplayName(const QString& displayName); protected: glm::vec3 _position; @@ -182,7 +182,7 @@ protected: QUrl _faceModelURL; QUrl _skeletonModelURL; - QString _displayNameStr; + QString _displayName; private: // privatize the copy constructor and assignment operator so they cannot be called AvatarData(const AvatarData&);