summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrish <sl.trish.ace@gmail.com>2026-02-11 02:49:18 -0500
committerTrish <sl.trish.ace@gmail.com>2026-02-11 02:49:18 -0500
commit7e9cc1a55a89650066aa2081d2d895d1b10a0b5b (patch)
tree384bd332af7b1d90b55e4f1744dd43a4e2bec29b
parent6be26a000007af922788ccfd94ec0c6835b1d28e (diff)
FIX - prejump bug
-rw-r--r--indra/newview/llagent.cpp20
-rw-r--r--indra/newview/llagent.h1
2 files changed, 20 insertions, 1 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 60af0cad05..71883c8f42 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -425,6 +425,8 @@ LLAgent::LLAgent() :
mIsDoNotDisturb(false),
+ mLastJumpRequestTime(0.0),
+
mControlFlags(0x00000000),
mAutoPilot(false),
@@ -677,6 +679,10 @@ void LLAgent::moveAt(S32 direction, bool reset)
if (direction > 0)
{
+ if (!getFlying())
+ {
+ mLastJumpRequestTime = LLTimer::getTotalSeconds();
+ }
setControlFlags(AGENT_CONTROL_AT_POS | AGENT_CONTROL_FAST_AT);
}
else if (direction < 0)
@@ -2663,7 +2669,19 @@ void LLAgent::onAnimStop(const LLUUID& id)
}
else if (id == ANIM_AGENT_PRE_JUMP || id == ANIM_AGENT_LAND || id == ANIM_AGENT_MEDIUM_LAND)
{
- setControlFlags(AGENT_CONTROL_FINISH_ANIM);
+ // If the jump key is currently held, avoid forcing a finish-anim that can
+ // short-circuit the next pre-jump in cases of rapid successive jumps.
+ // Bug amplified since v7 viewers or so, likely caused by https://github.com/FirestormViewer/phoenix-firestorm/commit/da87e8bd370ea079576f8b412a4ddb80c0715bd1
+ // TODO: the real fix would be to discern which anim the viewer finished, but this requires simulator fixes.
+ const bool up_pos = (mControlFlags & AGENT_CONTROL_UP_POS) != 0;
+ const F64 now = LLTimer::getTotalSeconds();
+ const F64 elapsed = now - mLastJumpRequestTime;
+ const bool recent_jump = (mLastJumpRequestTime > 0.0) && (elapsed < 1.0);
+
+ if (!up_pos && !recent_jump)
+ {
+ setControlFlags(AGENT_CONTROL_FINISH_ANIM);
+ }
}
}
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 3352890d99..a62c915ff1 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -487,6 +487,7 @@ private:
S32 mControlsTakenCount[TOTAL_CONTROLS];
S32 mControlsTakenPassedOnCount[TOTAL_CONTROLS];
U32 mControlFlags; // Replacement for the mFooKey's
+ F64 mLastJumpRequestTime;
//--------------------------------------------------------------------
// Animations