From 57bf6eafc1d0dc612971ca0ef523cc41c21bec95 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 b847923c9c..3ff4e4eb9d 100644 --- a/indra/newview/llviewerinput.cpp +++ b/indra/newview/llviewerinput.cpp @@ -652,15 +652,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); } @@ -670,15 +677,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); } @@ -688,15 +702,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); } @@ -706,15 +727,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