diff options
| -rw-r--r-- | indra/newview/llagent.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llagent.h | 3 | ||||
| -rw-r--r-- | indra/newview/llavatarlist.cpp | 11 | ||||
| -rw-r--r-- | indra/newview/llavatarlist.h | 2 | ||||
| -rw-r--r-- | indra/newview/llpanelpeople.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.cpp | 41 | 
6 files changed, 30 insertions, 35 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index f7b48d25f2..0cd343b46e 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -1305,6 +1305,12 @@ const LLVector3 &LLAgent::getPositionAgent()      return mFrameAgent.getOrigin();  } +void LLAgent::setAvatarsPositions(const std::map<LLUUID, LLVector3d>& avatarsPositions) +{ +    mAvatarsPositions.clear(); +    mAvatarsPositions = avatarsPositions; +} +  boost::signals2::connection LLAgent::whenPositionChanged(position_signal_t::slot_type fn)  {      return mOnPositionChanged.connect(fn); diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index b475782946..a2d2ecea9f 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -195,6 +195,8 @@ public:      // Call once per frame to update position, angles (radians).      void            updateAgentPosition(const F32 dt, const F32 yaw, const S32 mouse_x, const S32 mouse_y);      void            setPositionAgent(const LLVector3 ¢er); +    void            setAvatarsPositions(const std::map<LLUUID, LLVector3d>& avatarsPositions); +    const std::map<LLUUID, LLVector3d>& getAvatarsPositions() const { return mAvatarsPositions;}      boost::signals2::connection whenPositionChanged(position_signal_t::slot_type fn); @@ -205,6 +207,7 @@ private:      position_signal_t   mOnPositionChanged;      LLVector3d          mLastTestGlobal; +    std::map<LLUUID, LLVector3d> mAvatarsPositions;      //--------------------------------------------------------------------      // Velocity diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index 834288a93e..e29be0c757 100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -186,12 +186,6 @@ std::string LLAvatarList::getAvatarName(LLAvatarName av_name)      return mShowCompleteName? av_name.getCompleteName(false, mForceCompleteName) : av_name.getDisplayName();  } -void LLAvatarList::setAvatarsPositions(const std::map<LLUUID, LLVector3d>& avatarsPositions) -{ -    mAvatarsPositions.clear(); -    mAvatarsPositions = avatarsPositions; -} -  // virtual  void LLAvatarList::draw()  { @@ -224,7 +218,10 @@ void LLAvatarList::draw()                          item->setAvatarArrivalTime(secs_since);                  }                  if (mAvatarDistance) -                    item->setAvatarDistance(dist_vec(mAvatarsPositions[item->getAvatarId()], gAgent.getPositionGlobal())); +                { +                    auto avatarsPositions = gAgent.getAvatarsPositions(); +                    item->setAvatarDistance(dist_vec(avatarsPositions[item->getAvatarId()], gAgent.getPositionGlobal())); +                }              }          }          if (mShowLastInteractionTime) diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h index 5ef7eeb041..e6e0728a3f 100644 --- a/indra/newview/llavatarlist.h +++ b/indra/newview/llavatarlist.h @@ -74,7 +74,6 @@ public:      uuid_vec_t& getIDs()                            { return mIDs; }      bool contains(const LLUUID& id); -    void setAvatarsPositions(const std::map<LLUUID, LLVector3d>& avatarsPositions);      void setContextMenu(LLListContextMenu* menu) { mContextMenu = menu; }      void setSessionID(const LLUUID& session_id) { mSessionID = session_id; }      const LLUUID& getSessionID() { return mSessionID; } @@ -143,7 +142,6 @@ private:      uuid_vec_t              mIDs;      LLUUID                  mSessionID; -    std::map<LLUUID, LLVector3d> mAvatarsPositions;      LLListContextMenu*  mContextMenu;      commit_signal_t mRefreshCompleteSignal; diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 6d1c71b893..aca8cf189b 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -850,7 +850,7 @@ void LLPanelPeople::updateNearbyList()  #endif      DISTANCE_COMPARATOR.updateAvatarsPositions(positions, mNearbyList->getIDs()); -    mNearbyList->setAvatarsPositions(DISTANCE_COMPARATOR.getAvatarsPositions()); +    gAgent.setAvatarsPositions(DISTANCE_COMPARATOR.getAvatarsPositions());      LLActiveSpeakerMgr::instance().update(true);  } diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 53832422d8..082b1349cf 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -818,7 +818,8 @@ LLVOAvatar::~LLVOAvatar()  {      sInstances.remove(this); -    if (gSavedSettings.getBOOL("IMShowArrivalsDepartures")) +    static LLCachedControl<bool> show_arrival_departures(gSavedSettings, "IMShowArrivalsDepartures", false); +    if (show_arrival_departures)      {          LLAvatarName av_name;          LLAvatarNameCache::get(getID(), &av_name); @@ -2583,31 +2584,21 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys,      {          mDebugExistenceTimer.reset();          debugAvatarRezTime("AvatarRezArrivedNotification", "avatar arrived"); -        if (gSavedSettings.getBOOL("IMShowArrivalsDepartures")) +        static LLCachedControl<bool> show_arrival_departures(gSavedSettings, "IMShowArrivalsDepartures", false); +        if (show_arrival_departures)          { -            uuid_vec_t uuids; -            std::vector<LLVector3d> positions; -            LLWorld::getInstance()->getAvatars(&uuids, &positions, gAgent.getPositionGlobal(), gSavedSettings.getF32("MPVNearMeRange")); -            auto pos_it = positions.begin(); -            auto id_it = uuids.begin(); -            for (;pos_it != positions.end() && id_it != uuids.end(); ++pos_it, ++id_it) -            { -                if (*id_it == getID() && !isSelf()) -                { -                    LLAvatarName av_name; -                    LLAvatarNameCache::get(getID(), &av_name); -                    auto display_name = av_name.getDisplayName(); -                    if (!display_name.empty()) -                    { -                        LLChat chat{llformat("%s arrived (%.1f m).", display_name.c_str(), dist_vec(*pos_it, gAgent.getPositionGlobal()))}; -                        chat.mFromName = display_name; -                        chat.mFromID = getID(); -                        LLSD args; -                        args["COLOR"] = "ChatHistoryTextColor"; -                        LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args); -                    } -                    break; -                } +            LLAvatarName av_name; +            LLAvatarNameCache::get(getID(), &av_name); +            auto display_name = av_name.getDisplayName(); +            if (!display_name.empty()) +            { +                auto avatarsPositions = gAgent.getAvatarsPositions(); +                LLChat chat{llformat("%s arrived (%.1f m).", display_name.c_str(), dist_vec(avatarsPositions[getID()], gAgent.getPositionGlobal()))}; +                chat.mFromName = display_name; +                chat.mFromID = getID(); +                LLSD args; +                args["COLOR"] = "ChatHistoryTextColor"; +                LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args);              }          }      }  | 
