diff options
author | andreykproductengine <andreykproductengine@lindenlab.com> | 2019-10-28 19:34:40 +0200 |
---|---|---|
committer | andreykproductengine <andreykproductengine@lindenlab.com> | 2019-10-28 19:34:40 +0200 |
commit | eb54fccff7bb6e6c8eacdb460b4647f70bd9bffd (patch) | |
tree | f203f69822a92b1c21f0660f02530e48d617b438 /indra | |
parent | 8ccf79735ec399cc6b88f25cd2ceafac6858ecd2 (diff) |
SL-6109 Better running
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llviewerinput.cpp | 68 |
1 files changed, 48 insertions, 20 deletions
diff --git a/indra/newview/llviewerinput.cpp b/indra/newview/llviewerinput.cpp index 8df66b4ce9..50618350be 100644 --- a/indra/newview/llviewerinput.cpp +++ b/indra/newview/llviewerinput.cpp @@ -650,15 +650,22 @@ bool start_gesture( EKeystate s ) bool run_forward(EKeystate s) { - if (KEYSTATE_DOWN == s) + if (KEYSTATE_UP != s) { - gAgent.setAlwaysRun(); - gAgent.setRunning(); - gAgent.sendWalkRun(true); + if (gAgent.mDoubleTapRunMode != LLAgent::DOUBLETAP_FORWARD) + { + gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_FORWARD; + } + if (!gAgent.getRunning()) + { + gAgent.setRunning(); + gAgent.sendWalkRun(true); + } } else if(KEYSTATE_UP == s) { - gAgent.clearAlwaysRun(); + if (gAgent.mDoubleTapRunMode == LLAgent::DOUBLETAP_FORWARD) + gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_NONE; gAgent.clearRunning(); gAgent.sendWalkRun(false); } @@ -668,15 +675,22 @@ bool run_forward(EKeystate s) bool run_backward(EKeystate s) { - if (KEYSTATE_DOWN == s) + if (KEYSTATE_UP != s) { - gAgent.setAlwaysRun(); - gAgent.setRunning(); - gAgent.sendWalkRun(true); + if (gAgent.mDoubleTapRunMode != LLAgent::DOUBLETAP_BACKWARD) + { + gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_BACKWARD; + } + if (!gAgent.getRunning()) + { + gAgent.setRunning(); + gAgent.sendWalkRun(true); + } } else if (KEYSTATE_UP == s) { - gAgent.clearAlwaysRun(); + if (gAgent.mDoubleTapRunMode == LLAgent::DOUBLETAP_BACKWARD) + gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_NONE; gAgent.clearRunning(); gAgent.sendWalkRun(false); } @@ -686,15 +700,22 @@ bool run_backward(EKeystate s) bool run_left(EKeystate s) { - if (KEYSTATE_DOWN == s) + if (KEYSTATE_UP != s) { - gAgent.setAlwaysRun(); - gAgent.setRunning(); - gAgent.sendWalkRun(true); + if (gAgent.mDoubleTapRunMode != LLAgent::DOUBLETAP_SLIDELEFT) + { + gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_SLIDELEFT; + } + if (!gAgent.getRunning()) + { + gAgent.setRunning(); + gAgent.sendWalkRun(true); + } } else if (KEYSTATE_UP == s) { - gAgent.clearAlwaysRun(); + if (gAgent.mDoubleTapRunMode == LLAgent::DOUBLETAP_SLIDELEFT) + gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_NONE; gAgent.clearRunning(); gAgent.sendWalkRun(false); } @@ -704,15 +725,22 @@ bool run_left(EKeystate s) bool run_right(EKeystate s) { - if (KEYSTATE_DOWN == s) + if (KEYSTATE_UP != s) { - gAgent.setAlwaysRun(); - gAgent.setRunning(); - gAgent.sendWalkRun(true); + if (gAgent.mDoubleTapRunMode != LLAgent::DOUBLETAP_SLIDERIGHT) + { + gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_SLIDERIGHT; + if (!gAgent.getRunning()) + { + gAgent.setRunning(); + gAgent.sendWalkRun(true); + } + } } else if (KEYSTATE_UP == s) { - gAgent.clearAlwaysRun(); + if (gAgent.mDoubleTapRunMode == LLAgent::DOUBLETAP_SLIDERIGHT) + gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_NONE; gAgent.clearRunning(); gAgent.sendWalkRun(false); } |