summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrish <sl.trish.ace@gmail.com>2026-04-28 19:34:37 -0400
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2026-05-12 01:43:53 +0300
commita4e8f716a2cd682e1fd89eafbee45845648cdf72 (patch)
treebbcb761407784b2a77d12b02e0eac95237424acc
parent6b945de4e55b471100b534fd4b1f02d1443b19ea (diff)
FIX - Prejump regressions
-rw-r--r--indra/newview/app_settings/settings.xml2
-rw-r--r--indra/newview/llagent.cpp9
2 files changed, 7 insertions, 4 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 7c98572d07..dcae9b9e12 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -492,7 +492,7 @@
<key>RecentJumpThresholdSecs</key>
<map>
<key>Comment</key>
- <string>Seconds after a jump input during which finish-anim is suppressed to avoid interrupting rapid successive jumps.</string>
+ <string>Seconds after jump input during which landing finish-anim is suppressed to avoid interrupting rapid successive jumps.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 3f5c0ad843..123ffa676e 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -2669,17 +2669,20 @@ void LLAgent::onAnimStop(const LLUUID& id)
else if (id == ANIM_AGENT_PRE_JUMP || id == ANIM_AGENT_LAND || id == ANIM_AGENT_MEDIUM_LAND)
{
// FIRE-34049/FIRE-34273/https://github.com/secondlife/viewer/issues/4218
- // Avoid forcing AGENT_CONTROL_FINISH_ANIM, which can short-circuit the next pre-jump
- // during rapid successive jumps.
+ // Avoid forcing AGENT_CONTROL_FINISH_ANIM on landing, which can short-circuit the
+ // next pre-jump during rapid successive jumps.
+ // Do not suppress pre-jump finish, otherwise a quick tap from standing can stall.
// TODO: a more robust fix would require knowing which specific animation finished,
// information that is not currently provided by the simulator.
+ const bool is_landing_anim = (id == ANIM_AGENT_LAND || id == ANIM_AGENT_MEDIUM_LAND);
const bool up_pos = (mControlFlags & AGENT_CONTROL_UP_POS) != 0;
const F64 now = LLTimer::getTotalSeconds();
const F64 elapsed = now - mLastJumpInputTime;
static LLCachedControl<F32> recent_jump_threshold_secs(gSavedSettings, "RecentJumpThresholdSecs", 1.0);
const bool recent_jump = (mLastJumpInputTime > 0.0) && (elapsed < recent_jump_threshold_secs);
+ const bool suppress_finish = is_landing_anim && recent_jump;
- if (!up_pos && !recent_jump)
+ if (!up_pos && !suppress_finish)
{
setControlFlags(AGENT_CONTROL_FINISH_ANIM);
}