Private Issue #297: Accept new flags in ScriptTeleportRequest message. Flags indicate if the world map should be opened and focused.

master
Rider Linden 2024-10-14 12:49:43 -07:00
parent 20dfc94c5d
commit 81df0476b5
6 changed files with 40 additions and 15 deletions

View File

@ -355,5 +355,7 @@ const U8 CLICK_ACTION_DISABLED = 8;
const U8 CLICK_ACTION_IGNORE = 9;
// DO NOT CHANGE THE SEQUENCE OF THIS LIST!!
constexpr U32 BEACON_SHOW_MAP = 0x0001;
constexpr U32 BEACON_FOCUS_MAP = 0x0002;
#endif

View File

@ -377,6 +377,10 @@ public:
void enableResizeCtrls(bool enable, bool width = true, bool height = true);
bool isPositioning(LLFloaterEnums::EOpenPositioning p) const { return (p == mPositioning); }
void setAutoFocus(bool focus) { mAutoFocus = focus; } // whether to automatically take focus when opened
bool getAutoFocus() const { return mAutoFocus; }
protected:
void applyControlsAndPosition(LLFloater* other);
@ -401,8 +405,6 @@ protected:
void setExpandedRect(const LLRect& rect) { mExpandedRect = rect; } // size when not minimized
const LLRect& getExpandedRect() const { return mExpandedRect; }
void setAutoFocus(bool focus) { mAutoFocus = focus; } // whether to automatically take focus when opened
bool getAutoFocus() const { return mAutoFocus; }
LLDragHandle* getDragHandle() const { return mDragHandle; }
void destroy(); // Don't call this directly. You probably want to call closeFloater()

View File

@ -486,8 +486,11 @@ void LLFloaterWorldMap::onOpen(const LLSD& key)
const LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
LLInventoryModelBackgroundFetch::instance().start(landmark_folder_id);
mLocationEditor->setFocus( true);
gFocusMgr.triggerFocusFlash();
if (hasFocus())
{
mLocationEditor->setFocus( true);
gFocusMgr.triggerFocusFlash();
}
buildAvatarIDList();
buildLandmarkIDLists();

View File

@ -6610,7 +6610,6 @@ void process_initiate_download(LLMessageSystem* msg, void**)
(void**)new std::string(viewer_filename));
}
void process_script_teleport_request(LLMessageSystem* msg, void**)
{
if (!gSavedSettings.getBOOL("ScriptsCanShowUI")) return;
@ -6624,6 +6623,11 @@ void process_script_teleport_request(LLMessageSystem* msg, void**)
msg->getString("Data", "SimName", sim_name);
msg->getVector3("Data", "SimPosition", pos);
msg->getVector3("Data", "LookAt", look_at);
U32 flags = (BEACON_SHOW_MAP | BEACON_FOCUS_MAP);
if (msg->has("Options"))
{
msg->getU32("Options", "Flags", flags);
}
LLFloaterWorldMap* instance = LLFloaterWorldMap::getInstance();
if(instance)
@ -6634,7 +6638,17 @@ void process_script_teleport_request(LLMessageSystem* msg, void**)
<< LL_ENDL;
instance->trackURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]);
LLFloaterReg::showInstance("world_map", "center");
if (flags & BEACON_SHOW_MAP)
{
bool old_auto_focus = instance->getAutoFocus();
instance->setAutoFocus(false);
instance->openFloater("center");
if (flags & BEACON_FOCUS_MAP)
{
instance->setFocus(true);
}
instance->setAutoFocus(old_auto_focus);
}
}
// remove above two lines and replace with below line

View File

@ -4370,14 +4370,18 @@ version 2.0
// ScriptTeleportRequest
// reliable
{
ScriptTeleportRequest Low 195 Trusted Unencoded
{
Data Single
{ ObjectName Variable 1 }
{ SimName Variable 1 }
{ SimPosition LLVector3 }
{ LookAt LLVector3 }
}
ScriptTeleportRequest Low 195 Trusted Unencoded
{
Data Single
{ ObjectName Variable 1 }
{ SimName Variable 1 }
{ SimPosition LLVector3 }
{ LookAt LLVector3 }
}
{
Options Variable
{ Flags U32 }
}
}

View File

@ -1 +1 @@
d7915d67467e59287857630bd89bf9529d065199
b98fc0af5fa88601f5afa4f3c83f08188316e9a8