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">