diff --git a/indra/newview/fsradar.cpp b/indra/newview/fsradar.cpp
index d43998241f..cb2e4fb3df 100644
--- a/indra/newview/fsradar.cpp
+++ b/indra/newview/fsradar.cpp
@@ -901,19 +901,15 @@ void FSRadar::updateTracking()
void FSRadar::zoomAvatar(const LLUUID& avatar_id, const std::string& name)
{
- FSRadarEntry* entry = getEntry(avatar_id);
- if (entry)
+ if (LLAvatarActions::canZoomIn(avatar_id))
{
- if (entry->mRange <= gSavedSettings.getF32("RenderFarClip"))
- {
- handle_zoom_to_object(avatar_id, entry->mGlobalPos);
- }
- else
- {
- LLStringUtil::format_map_t args;
- args["AVATARNAME"] = name.c_str();
- reportToNearbyChat(LLTrans::getString("camera_no_focus", args));
- }
+ LLAvatarActions::zoomIn(avatar_id);
+ }
+ else
+ {
+ LLStringUtil::format_map_t args;
+ args["AVATARNAME"] = name.c_str();
+ reportToNearbyChat(LLTrans::getString("camera_no_focus", args));
}
}
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 6c6512ed7d..c1d0e09bd7 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -81,12 +81,14 @@
#include "fsfloaterimcontainer.h"
#include "fsfloaterprofile.h"
#include "fslslbridge.h"
+#include "fsradar.h"
#include "fswsassetblacklist.h"
#include "llfloaterregioninfo.h"
#include "llfloaterreporter.h"
#include "llparcel.h"
#include "lltrans.h"
#include "llviewermenu.h"
+#include "llviewernetwork.h"
#include "llviewerparcelmgr.h"
#include "llviewerwindow.h" // For opening logs externally
#include "llworld.h"
@@ -1436,12 +1438,47 @@ void LLAvatarActions::report(const LLUUID& idAgent)
bool LLAvatarActions::canZoomIn(const LLUUID& idAgent)
{
- return gObjectList.findObject(idAgent);
+ // Firestorm radar support
+ //return gObjectList.findObject(idAgent);
+
+ LLViewerObject* object = gObjectList.findObject(idAgent);
+ if (object)
+ {
+ return true;
+ }
+ else
+ {
+ // Special case for SL since interest list changes
+ FSRadarEntry* entry = FSRadar::getInstance()->getEntry(idAgent);
+#ifdef OPENSIM
+ if (LLGridManager::getInstance()->isInOpenSim())
+ {
+ return (entry && entry->getRange() <= gSavedSettings.getF32("RenderFarClip"));
+ }
+ else
+#endif
+ {
+ return (entry != NULL);
+ }
+ }
+ //
}
void LLAvatarActions::zoomIn(const LLUUID& idAgent)
{
- handle_zoom_to_object(idAgent);
+ // Firestorm radar support
+ //handle_zoom_to_object(idAgent);
+
+ FSRadarEntry* entry = FSRadar::getInstance()->getEntry(idAgent);
+ if (entry)
+ {
+ handle_zoom_to_object(idAgent, entry->getGlobalPos());
+ }
+ else
+ {
+ handle_zoom_to_object(idAgent);
+ }
+ //
}
void LLAvatarActions::getScriptInfo(const LLUUID& idAgent)