From b33843fddcfdc358e3602083e22fe05bc672a3b7 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 7 Oct 2013 13:52:46 -0700 Subject: [PATCH] ask for a mesh if username is present on login or is changed --- interface/src/Application.cpp | 6 ++++++ interface/src/DataServerClient.h | 4 ++++ interface/src/Menu.cpp | 12 +++++++++--- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6d7686328f..a078820e3d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -58,6 +58,7 @@ #include #include "Application.h" +#include "DataServerClient.h" #include "LogDisplay.h" #include "Menu.h" #include "Swatch.h" @@ -1585,6 +1586,11 @@ void Application::init() { _audio.setJitterBufferSamples(Menu::getInstance()->getAudioJitterBufferSamples()); } qDebug("Loaded settings.\n"); + + if (!_myAvatar.getUsername().isEmpty()) { + // we have a username for this avatar, ask the data-server for the mesh URL for this avatar + DataServerClient::getClientValueForKey(DataServerKey::FaceMeshURL); + } // Set up VoxelSystem after loading preferences so we can get the desired max voxel count _voxels.setMaxVoxels(Menu::getInstance()->getMaxVoxels()); diff --git a/interface/src/DataServerClient.h b/interface/src/DataServerClient.h index c1e5ad088c..993608ef81 100644 --- a/interface/src/DataServerClient.h +++ b/interface/src/DataServerClient.h @@ -29,4 +29,8 @@ private: static std::vector _unconfirmedPackets; }; +namespace DataServerKey { + const char FaceMeshURL[] = "mesh"; +} + #endif /* defined(__hifi__DataServerClient__) */ diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 7f3858ac75..afaec2305e 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -804,21 +804,27 @@ void Menu::editPreferences() { return; } + QUrl faceModelURL(faceURLEdit->text()); + if (avatarUsernameEdit->text() != avatarUsername) { - // there has been a UUID change - set the new UUID on the avatar instance + // there has been a username change - set the new UUID on the avatar instance applicationInstance->getAvatar()->setUsername(avatarUsernameEdit->text()); + if (faceModelURL.toString() == faceURLString) { + // if there was no change to the face model URL then ask the data-server for what it is + DataServerClient::getClientValueForKey(DataServerKey::FaceMeshURL); + } } QUrl avatarVoxelURL(avatarURL->text()); applicationInstance->getAvatar()->getVoxels()->setVoxelURL(avatarVoxelURL); - QUrl faceModelURL(faceURLEdit->text()); if (faceModelURL.toString() != faceURLString) { applicationInstance->getAvatar()->getHead().getBlendFace().setModelURL(faceModelURL); // send the new face mesh URL to the data-server (if we have a client UUID) - DataServerClient::putValueForKey("mesh", faceModelURL.toString().toLocal8Bit().constData()); + DataServerClient::putValueForKey(DataServerKey::FaceMeshURL, + faceModelURL.toString().toLocal8Bit().constData()); } Avatar::sendAvatarURLsMessage(avatarVoxelURL, faceModelURL);