summaryrefslogtreecommitdiff
path: root/indra/newview/llviewermessage.cpp
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2025-08-06 16:05:19 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2025-08-06 16:05:19 +0300
commitce9d66cdd18c58c3b26fbebde633ae00732d7f9f (patch)
treefdbc5a913c62265f95e610819637e096f0f85339 /indra/newview/llviewermessage.cpp
parent514b658fde13bb0c0ec862b081eeebf47bace70d (diff)
parent0f68bcd46ca3f2babf94303b80e2be006e4693ae (diff)
Merge branch develop into 2025.06
# Conflicts: # indra/newview/llvoavatar.cpp
Diffstat (limited to 'indra/newview/llviewermessage.cpp')
-rw-r--r--indra/newview/llviewermessage.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 1501ba41c2..44831aea03 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3052,6 +3052,11 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
}
}
+#ifdef LL_DISCORD
+ if (gSavedSettings.getBOOL("EnableDiscord"))
+ LLAppViewer::updateDiscordActivity();
+#endif
+
if ( LLTracker::isTracking(NULL) )
{
// Check distance to beacon, if < 5m, remove beacon
@@ -3189,6 +3194,7 @@ void send_agent_update(bool force_send, bool send_reliable)
static F64 last_send_time = 0.0;
static U32 last_control_flags = 0;
+ static bool control_flags_follow_up = false;
static U8 last_render_state = 0;
static U8 last_flags = AU_FLAGS_NONE;
static LLQuaternion last_body_rot,
@@ -3266,6 +3272,20 @@ void send_agent_update(bool force_send, bool send_reliable)
break;
}
+ // example:
+ // user taps crouch (control_flags 4128), viewer sends 4128 then immediately 0
+ // server starts crouching motion but does not stop it, only once viewer sends 0
+ // second time will server stop the motion. follow_up exists to make sure all
+ // states like 'crouch' motion are properly cleared server side.
+ //
+ // P.S. Server probably shouldn't require a reminder to stop a motion,
+ // but at the moment it does.
+ if (control_flags_follow_up)
+ {
+ send_update = true;
+ break;
+ }
+
// check translation
constexpr F32 TRANSLATE_THRESHOLD = 0.01f;
if ((last_camera_pos_agent - camera_pos_agent).magVec() > TRANSLATE_THRESHOLD)
@@ -3399,6 +3419,7 @@ void send_agent_update(bool force_send, bool send_reliable)
// remember last update data
last_send_time = now;
+ control_flags_follow_up = last_control_flags != control_flags;
last_control_flags = control_flags;
last_render_state = render_state;
last_flags = flags;