summaryrefslogtreecommitdiff
path: root/indra/newview/llappviewer.cpp
diff options
context:
space:
mode:
authorErik Kundiman <erik@megapahit.org>2025-07-30 17:06:44 +0800
committerErik Kundiman <erik@megapahit.org>2025-07-30 17:06:44 +0800
commit7ddb99117ecdaa1d27719908aca6283a0f90d74e (patch)
tree20e34778d0e920133138c6cf707e2ccdd137e63d /indra/newview/llappviewer.cpp
parent275bc9d0e373c8018167c8f4b0ac79e8b782d0ec (diff)
Use getAvatars already called for Discord Party numbers
so we don't have to make any extra getAvatars calls just for this, as it's pricy in crowds, and we'll just be piggybacking `updateSpeakerList` and `updateNearbyList`.
Diffstat (limited to 'indra/newview/llappviewer.cpp')
-rw-r--r--indra/newview/llappviewer.cpp26
1 files changed, 18 insertions, 8 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index f65b6f309b..ec03377ccb 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -283,6 +283,8 @@ using namespace LL;
#include <discordpp.h>
static std::shared_ptr<discordpp::Client> gDiscordClient;
static uint64_t gDiscordTimestampsStart;
+static int32_t gDiscordPartyCurrentSize;
+static int32_t gDiscordPartyMaxSize;
#endif
static LLAppViewerListener sAppViewerListener(LLAppViewer::instance);
@@ -5926,6 +5928,8 @@ void LLAppViewer::metricsSend(bool enable_reporting)
void LLAppViewer::initDiscordSocial()
{
+ gDiscordPartyCurrentSize = 1;
+ gDiscordPartyMaxSize = 0;
gDiscordTimestampsStart = time(nullptr);
gDiscordClient = std::make_shared<discordpp::Client>();
gDiscordClient->SetStatusChangedCallback([](discordpp::Client::Status status, discordpp::Client::Error, int32_t) {
@@ -6071,20 +6075,26 @@ void LLAppViewer::updateDiscordActivity()
auto location = llformat("%s (%d, %d, %d)", gAgent.getRegion()->getName().c_str(), pos_x, pos_y, pos_z);
activity.SetState(location);
- auto world = LLWorld::getInstance();
- uuid_vec_t chat_radius_uuids, near_me_uuids;
- auto position = gAgent.getPositionGlobal();
- world->getAvatars(&chat_radius_uuids, NULL, position, CHAT_NORMAL_RADIUS);
- static LLCachedControl<F32> range(gSavedSettings, "MPVNearMeRange", 4096.0f);
- world->getAvatars(&near_me_uuids, NULL, position, range);
discordpp::ActivityParty party;
party.SetId(location);
- party.SetCurrentSize(chat_radius_uuids.size());
- party.SetMaxSize(near_me_uuids.size());
+ party.SetCurrentSize(gDiscordPartyCurrentSize);
+ party.SetMaxSize(gDiscordPartyMaxSize);
activity.SetParty(party);
}
gDiscordClient->UpdateRichPresence(activity, [](discordpp::ClientResult) {});
}
+void LLAppViewer::updateDiscordPartyCurrentSize(int32_t size)
+{
+ gDiscordPartyCurrentSize = size;
+ updateDiscordActivity();
+}
+
+void LLAppViewer::updateDiscordPartyMaxSize(int32_t size)
+{
+ gDiscordPartyMaxSize = size;
+ updateDiscordActivity();
+}
+
#endif