From 56809d4eedd6f83ae5f018d8be9fb4234ef46224 Mon Sep 17 00:00:00 2001 From: Hadet Date: Sun, 31 May 2026 19:36:28 -0500 Subject: Add Teleports preferences tab: keep camera on local teleport and disable teleport screen --- indra/newview/app_settings/settings.xml | 22 +++++++++++ indra/newview/llviewerdisplay.cpp | 6 +++ indra/newview/llviewermessage.cpp | 11 +++++- .../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 @@ Value 0 + KeepCameraOnLocalTeleport + + Comment + Do not reset the camera position or mode when teleporting within the same region. + Persist + 1 + Type + Boolean + Value + 0 + + DisableTeleportScreens + + Comment + Do not show the fullscreen teleport progress/black screen during teleports. + Persist + 1 + Type + Boolean + Value + 0 + MiniMapAutoCenter Comment 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 @@ + + + + + Teleport Options + + + + + + + + -- cgit v1.3