diff options
| author | Hadet <hadet@Mac.lan> | 2026-05-31 19:36:28 -0500 |
|---|---|---|
| committer | Erik Kundiman <erik@megapahit.org> | 2026-06-01 08:33:17 +0700 |
| commit | 56809d4eedd6f83ae5f018d8be9fb4234ef46224 (patch) | |
| tree | 5dbde10556b8695c8d8cea7f45cce9a3c38e5e2a /indra | |
| parent | 3b07dcd3de61bb47d7f5574606253996d7e85af7 (diff) | |
Add Teleports preferences tab: keep camera on local teleport and disable teleport screen
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 22 | ||||
| -rw-r--r-- | indra/newview/llviewerdisplay.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llviewermessage.cpp | 11 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_move.xml | 46 |
4 files changed, 83 insertions, 2 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index babf320361..8b6c5e2e1a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4741,6 +4741,28 @@ <key>Value</key> <integer>0</integer> </map> + <key>KeepCameraOnLocalTeleport</key> + <map> + <key>Comment</key> + <string>Do not reset the camera position or mode when teleporting within the same region.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> + <key>DisableTeleportScreens</key> + <map> + <key>Comment</key> + <string>Do not show the fullscreen teleport progress/black screen during teleports.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>MiniMapAutoCenter</key> <map> <key>Comment</key> diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 7d97151e9d..59dc4319e1 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -280,6 +280,12 @@ static void update_tp_display(bool minimized) F32 teleport_save_time = TELEPORT_EXPIRY + TELEPORT_EXPIRY_PER_ATTACHMENT * attach_count; F32 teleport_elapsed = gTeleportDisplayTimer.getElapsedTimeF32(); F32 teleport_percent = teleport_elapsed * (100.f / teleport_save_time); + + // Reuse the minimized-window path to suppress the teleport progress screen. + if (gSavedSettings.getBOOL("DisableTeleportScreens")) + { + minimized = true; + } if (gAgent.getTeleportState() != LLAgent::TELEPORT_START && teleport_percent > 100.f) { // Give up. Don't keep the UI locked forever. diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index b8515fd92b..1c6544f3f9 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -6120,11 +6120,18 @@ void process_teleport_local(LLMessageSystem *msg,void**) } gAgent.setPositionAgent(pos); - gAgentCamera.slamLookAt(look_at); + + bool keep_camera_local_tp = gSavedSettings.getBOOL("KeepCameraOnLocalTeleport"); + + if (!keep_camera_local_tp) + { + gAgentCamera.slamLookAt(look_at); + } if ( !(gAgent.getTeleportKeepsLookAt() && LLViewerJoystick::getInstance()->getOverrideCamera()) ) { - gAgentCamera.resetView(true, true); + // resetView still runs (cleanup); the false args just leave the camera alone. + gAgentCamera.resetView(!keep_camera_local_tp, !keep_camera_local_tp); } // send camera update to new region 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 5d4dfdfe87..ad24451e24 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml @@ -407,6 +407,52 @@ </panel> + <!-- ── Teleports tab ──────────────────────────────────────────────── --> + <panel + label="Teleports" + name="teleports_panel" + layout="topleft" + follows="top|left"> + + <text + type="string" + follows="left|top" + font="SansSerifSmallBold" + height="20" + layout="topleft" + left="10" + name="teleport_header" + top="10" + width="490"> + Teleport Options + </text> + + <check_box + control_name="KeepCameraOnLocalTeleport" + follows="left|top" + height="20" + label="Keep camera position on local teleport" + layout="topleft" + left="15" + name="keep_camera_on_local_teleport" + top_pad="8" + tool_tip="When teleporting within the same region, do not reset the camera position or mode (stays in mouselook/over-the-shoulder)" + width="450" /> + + <check_box + control_name="DisableTeleportScreens" + follows="left|top" + height="20" + label="Disable teleport progress screen" + layout="topleft" + left="15" + name="disable_teleport_screens" + top_pad="6" + tool_tip="Do not show the fullscreen progress/black screen during teleports" + width="450" /> + + </panel> + </tab_container> </panel> |
