diff --git a/indra/newview/llfloaterexperienceprofile.cpp b/indra/newview/llfloaterexperienceprofile.cpp index a99a096ea7bcbf36f73c894db7fad749f09e4973..044acb7d3383a7f211d1d0df1275f35a9a739d83 100644 --- a/indra/newview/llfloaterexperienceprofile.cpp +++ b/indra/newview/llfloaterexperienceprofile.cpp @@ -690,7 +690,7 @@ void LLFloaterExperienceProfile::onClickLocation() if(region) { LLTextBox* child = getChild<LLTextBox>(EDIT TF_SLURL); - mLocationSLURL = LLSLURL(region->getName(), gAgent.getPositionGlobal()).getSLURLString(); + mLocationSLURL = LLSLURL(region->getName(), gAgent.getPositionAgent()).getSLURLString(); child->setText(mLocationSLURL); onFieldChanged(); } diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 0398c142a9cf616779612fb9626ef0f973b6e7fe..b8e0e50412778c12f283098e3b855de7d2e84bcc 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -798,14 +798,16 @@ void LLFloaterWorldMap::updateLocation() // Figure out where user is // Set the current SLURL - mSLURL = LLSLURL(agent_sim_name, gAgent.getPositionGlobal()); + mSLURL = LLSLURL(agent_sim_name, gAgent.getPositionAgent()); } } return; // invalid location } std::string sim_name; - gotSimName = LLWorldMap::getInstanceFast()->simNameFromPosGlobal( pos_global, sim_name ); + LLSimInfo* sim_info = LLWorldMap::getInstance()->simInfoFromPosGlobal(pos_global); + if (sim_info) + sim_name = sim_info->getName(); if ((status != LLTracker::TRACKING_NOTHING) && (status != mTrackedStatus || pos_global != mTrackedLocation || sim_name != mTrackedSimName)) { @@ -838,11 +840,11 @@ void LLFloaterWorldMap::updateLocation() childSetValue("location", RlvStrings::getString(RlvStringKeys::Hidden::Region)); } - else if (gotSimName) + else if (sim_info) // [/RLVa:KB] // if ( gotSimName ) { - mSLURL = LLSLURL(sim_name, pos_global); + mSLURL = LLSLURL(sim_name, sim_info->getLocalPos(pos_global)); } else { // Empty SLURL will disable the "Copy SLURL to clipboard" button diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp index a17dc674acb08b460f83af1fa331ff11886eb326..60e279b00043b541c58ca826736a7609dc382037 100644 --- a/indra/newview/lllandmarkactions.cpp +++ b/indra/newview/lllandmarkactions.cpp @@ -267,14 +267,11 @@ void LLLandmarkActions::createLandmarkHere() void LLLandmarkActions::getSLURLfromPosGlobal(const LLVector3d& global_pos, slurl_callback_t cb, bool escaped /* = true */) { - std::string sim_name; - bool gotSimName = LLWorldMap::getInstance()->simNameFromPosGlobal(global_pos, sim_name); - if (gotSimName) + const LLSimInfo* siminfo = LLWorldMap::getInstance()->simInfoFromPosGlobal(global_pos); + if (siminfo) { - std::string slurl = LLSLURL(sim_name, global_pos).getSLURLString(); + std::string slurl = LLSLURL(siminfo->getName(), siminfo->getLocalPos(global_pos)).getSLURLString(); cb(slurl); - - return; } else { @@ -318,12 +315,11 @@ void LLLandmarkActions::onRegionResponseSLURL(slurl_callback_t cb, bool escaped, const std::string& url) { - std::string sim_name; std::string slurl; - bool gotSimName = LLWorldMap::getInstance()->simNameFromPosGlobal(global_pos, sim_name); - if (gotSimName) + LLSimInfo* info = LLWorldMap::getInstance()->simInfoFromPosGlobal(global_pos); + if (info) { - slurl = LLSLURL(sim_name, global_pos).getSLURLString(); + slurl = LLSLURL(info->getName(), info->getLocalPos(global_pos)).getSLURLString(); } else { diff --git a/indra/newview/llnamebox.cpp b/indra/newview/llnamebox.cpp index 8d32fb1d5cce3879c19db04dfd7b9fd228338236..8eb5316b541c7a834c356e9f9cfaf3e8a2bb1926 100644 --- a/indra/newview/llnamebox.cpp +++ b/indra/newview/llnamebox.cpp @@ -33,6 +33,7 @@ #include "llui.h" #include "llviewercontrol.h" #include "lluuid.h" +#include "llslurl.h" #include "llcachename.h" #include "llavatarnamecache.h" @@ -112,9 +113,9 @@ void LLNameBox::setName(const std::string& name, BOOL is_group) std::string url; if (is_group) - url = "[secondlife:///app/group/" + mNameID.asString() + "/about " + name + "]"; + url = "[" + LLSLURL("group", mNameID, "about").getSLURLString() + "]"; else - url = "[secondlife:///app/agent/" + mNameID.asString() + "/about " + name + "]"; + url = "[" + LLSLURL("agent", mNameID, "about").getSLURLString() + "]"; setText(url); } diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index b51e89f3f1d68d65550794b8af9372c8d547e54b..2c8c83bf6e309c8563ca0c8475425a3ec44787f4 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -395,8 +395,9 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, parcel_data.name = parcel->getName(); parcel_data.sim_name = region->getName(); parcel_data.snapshot_id = parcel->getSnapshotID(); - mPosRegion.setVec((F32)fmod(pos_global.mdV[VX], (F64)REGION_WIDTH_METERS), - (F32)fmod(pos_global.mdV[VY], (F64)REGION_WIDTH_METERS), + const auto& global_origin = region->getOriginGlobal(); + mPosRegion.setVec((F32)(pos_global.mdV[VX] - global_origin.mdV[VX]), + (F32)(pos_global.mdV[VY] - global_origin.mdV[VY]), (F32)pos_global.mdV[VZ]); parcel_data.global_x = pos_global.mdV[VX]; parcel_data.global_y = pos_global.mdV[VY]; diff --git a/indra/newview/llpanelplacestab.cpp b/indra/newview/llpanelplacestab.cpp index 748a91714752ec47e75da9a0cd20b73d2aa523c0..e837c283fb01706f88719df251e798bde758a604 100644 --- a/indra/newview/llpanelplacestab.cpp +++ b/indra/newview/llpanelplacestab.cpp @@ -54,13 +54,12 @@ void LLPanelPlacesTab::onRegionResponse(const LLVector3d& landmark_global_pos, const LLUUID& snapshot_id, bool teleport) { - std::string sim_name; - bool gotSimName = LLWorldMap::getInstance()->simNameFromPosGlobal( landmark_global_pos, sim_name ); + LLSimInfo* sim_info = LLWorldMap::getInstance()->simInfoFromPosGlobal(landmark_global_pos); std::string sl_url; - if ( gotSimName ) + if (sim_info) { - sl_url = LLSLURL(sim_name, landmark_global_pos).getSLURLString(); + sl_url = LLSLURL(sim_info->getName(), sim_info->getLocalPos(landmark_global_pos)).getSLURLString(); } else {