From eb54fccff7bb6e6c8eacdb460b4647f70bd9bffd Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Mon, 28 Oct 2019 19:34:40 +0200 Subject: SL-6109 Better running --- indra/newview/llviewerinput.cpp | 68 +++++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 20 deletions(-) (limited to 'indra') 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); } -- cgit v1.2.3