From 091cee673f25d0bd6dcdcb8dfe5254c22784d58f Mon Sep 17 00:00:00 2001
From: XenHat <commits@xenh.at>
Date: Tue, 26 Jan 2021 15:05:34 -0500
Subject: [PATCH] Add option to control hover text fade distance and range. No
 UI yet.

---
 .../newview/app_settings/settings_alchemy.xml | 24 ++++++++++++++++++-
 indra/newview/llhudtext.cpp                   | 19 ++++++++++++---
 indra/newview/llhudtext.h                     |  1 +
 indra/newview/llviewercontrol.cpp             |  3 +++
 4 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml
index 5bf29f2db7b..6baa80dc1b9 100644
--- a/indra/newview/app_settings/settings_alchemy.xml
+++ b/indra/newview/app_settings/settings_alchemy.xml
@@ -255,9 +255,31 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>AlchemyHudTextFadeDistance</key>
+    <map>
+        <key>Comment</key>
+        <string>Distance at which hover text starts fading.</string>
+        <key>Persist</key>
+        <integer>1</integer>
+        <key>Type</key>
+        <string>F32</string>
+        <key>Value</key>
+        <real>4.0</real>
+    </map>
+    <key>AlchemyHudTextFadeRange</key>
+    <map>
+        <key>Comment</key>
+        <string>Distance over which hover text will fade out.</string>
+        <key>Persist</key>
+        <integer>1</integer>
+        <key>Type</key>
+        <string>F32</string>
+        <key>Value</key>
+        <real>8.0</real>
+    </map>
     <key>AlchemyLookAtShow</key>
     <map>
-      <key>Comment</key>
+        <key>Comment</key>
       <string>If true, avatar look at beacons will be displayed</string>
       <key>Persist</key>
       <integer>1</integer>
diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp
index 62314039b4c..f4b5d0bd7cd 100644
--- a/indra/newview/llhudtext.cpp
+++ b/indra/newview/llhudtext.cpp
@@ -89,8 +89,8 @@ LLHUDText::LLHUDText(const U8 type) :
 {
 	mColor = LLColor4(1.f, 1.f, 1.f, 1.f);
 	mDoFade = TRUE;
-	mFadeDistance = 8.f;
-	mFadeRange = 4.f;
+	mFadeDistance = gSavedSettings.getF32("AlchemyHudTextFadeDistance");
+	mFadeRange = gSavedSettings.getF32("AlchemyHudTextFadeRange");
 	mZCompare = TRUE;
 	mOffscreen = FALSE;
 	mRadius = 0.1f;
@@ -129,7 +129,7 @@ void LLHUDText::renderText()
 	LLColor4 text_color = mColor;
 	if (mDoFade)
 	{
-		if (mLastDistance > mFadeDistance)
+		if (mLastDistance > mFadeDistance && mFadeRange > 0.f)
 		{
 			alpha_factor = llmax(0.f, 1.f - (mLastDistance - mFadeDistance)/mFadeRange);
 			text_color.mV[3] = text_color.mV[3]*alpha_factor;
@@ -690,3 +690,16 @@ void LLHUDText::refreshAllObjectText(EObjectTextFilter eObjFilter)
 	}
 }
 // [/RLVa:KB]
+
+void LLHUDText::onFadeSettingsChanged()
+{
+	for (TextObjectIterator it = sTextObjects.begin(); it != sTextObjects.end(); ++it)
+	{
+		LLHUDText* text = *it;
+		if (text)
+		{
+			text->mFadeDistance = gSavedSettings.getF32("AlchemyHudTextFadeDistance");
+			text->mFadeRange = gSavedSettings.getF32("AlchemyHudTextFadeRange");
+		}
+	}
+}
\ No newline at end of file
diff --git a/indra/newview/llhudtext.h b/indra/newview/llhudtext.h
index 1a548cf9de7..7043d7afad3 100644
--- a/indra/newview/llhudtext.h
+++ b/indra/newview/llhudtext.h
@@ -131,6 +131,7 @@ class LLHUDText final : public LLHUDObject
 	enum EObjectTextFilter { OTF_NONE, OTF_HUD_ATTACHMENTS };
 	static void        refreshAllObjectText(EObjectTextFilter eObjFilter = OTF_NONE);
 // [/RLVa:KB]
+	static void onFadeSettingsChanged();
 protected:
 	LLHUDText(const U8 type);
 
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index fc5abcdbe48..a5f26dced31 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -43,6 +43,7 @@
 #include "llfeaturemanager.h"
 #include "llviewershadermgr.h"
 
+#include "llhudtext.h"
 #include "llsky.h"
 #include "llvieweraudio.h"
 #include "llviewermenu.h"
@@ -799,6 +800,8 @@ void settings_setup_listeners()
 // [RLVa:KB] - Checked: 2015-12-27 (RLVa-1.5.0)
 	gSavedSettings.getControl(RlvSettingNames::Main)->getSignal()->connect(boost::bind(&RlvSettings::onChangedSettingMain, _2));
 // [/RLVa:KB]
+	gSavedSettings.getControl("AlchemyHudTextFadeDistance")->getSignal()->connect(boost::bind(&LLHUDText::onFadeSettingsChanged));
+	gSavedSettings.getControl("AlchemyHudTextFadeRange")->getSignal()->connect(boost::bind(&LLHUDText::onFadeSettingsChanged));
 }
 
 #if TEST_CACHED_CONTROL
-- 
GitLab