Steam invite are facing the current position

This commit is contained in:
Atlante45 2016-08-03 16:04:48 -07:00
parent aa2ae31aab
commit 51b45f8f73
4 changed files with 49 additions and 10 deletions

View file

@ -111,7 +111,7 @@ void DiscoverabilityManager::updateLocation() {
}
// Update Steam
SteamClient::updateLocation(domainHandler.getHostname(), addressManager->currentAddress());
SteamClient::updateLocation(domainHandler.getHostname(), addressManager->currentFacingAddress());
}
void DiscoverabilityManager::handleHeartbeatResponse(QNetworkReply& requestReply) {

View file

@ -122,11 +122,13 @@ MyAvatar::MyAvatar(RigPointer rig) :
_driveKeys[i] = 0.0f;
}
// Necessary to select the correct slot
using SlotType = void(MyAvatar::*)(const glm::vec3&, bool, const glm::quat&, bool);
// connect to AddressManager signal for location jumps
connect(DependencyManager::get<AddressManager>().data(), &AddressManager::locationChangeRequired,
[=](const glm::vec3& newPosition, bool hasOrientation, const glm::quat& newOrientation, bool shouldFaceLocation){
goToLocation(newPosition, hasOrientation, newOrientation, shouldFaceLocation);
});
connect(DependencyManager::get<AddressManager>().data(), &AddressManager::locationChangeRequired,
this, static_cast<SlotType>(&MyAvatar::goToLocation));
_characterController.setEnabled(true);
@ -1859,7 +1861,7 @@ void MyAvatar::goToLocation(const glm::vec3& newPosition,
glm::quat quatOrientation = cancelOutRollAndPitch(newOrientation);
if (shouldFaceLocation) {
quatOrientation = newOrientation * glm::angleAxis(PI, glm::vec3(0.0f, 1.0f, 0.0f));
quatOrientation = newOrientation * glm::angleAxis(PI, Vectors::UP);
// move the user a couple units away
const float DISTANCE_TO_USER = 2.0f;

View file

@ -17,6 +17,7 @@
#include <QStringList>
#include <GLMHelpers.h>
#include <NumericalConstants.h>
#include <SettingHandle.h>
#include <UUID.h>
@ -46,7 +47,7 @@ bool AddressManager::isConnected() {
return DependencyManager::get<NodeList>()->getDomainHandler().isConnected();
}
const QUrl AddressManager::currentAddress() const {
QUrl AddressManager::currentAddress() const {
QUrl hifiURL;
hifiURL.setScheme(HIFI_URL_SCHEME);
@ -61,6 +62,21 @@ const QUrl AddressManager::currentAddress() const {
return hifiURL;
}
QUrl AddressManager::currentFacingAddress() const {
QUrl hifiURL;
hifiURL.setScheme(HIFI_URL_SCHEME);
hifiURL.setHost(_host);
if (_port != 0 && _port != DEFAULT_DOMAIN_SERVER_PORT) {
hifiURL.setPort(_port);
}
hifiURL.setPath(currentFacingPath());
return hifiURL;
}
void AddressManager::loadSettings(const QString& lookupString) {
if (lookupString.isEmpty()) {
handleUrl(currentAddressHandle.get().toString(), LookupTrigger::StartupFromSettings);
@ -97,7 +113,7 @@ void AddressManager::storeCurrentAddress() {
currentAddressHandle.set(currentAddress());
}
const QString AddressManager::currentPath(bool withOrientation) const {
QString AddressManager::currentPath(bool withOrientation) const {
if (_positionGetter) {
QString pathString = "/" + createByteArray(_positionGetter());
@ -121,6 +137,25 @@ const QString AddressManager::currentPath(bool withOrientation) const {
}
}
QString AddressManager::currentFacingPath() const {
if (_positionGetter && _orientationGetter) {
auto position = _positionGetter();
auto orientation = _orientationGetter();
// move the user a couple units away
const float DISTANCE_TO_USER = 2.0f;
position += orientation * Vectors::FRONT * DISTANCE_TO_USER;
// rotate the user by 180 degrees
orientation = orientation * glm::angleAxis(PI, Vectors::UP);
return "/" + createByteArray(position) + "/" + createByteArray(orientation);
} else {
qCDebug(networking) << "Cannot create address path without a getter for position/orientation.";
return QString();
}
}
const JSONCallbackParameters& AddressManager::apiCallbackParameters() {
static bool hasSetupParameters = false;
static JSONCallbackParameters callbackParams;

View file

@ -57,8 +57,10 @@ public:
bool isConnected();
const QString& getProtocol() { return HIFI_URL_SCHEME; };
const QUrl currentAddress() const;
const QString currentPath(bool withOrientation = true) const;
QUrl currentAddress() const;
QUrl currentFacingAddress() const;
QString currentPath(bool withOrientation = true) const;
QString currentFacingPath() const;
const QUuid& getRootPlaceID() const { return _rootPlaceID; }
const QString& getPlaceName() const { return _placeName; }