From be4022983b909d5be60cec512ea238283f71e739 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 30 Jan 2016 12:25:56 +1300 Subject: [PATCH 1/4] Don't store avatar location immediately after a host change Because the avatar location is 0,0,0 rather than the end target. --- interface/src/Application.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 14e0ea2a6d..ef63021709 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -540,8 +540,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) : connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(updateWindowTitle())); connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(clearDomainOctreeDetails())); connect(&domainHandler, &DomainHandler::settingsReceived, this, &Application::domainSettingsReceived); - connect(&domainHandler, &DomainHandler::hostnameChanged, - DependencyManager::get().data(), &AddressManager::storeCurrentAddress); // update our location every 5 seconds in the metaverse server, assuming that we are authenticated with one const qint64 DATA_SERVER_LOCATION_CHANGE_UPDATE_MSECS = 5 * 1000; From d2cdbebc94795923e1277c9eed7e7df122f3d8d1 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 30 Jan 2016 12:26:50 +1300 Subject: [PATCH 2/4] Store avatar location after a teleport --- interface/src/Application.cpp | 4 ++++ interface/src/avatar/MyAvatar.cpp | 1 + interface/src/avatar/MyAvatar.h | 1 + 3 files changed, 6 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ef63021709..6010433376 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -588,6 +588,10 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) : connect(addressManager.data(), &AddressManager::hostChanged, this, &Application::updateWindowTitle); connect(this, &QCoreApplication::aboutToQuit, addressManager.data(), &AddressManager::storeCurrentAddress); + + // Save avatar location immediately after a teleport. + connect(getMyAvatar(), &MyAvatar::positionGoneTo, + DependencyManager::get().data(), &AddressManager::storeCurrentAddress); auto scriptEngines = DependencyManager::get().data(); scriptEngines->registerScriptInitializer([this](ScriptEngine* engine){ diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 3e54ba99b9..1fcd1305d4 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -285,6 +285,7 @@ void MyAvatar::update(float deltaTime) { // However, render/MyAvatar::update/Application::update don't always match (e.g., when using the separate avatar update thread), // so we update now. It's ok if it updates again in the normal way. updateSensorToWorldMatrix(); + emit positionGoneTo(); } Head* head = getHead(); diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index ed6c3cb883..ba4422705c 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -272,6 +272,7 @@ signals: void transformChanged(); void newCollisionSoundURL(const QUrl& url); void collisionWithEntity(const Collision& collision); + void positionGoneTo(); private: From a5bc1cfd1916907ad2fa4bbf524fa305ec3ccdf3 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 30 Jan 2016 12:27:47 +1300 Subject: [PATCH 3/4] Periodically store avatar location --- interface/src/Application.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6010433376..bd571b9f5e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -546,6 +546,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) : auto discoverabilityManager = DependencyManager::get(); connect(&locationUpdateTimer, &QTimer::timeout, discoverabilityManager.data(), &DiscoverabilityManager::updateLocation); + connect(&locationUpdateTimer, &QTimer::timeout, + DependencyManager::get().data(), &AddressManager::storeCurrentAddress); locationUpdateTimer.start(DATA_SERVER_LOCATION_CHANGE_UPDATE_MSECS); // if we get a domain change, immediately attempt update location in metaverse server From e07baf916b0f65e53e837046344e5e5d1300135c Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 30 Jan 2016 12:30:21 +1300 Subject: [PATCH 4/4] Fixed a typo noticed in passing --- interface/src/avatar/MyAvatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 1fcd1305d4..01e42e7044 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1630,7 +1630,7 @@ void MyAvatar::decreaseSize() { void MyAvatar::resetSize() { _targetScale = 1.0f; - qCDebug(interfaceapp, "Reseted scale to %f", (double)_targetScale); + qCDebug(interfaceapp, "Reset scale to %f", (double)_targetScale); } void MyAvatar::goToLocation(const glm::vec3& newPosition,