From 063a682169990b8d74106b2dea130a590c73b7ba Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Wed, 25 Jan 2023 08:27:57 -0500
Subject: [PATCH] Add option to ignore sim camera constraints

---
 indra/newview/app_settings/settings_alchemy.xml | 11 +++++++++++
 indra/newview/llviewermessage.cpp               | 10 +++++++++-
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml
index 316aaed9684..d91336951da 100644
--- a/indra/newview/app_settings/settings_alchemy.xml
+++ b/indra/newview/app_settings/settings_alchemy.xml
@@ -332,6 +332,17 @@
       <key>Value</key>
       <real>8.0</real>
     </map>
+    <key>AlchemyIgnoreSimCameraConstraint</key>
+    <map>
+      <key>Comment</key>
+      <string>Ignore simulator collision plane for camera constraints</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>AlchemyImageDecodeThreads</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index c2a33f02ab9..5c749dd8aa9 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -4584,8 +4584,16 @@ void process_avatar_appearance(LLMessageSystem *mesgsys, void **user_data)
 
 void process_camera_constraint(LLMessageSystem *mesgsys, void **user_data)
 {
+	static LLCachedControl<bool> disable_sim_cam_constraint(gSavedSettings, "AlchemyIgnoreSimCameraConstraint", false);
 	LLVector4 cameraCollidePlane;
-	mesgsys->getVector4Fast(_PREHASH_CameraCollidePlane, _PREHASH_Plane, cameraCollidePlane);
+	if(disable_sim_cam_constraint)
+	{
+		cameraCollidePlane.clearVec();	
+	}
+	else
+	{
+		mesgsys->getVector4Fast(_PREHASH_CameraCollidePlane, _PREHASH_Plane, cameraCollidePlane);
+	}
 
 	gAgentCamera.setCameraCollidePlane(cameraCollidePlane);
 }
-- 
GitLab