summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerinput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llviewerinput.cpp')
-rw-r--r--indra/newview/llviewerinput.cpp68
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);
}