From 6a1ec2691a33f88428081ff9165af96b2549c81e Mon Sep 17 00:00:00 2001
From: Armin Weatherwax
Date: Thu, 6 May 2010 12:23:11 +0200
Subject: add TP-to button to radar. Todo: consider to only allow for friends.
---
linden/indra/newview/panelradar.cpp | 27 ++++++++++++++++++++++
linden/indra/newview/panelradar.h | 1 +
.../skins/default/xui/en-us/panel_radar.xml | 17 +++++++++-----
3 files changed, 39 insertions(+), 6 deletions(-)
(limited to 'linden/indra/newview')
diff --git a/linden/indra/newview/panelradar.cpp b/linden/indra/newview/panelradar.cpp
index 1a5f2d4..a7062b4 100644
--- a/linden/indra/newview/panelradar.cpp
+++ b/linden/indra/newview/panelradar.cpp
@@ -77,6 +77,7 @@ BOOL PanelRadar::postBuild()
childSetAction("im_btn", onClickIM, this);
childSetAction("profile_btn", onClickProfile, this);
childSetAction("offer_teleport_btn", onClickOfferTeleport, this);
+ childSetAction("teleport_btn", onClickTeleport, this);
childSetAction("track_btn", onClickTrack, this);
childSetAction("invite_btn", onClickInvite, this);
childSetAction("add_btn", onClickAddFriend, this);
@@ -417,6 +418,7 @@ void PanelRadar::updateButtonStates()
childSetEnabled("im_btn", enable);
childSetEnabled("profile_btn", enable);
childSetEnabled("offer_teleport_btn", enable);
+ childSetEnabled("teleport_btn", enable);
childSetEnabled("track_btn", enable_track);
childSetEnabled("invite_btn", enable);
childSetEnabled("add_btn", enable);
@@ -585,6 +587,31 @@ void PanelRadar::onClickOfferTeleport(void* user_data)
}
}
+//static
+void PanelRadar::onClickTeleport(void* userdata)
+{
+ PanelRadar *self = (PanelRadar*)userdata;
+ LLScrollListItem *item = self->mRadarList->getFirstSelected();
+
+ if ( item )
+ {
+ LLUUID agent_id = item->getUUID();
+ std::string agent_name = getSelectedName(agent_id);
+ if ( !agent_name.empty() )
+ {
+ LLViewerObject *av_obj = gObjectList.findObject(agent_id);
+ if (av_obj != NULL && av_obj->isAvatar())
+ {
+ LLVOAvatar* avatarp = (LLVOAvatar*)av_obj;
+ if (avatarp != NULL)
+ {
+ LLVector3d pos = avatarp->getPositionGlobal();
+ gAgent.teleportViaLocation(pos);
+ }
+ }
+ }
+ }
+}
// static
void PanelRadar::onClickTrack(void* user_data)
diff --git a/linden/indra/newview/panelradar.h b/linden/indra/newview/panelradar.h
index 8697bbc..de7760f 100644
--- a/linden/indra/newview/panelradar.h
+++ b/linden/indra/newview/panelradar.h
@@ -88,6 +88,7 @@ private:
static void onClickIM(void* user_data);
static void onClickAddFriend(void* user_data);
static void onClickOfferTeleport(void* user_data);
+ static void onClickTeleport(void *userdata);
static void onClickTrack(void* user_data);
static void onClickInvite(void* user_data);
static void callback_invite_to_group(LLUUID group_id, void *user_data);
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_radar.xml b/linden/indra/newview/skins/default/xui/en-us/panel_radar.xml
index 2d50bc0..1931354 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_radar.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_radar.xml
@@ -65,32 +65,37 @@
border="true" mouse_opaque="true">
+
+
--
cgit v1.1