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)