summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-08-03 20:18:30 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-08-03 20:18:30 +0300
commite8dc5e27ce00ad911bf04b4aef4bbcf6190930b9 (patch)
tree7f2d206b7f9032d49ee68899af890fb2bc08d1c6
parentdc1a194507f18167fa10ab239d63f008a5ab323c (diff)
SL-15746 Turning right has priority over turning left
Does not cover other opposite-direction movements since only rotation is viewer handled.
-rw-r--r--indra/newview/llagent.cpp6
-rw-r--r--indra/newview/llviewermessage.cpp7
2 files changed, 13 insertions, 0 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 389448654a..41578f2328 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -713,6 +713,12 @@ void LLAgent::moveYaw(F32 mag, bool reset_view)
setControlFlags(AGENT_CONTROL_YAW_NEG);
}
+ U32 mask = AGENT_CONTROL_YAW_POS | AGENT_CONTROL_YAW_NEG;
+ if ((getControlFlags() & mask) == mask)
+ {
+ gAgentCamera.setYawKey(0);
+ }
+
if (reset_view)
{
gAgentCamera.resetView();
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 39c891c9c1..9c6c0d03db 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3333,6 +3333,13 @@ void send_agent_update(BOOL force_send, BOOL send_reliable)
// trigger a control event.
U32 control_flags = gAgent.getControlFlags();
+ // Rotation into both directions should cancel out
+ U32 mask = AGENT_CONTROL_YAW_POS | AGENT_CONTROL_YAW_NEG;
+ if ((control_flags & mask) == mask)
+ {
+ control_flags &= ~mask;
+ }
+
MASK key_mask = gKeyboard->currentMask(TRUE);
if (key_mask & MASK_ALT || key_mask & MASK_CONTROL)