From 7f9ea3fee77419a42522e6a50c7883b515f50c89 Mon Sep 17 00:00:00 2001
From: Xenhat Hex <commits@xenh.at>
Date: Sat, 29 May 2021 00:26:39 -0400
Subject: [PATCH] Port MoonWalk feature. Fix #52.

---
 indra/newview/app_settings/settings_alchemy.xml       | 11 +++++++++++
 indra/newview/llvoavatar.cpp                          |  3 ++-
 .../skins/default/xui/en/panel_preferences_move.xml   | 10 ++++++++++
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml
index 5e491669c53..8daf8ea584d 100644
--- a/indra/newview/app_settings/settings_alchemy.xml
+++ b/indra/newview/app_settings/settings_alchemy.xml
@@ -277,6 +277,17 @@
       <key>Value</key>
       <real>8.0</real>
     </map>
+    <key>AlchemyMoonWalk</key>
+      <map>
+      <key>Comment</key>
+      <string>Walking backwards when moving backwards</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>AlchemyLookAtShow</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 836d8e0fa47..d2c88631cbd 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -4205,7 +4205,8 @@ void LLVOAvatar::updateOrientation(LLAgent& agent, F32 speed, F32 delta_time)
 			}
 			LLVector3 velDir = getVelocity();
 			velDir.normalize();
-			if ( mSignaledAnimations.find(ANIM_AGENT_WALK) != mSignaledAnimations.end())
+			static LLCachedControl<bool> moon_walk(gSavedSettings, "AlchemyMoonWalk", false);
+			if (!moon_walk && mSignaledAnimations.find(ANIM_AGENT_WALK) != mSignaledAnimations.end())
 			{
 				F32 vpD = velDir * primDir;
 				if (vpD < -0.5f)
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
index 32573faf1d7..95415b25c05 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
@@ -139,6 +139,16 @@
    name="automatic_fly"
    width="237"
    top_pad="0"/>
+  <check_box
+   control_name="AlchemyMoonWalk"
+   follows="left|top"
+   height="20"
+   label="Enable Moon Walk"
+   layout="topleft"
+   left_delta="0"
+   name="moon_walk"
+   width="237"
+   top_pad="0"/>
   <text
    follows="left|top"
    type="string"
-- 
GitLab