From 0d853708bf1ae4d5162fc7826301820bdcf5cd0b Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Fri, 9 Apr 2010 22:31:27 -0700 Subject: Added ugly checkbox to toggle shadows in Preferences > Advanced --- linden/indra/newview/app_settings/settings.xml | 11 ++++++++ linden/indra/newview/llprefsadvanced.cpp | 31 ++++++++++++++++++++++ .../skins/default/xui/en-us/notifications.xml | 7 +++++ .../xui/en-us/panel_preferences_advanced.xml | 13 ++++++--- 4 files changed, 59 insertions(+), 3 deletions(-) diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index 072a0f4..8984e04 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml @@ -37,6 +37,17 @@ Value 0 + ShadowsEnabled + + Comment + Whether or not shadows have been enabled (does not actually toggle them) + Persist + 1 + Type + Boolean + Value + 0 + ShowStatusBarInMouselook Comment diff --git a/linden/indra/newview/llprefsadvanced.cpp b/linden/indra/newview/llprefsadvanced.cpp index 1ecc0ec..88f066c 100644 --- a/linden/indra/newview/llprefsadvanced.cpp +++ b/linden/indra/newview/llprefsadvanced.cpp @@ -59,6 +59,37 @@ void LLPrefsAdvanced::apply() gSavedSettings.setBOOL("DisableLoginLogoutScreens", childGetValue("disable_log_screen_check")); gSavedSettings.setBOOL("DisableTeleportScreens", childGetValue("disable_tp_screen_check")); gSavedSettings.setBOOL("ClothingLayerProtection", childGetValue("client_name_tag_check")); + + // This is bad bad BAD UI from Emerald, I know. + // If anyone wants to do this better, please do -- MC + if ( childGetValue("shadows_check").asBoolean() ) + { + if ( (gSavedSettings.getU32("RenderQualityPerformance") < 3) // Make sure we have everything enabled + || !gSavedSettings.getBOOL("WindLightUseAtmosShaders") + || !gSavedSettings.getBOOL("VertexShaderEnable") ) + { + childSetValue("shadows_check", FALSE); + LLNotifications::instance().add("NoShadows"); + llwarns << "Attempting to enable shadow rendering while graphics settings less than Ultra or shaders are missing!" << llendl; + } + else if ( (gSavedSettings.getBOOL("WindLightUseAtmosShaders") // If we do, toggle shadows in the correct order + && gSavedSettings.getBOOL("VertexShaderEnable")) ) + { + gSavedSettings.setBOOL("RenderUseFBO", childGetValue("shadows_check").asBoolean()); + gSavedSettings.setBOOL("RenderDeferred", childGetValue("shadows_check").asBoolean()); + llinfos << "Shadow rendering enabled" << llendl; + } + } + else if (!childGetValue("shadows_check").asBoolean()) + { + if (gSavedSettings.getBOOL("RenderDeferred")) + { + gSavedSettings.setBOOL("RenderDeferred", childGetValue("shadows_check").asBoolean()); + gSavedSettings.setBOOL("RenderUseFBO", childGetValue("shadows_check").asBoolean()); + llinfos << "Shadow rendering disabled" << llendl; + } + } + gSavedSettings.setBOOL("ShadowsEnabled", childGetValue("shadows_check").asBoolean()); } void LLPrefsAdvanced::cancel() diff --git a/linden/indra/newview/skins/default/xui/en-us/notifications.xml b/linden/indra/newview/skins/default/xui/en-us/notifications.xml index 9e97930..b35ee4f 100644 --- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml +++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml @@ -6678,6 +6678,13 @@ Go to the Official Imprudence Forums to discuss the Imprudence Project. Use the toolbar to toggle the AO on/off. + + Shadows cannot be enabled due to your graphics settings being set too low. Make sure your graphics settings are set to Ultra with Basic and Atmospheric Shaders enabled. + + diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml index 417097d..39a3111 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml @@ -2,6 +2,9 @@ + + + + font="SansSerifSmall" height="16" initial_value="false" + label="Show Client Names in Name Tag" left="12" mouse_opaque="true" + name="client_name_tag_check" radio_style="false" width="217" /> + -- cgit v1.1