From 78a279b4795a6f6ce01a505627fe03cb46bbd279 Mon Sep 17 00:00:00 2001 From: krzys-h Date: Fri, 14 Aug 2015 13:36:23 +0200 Subject: [PATCH] Better shadow type selection UI --- po/colobot.pot | 6 +- po/de.po | 14 +- po/fr.po | 14 +- po/pl.po | 15 ++- po/ru.po | 14 +- src/common/event.cpp | 2 +- src/common/event.h | 2 +- src/common/restext.cpp | 6 +- src/common/settings.cpp | 4 - src/graphics/engine/engine.cpp | 21 +-- src/graphics/engine/engine.h | 12 +- src/level/robotmain.cpp | 1 - src/ui/screen/screen_setup_graphics.cpp | 164 ++++++++++++------------ 13 files changed, 123 insertions(+), 152 deletions(-) diff --git a/po/colobot.pot b/po/colobot.pot index d2339730..291a4423 100644 --- a/po/colobot.pot +++ b/po/colobot.pot @@ -444,13 +444,13 @@ msgstr "" msgid "MSAA\\Multisample anti-aliasing" msgstr "" -msgid "Simple shadows\\Shadows on the ground" +msgid "Simple shadows\\Shadows spots on the ground" msgstr "" -msgid "Shadow mapping\\Beautiful shadows!" +msgid "Dynamic shadows\\Beautiful shadows!" msgstr "" -msgid "Better shadow maps\\Shadow transparency and self shadowing" +msgid "Quality dynamic shadows\\Enable shadow transparency and self shadowing" msgstr "" msgid "Shadow resolution\\Higher means better range and quality, but slower" diff --git a/po/de.po b/po/de.po index 29bf9d08..2f753bb1 100644 --- a/po/de.po +++ b/po/de.po @@ -185,9 +185,6 @@ msgstr "Rückwärts\\Bewegung nach hinten" msgid "Bad argument for \"new\"" msgstr "Falsche Argumente für \"new\"" -msgid "Better shadow maps\\Shadow transparency and self shadowing" -msgstr "" - msgid "Big indent\\Indent 2 or 4 spaces per level defined by braces" msgstr "Einrücken mit 4 Leerstellen\\Einrücken mit 2 oder 4 Leerstellen" @@ -513,6 +510,9 @@ msgstr "Schmutz\\Schmutz auf Robotern und Bauten" msgid "Dynamic lighting\\Mobile light sources" msgstr "Dynamische Beleuchtung\\Dynamische Beleuchtung" +msgid "Dynamic shadows\\Beautiful shadows!" +msgstr "" + msgid "Edit the selected program" msgstr "Gewähltes Programm bearbeiten" @@ -1183,6 +1183,9 @@ msgstr "Öffentlich\\Gemeinsamer Ordner für alle Spieler" msgid "Quake at explosions\\The screen shakes at explosions" msgstr "Beben bei Explosionen\\Die Kamera bebt bei Explosionen" +msgid "Quality dynamic shadows\\Enable shadow transparency and self shadowing" +msgstr "" + msgid "Quit\\Quit Colobot: Gold Edition" msgstr "" @@ -1328,9 +1331,6 @@ msgstr "Astronauten auswählen\\Astronauten auswählen" msgid "Semicolon terminator missing" msgstr "Es fehlt ein Strichpunkt \";\" am Ende der Anweisung" -msgid "Shadow mapping\\Beautiful shadows!" -msgstr "" - msgid "Shadow resolution\\Higher means better range and quality, but slower" msgstr "" @@ -1362,7 +1362,7 @@ msgid "Sign \" : \" missing" msgstr "Es fehlt ein Doppelpunkt \" : \"" #, fuzzy -msgid "Simple shadows\\Shadows on the ground" +msgid "Simple shadows\\Shadows spots on the ground" msgstr "Schatten\\Schlagschatten auf dem Boden" msgid "Size 1" diff --git a/po/fr.po b/po/fr.po index 99378d3b..19899c39 100644 --- a/po/fr.po +++ b/po/fr.po @@ -180,9 +180,6 @@ msgstr "Reculer\\Moteur en arrière" msgid "Bad argument for \"new\"" msgstr "Mauvais argument pour \"new\"" -msgid "Better shadow maps\\Shadow transparency and self shadowing" -msgstr "" - msgid "Big indent\\Indent 2 or 4 spaces per level defined by braces" msgstr "Grande indentation\\Indente avec 2 ou 4 espaces" @@ -508,6 +505,9 @@ msgstr "Salissures\\Salissures des robots et bâtiments" msgid "Dynamic lighting\\Mobile light sources" msgstr "Lumières dynamiques\\Éclairages mobiles" +msgid "Dynamic shadows\\Beautiful shadows!" +msgstr "" + msgid "Edit the selected program" msgstr "Édite le programme sélectionné" @@ -1179,6 +1179,9 @@ msgstr "Public\\Dossier commun à tous les joueurs" msgid "Quake at explosions\\The screen shakes at explosions" msgstr "Secousses lors d'explosions\\L'écran vibre lors d'une explosion" +msgid "Quality dynamic shadows\\Enable shadow transparency and self shadowing" +msgstr "" + msgid "Quit\\Quit Colobot: Gold Edition" msgstr "" @@ -1324,9 +1327,6 @@ msgstr "Sélectionner le cosmonaute\\Sélectionner le cosmonaute" msgid "Semicolon terminator missing" msgstr "Terminateur point-virgule non trouvé" -msgid "Shadow mapping\\Beautiful shadows!" -msgstr "" - msgid "Shadow resolution\\Higher means better range and quality, but slower" msgstr "" @@ -1358,7 +1358,7 @@ msgid "Sign \" : \" missing" msgstr "Séparateur \" : \" attendu" #, fuzzy -msgid "Simple shadows\\Shadows on the ground" +msgid "Simple shadows\\Shadows spots on the ground" msgstr "Ombres\\Ombres projetées au sol" msgid "Size 1" diff --git a/po/pl.po b/po/pl.po index 487c1549..7ad72cda 100644 --- a/po/pl.po +++ b/po/pl.po @@ -188,9 +188,6 @@ msgstr "Wstecz\\Porusza do tyłu" msgid "Bad argument for \"new\"" msgstr "Zły argument dla funkcji \"new\"" -msgid "Better shadow maps\\Shadow transparency and self shadowing" -msgstr "" - msgid "Big indent\\Indent 2 or 4 spaces per level defined by braces" msgstr "" "Duże wcięcie\\2 lub 4 spacje wcięcia na każdy poziom zdefiniowany przez " @@ -515,6 +512,9 @@ msgstr "Kurz\\Kurz i bród na robotach i budynkach" msgid "Dynamic lighting\\Mobile light sources" msgstr "Dynamiczne oświetlenie\\Ruchome źródła światła" +msgid "Dynamic shadows\\Beautiful shadows!" +msgstr "" + msgid "Edit the selected program" msgstr "Edytuj zaznaczony program" @@ -1183,6 +1183,9 @@ msgstr "Publiczny\\Folder ogólnodostępny" msgid "Quake at explosions\\The screen shakes at explosions" msgstr "Wstrząsy przy wybuchach\\Ekran trzęsie się podczas wybuchów" +msgid "Quality dynamic shadows\\Enable shadow transparency and self shadowing" +msgstr "" + msgid "Quit\\Quit Colobot: Gold Edition" msgstr "Wyjdź\\Kończy grę Colobot: Gold Edition" @@ -1326,9 +1329,6 @@ msgstr "Zaznacz astronautę\\Zaznacza astronautę" msgid "Semicolon terminator missing" msgstr "Brak średnika na końcu wiersza" -msgid "Shadow mapping\\Beautiful shadows!" -msgstr "" - msgid "Shadow resolution\\Higher means better range and quality, but slower" msgstr "" @@ -1359,7 +1359,8 @@ msgstr "Pokaż rozwiązanie" msgid "Sign \" : \" missing" msgstr "Brak znaku \" :\"" -msgid "Simple shadows\\Shadows on the ground" +#, fuzzy +msgid "Simple shadows\\Shadows spots on the ground" msgstr "Proste cienie\\Cienie na ziemi" msgid "Size 1" diff --git a/po/ru.po b/po/ru.po index 7c8bc5c2..ad899276 100644 --- a/po/ru.po +++ b/po/ru.po @@ -180,9 +180,6 @@ msgstr "Назад\\Двигаться назад" msgid "Bad argument for \"new\"" msgstr "Неверный аргумент для \"new\"" -msgid "Better shadow maps\\Shadow transparency and self shadowing" -msgstr "" - msgid "Big indent\\Indent 2 or 4 spaces per level defined by braces" msgstr "Большой отступ\\Отступать на 2 или 4 пробела, в зависимости от скобок" @@ -507,6 +504,9 @@ msgstr "Пыль\\Пыль и грязь на ботах и зданиях" msgid "Dynamic lighting\\Mobile light sources" msgstr "Динамическое освещение\\Подвижные источники света" +msgid "Dynamic shadows\\Beautiful shadows!" +msgstr "" + msgid "Edit the selected program" msgstr "Изменить выбранную программу" @@ -1179,6 +1179,9 @@ msgstr "Общее\\Общая папка" msgid "Quake at explosions\\The screen shakes at explosions" msgstr "Землетряс. при взрывах\\Тряска экрана при взрывах" +msgid "Quality dynamic shadows\\Enable shadow transparency and self shadowing" +msgstr "" + msgid "Quit\\Quit Colobot: Gold Edition" msgstr "" @@ -1322,9 +1325,6 @@ msgstr "Выбор астронавта\\Выбор астронавта" msgid "Semicolon terminator missing" msgstr "Отсутствует точка с запятой" -msgid "Shadow mapping\\Beautiful shadows!" -msgstr "" - msgid "Shadow resolution\\Higher means better range and quality, but slower" msgstr "" @@ -1356,7 +1356,7 @@ msgid "Sign \" : \" missing" msgstr "Знак \" : \" отсутствует" #, fuzzy -msgid "Simple shadows\\Shadows on the ground" +msgid "Simple shadows\\Shadows spots on the ground" msgstr "Тени\\Тени на земле" msgid "Size 1" diff --git a/src/common/event.cpp b/src/common/event.cpp index cca56a9b..8a4ff92c 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -193,7 +193,6 @@ void InitializeEventTypeTexts() EVENT_TYPE_TEXT[EVENT_INTERFACE_FULL] = "EVENT_INTERFACE_FULL"; EVENT_TYPE_TEXT[EVENT_INTERFACE_APPLY] = "EVENT_INTERFACE_APPLY"; - EVENT_TYPE_TEXT[EVENT_INTERFACE_SHADOW] = "EVENT_INTERFACE_SHADOW"; EVENT_TYPE_TEXT[EVENT_INTERFACE_DIRTY] = "EVENT_INTERFACE_DIRTY"; EVENT_TYPE_TEXT[EVENT_INTERFACE_LIGHT] = "EVENT_INTERFACE_LIGHT"; EVENT_TYPE_TEXT[EVENT_INTERFACE_PARTI] = "EVENT_INTERFACE_PARTI"; @@ -219,6 +218,7 @@ void InitializeEventTypeTexts() EVENT_TYPE_TEXT[EVENT_INTERFACE_TEXTURE_MIPMAP] = "EVENT_INTERFACE_TEXTURE_MIPMAP"; EVENT_TYPE_TEXT[EVENT_INTERFACE_TEXTURE_ANISOTROPY] = "EVENT_INTERFACE_TEXTURE_ANISOTROPY"; EVENT_TYPE_TEXT[EVENT_INTERFACE_MSAA] = "EVENT_INTERFACE_MSAA"; + EVENT_TYPE_TEXT[EVENT_INTERFACE_SHADOW_SPOTS] = "EVENT_INTERFACE_SHADOW_SPOTS"; EVENT_TYPE_TEXT[EVENT_INTERFACE_SHADOW_MAPPING] = "EVENT_INTERFACE_SHADOW_MAPPING"; EVENT_TYPE_TEXT[EVENT_INTERFACE_SHADOW_MAPPING_QUALITY] = "EVENT_INTERFACE_SHADOW_MAPPING_QUALITY"; EVENT_TYPE_TEXT[EVENT_INTERFACE_SHADOW_MAPPING_BUFFER] = "EVENT_INTERFACE_SHADOW_MAPPING_BUFFER"; diff --git a/src/common/event.h b/src/common/event.h index 384f14c9..5ebe5faf 100644 --- a/src/common/event.h +++ b/src/common/event.h @@ -217,7 +217,7 @@ enum EventType EVENT_INTERFACE_FULL = 442, EVENT_INTERFACE_APPLY = 443, - EVENT_INTERFACE_SHADOW = 451, + EVENT_INTERFACE_SHADOW_SPOTS = 451, EVENT_INTERFACE_DIRTY = 452, EVENT_INTERFACE_LIGHT = 457, EVENT_INTERFACE_PARTI = 458, diff --git a/src/common/restext.cpp b/src/common/restext.cpp index 844251e0..50a0ac79 100644 --- a/src/common/restext.cpp +++ b/src/common/restext.cpp @@ -219,9 +219,9 @@ void InitializeRestext() stringsEvent[EVENT_INTERFACE_TEXTURE_MIPMAP] = TR("Mipmap level\\Mipmap level"); stringsEvent[EVENT_INTERFACE_TEXTURE_ANISOTROPY]= TR("Anisotropy level\\Anisotropy level"); stringsEvent[EVENT_INTERFACE_MSAA] = TR("MSAA\\Multisample anti-aliasing"); - stringsEvent[EVENT_INTERFACE_SHADOW] = TR("Simple shadows\\Shadows on the ground"); - stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING] = TR("Shadow mapping\\Beautiful shadows!"); - stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING_QUALITY]= TR("Better shadow maps\\Shadow transparency and self shadowing"); + stringsEvent[EVENT_INTERFACE_SHADOW_SPOTS] = TR("Simple shadows\\Shadows spots on the ground"); + stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING] = TR("Dynamic shadows\\Beautiful shadows!"); + stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING_QUALITY]= TR("Quality dynamic shadows\\Enable shadow transparency and self shadowing"); stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING_BUFFER] = TR("Shadow resolution\\Higher means better range and quality, but slower"); stringsEvent[EVENT_INTERFACE_KDEF] = TR("Standard controls\\Standard key functions"); diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 8fb9d290..5bf604a1 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -81,7 +81,6 @@ void CSettings::SaveSettings() GetConfigFile().SetIntProperty("Setup", "Autosave", main->GetAutosave()); GetConfigFile().SetIntProperty("Setup", "AutosaveInterval", main->GetAutosaveInterval()); GetConfigFile().SetIntProperty("Setup", "AutosaveSlots", main->GetAutosaveSlots()); - GetConfigFile().SetIntProperty("Setup", "GroundShadow", engine->GetShadow()); GetConfigFile().SetIntProperty("Setup", "ObjectDirty", engine->GetDirty()); GetConfigFile().SetIntProperty("Setup", "FogMode", engine->GetFog()); GetConfigFile().SetIntProperty("Setup", "LightMode", engine->GetLightMode()); @@ -174,9 +173,6 @@ void CSettings::LoadSettings() if (GetConfigFile().GetIntProperty("Setup", "AutosaveSlots", iValue)) main->SetAutosaveSlots(iValue); - if (GetConfigFile().GetIntProperty("Setup", "GroundShadow", iValue)) - engine->SetShadow(iValue); - if (GetConfigFile().GetIntProperty("Setup", "ObjectDirty", iValue)) engine->SetDirty(iValue); diff --git a/src/graphics/engine/engine.cpp b/src/graphics/engine/engine.cpp index ad1017c1..17229880 100644 --- a/src/graphics/engine/engine.cpp +++ b/src/graphics/engine/engine.cpp @@ -108,7 +108,6 @@ CEngine::CEngine(CApplication *app, CSystemUtils* systemUtils) m_render = true; m_screenshotMode = false; - m_shadowVisible = true; m_dirty = true; m_fog = true; m_secondTex = ""; @@ -2583,16 +2582,6 @@ float CEngine::GetFocus() return m_focus; } -void CEngine::SetShadow(bool mode) -{ - m_shadowVisible = mode; -} - -bool CEngine::GetShadow() -{ - return m_shadowVisible; -} - void CEngine::SetShadowColor(float value) { m_shadowColor = value; @@ -3207,9 +3196,9 @@ void CEngine::Draw3DScene() if (!m_qualityShadows) UseShadowMapping(false); - // Draws the shadows, if shadows enabled and shadow mapping disabled - if (m_shadowVisible && !m_shadowMapping) - DrawShadow(); + // Draws the old-style shadow spots, if shadow mapping disabled + if (!m_shadowMapping) + DrawShadowSpots(); m_app->StopPerformanceCounter(PCNT_RENDER_TERRAIN); @@ -3829,7 +3818,7 @@ void CEngine::DrawInterface() if (! m_objects[objRank].used) continue; - if (m_shadowVisible && m_objects[objRank].type == ENG_OBJTYPE_TERRAIN) + if (m_objects[objRank].type == ENG_OBJTYPE_TERRAIN) continue; if (! m_objects[objRank].drawFront) @@ -4161,7 +4150,7 @@ void CEngine::UpdateGroundSpotTextures() m_firstGroundSpot = false; } -void CEngine::DrawShadow() +void CEngine::DrawShadowSpots() { m_device->SetRenderState(RENDER_STATE_DEPTH_WRITE, false); m_device->SetRenderState(RENDER_STATE_LIGHTING, false); diff --git a/src/graphics/engine/engine.h b/src/graphics/engine/engine.h index dc4b13e1..02e2020d 100644 --- a/src/graphics/engine/engine.h +++ b/src/graphics/engine/engine.h @@ -956,13 +956,6 @@ public: float GetFocus(); //@} - //@{ - //! Management of the global mode of shading - // NOTE: This is an user configuration setting - void SetShadow(bool mode); - bool GetShadow(); - //@} - //@{ //! Management of the global mode of contamination // NOTE: This is an user configuration setting @@ -1198,8 +1191,8 @@ protected: //! Updates the textures used for drawing ground spot void UpdateGroundSpotTextures(); - //! Draws shadows - void DrawShadow(); + //! Draws old-style shadow spots + void DrawShadowSpots(); //! Draws the gradient background void DrawBackground(); //! Draws the gradient background @@ -1381,7 +1374,6 @@ protected: bool m_backForce; float m_tracePrecision; - bool m_shadowVisible; bool m_dirty; bool m_fog; float m_particleDensity; diff --git a/src/level/robotmain.cpp b/src/level/robotmain.cpp index fc8fcbca..b38129bf 100644 --- a/src/level/robotmain.cpp +++ b/src/level/robotmain.cpp @@ -2772,7 +2772,6 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) m_ui->GetLoadingScreen()->SetProgress(0.1f, RT_LOADING_LEVEL_SETTINGS); int rankObj = 0; - int rankGadget = 0; CObject* sel = 0; /* diff --git a/src/ui/screen/screen_setup_graphics.cpp b/src/ui/screen/screen_setup_graphics.cpp index 79ada09b..a99044dc 100644 --- a/src/ui/screen/screen_setup_graphics.cpp +++ b/src/ui/screen/screen_setup_graphics.cpp @@ -116,7 +116,7 @@ void CScreenSetupGraphics::CreateInterface() pos.y = 0.65f; ddim.x = dim.x*3; ddim.y = dim.y*0.5f; - pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW); + pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW_SPOTS); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW_MAPPING); @@ -124,10 +124,6 @@ void CScreenSetupGraphics::CreateInterface() pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW_MAPPING_QUALITY); pc->SetState(STATE_SHADOW); - if (!m_engine->IsShadowMappingQualitySupported()) - { - pc->ClearState(STATE_ENABLE); - } pos.y -= 0.048f*1.5f; ddim.x = dim.x*2.2f; @@ -139,7 +135,8 @@ void CScreenSetupGraphics::CreateInterface() }; if (m_engine->GetDevice()->IsFramebufferSupported()) { - for(int i = 128; i <= m_engine->GetDevice()->GetMaxTextureSize(); i *= 2) + const int MAX_SHADOW_TEXTURE_SIZE = 8192; + for(int i = 128; i <= Math::Min(m_engine->GetDevice()->GetMaxTextureSize(), MAX_SHADOW_TEXTURE_SIZE); i *= 2) shadowOptions[i] = StrUtils::ToString(i)+"x"+StrUtils::ToString(i); pes->SetPossibleValues(shadowOptions); } @@ -249,43 +246,42 @@ bool CScreenSetupGraphics::EventProcess(const Event &event) switch( event.type ) { - case EVENT_INTERFACE_SHADOW: - m_engine->SetShadow(!m_engine->GetShadow()); + case EVENT_INTERFACE_PARTI: + case EVENT_INTERFACE_CLIP: ChangeSetupButtons(); - UpdateSetupButtons(); break; case EVENT_INTERFACE_DIRTY: m_engine->SetDirty(!m_engine->GetDirty()); - ChangeSetupButtons(); UpdateSetupButtons(); break; case EVENT_INTERFACE_FOG: m_engine->SetFog(!m_engine->GetFog()); m_camera->SetOverBaseColor(Gfx::Color(0.0f, 0.0f, 0.0f, 0.0f)); // TODO: color ok? - ChangeSetupButtons(); UpdateSetupButtons(); break; case EVENT_INTERFACE_LIGHT: m_engine->SetLightMode(!m_engine->GetLightMode()); - ChangeSetupButtons(); UpdateSetupButtons(); break; - case EVENT_INTERFACE_PARTI: - case EVENT_INTERFACE_CLIP: - ChangeSetupButtons(); + case EVENT_INTERFACE_SHADOW_SPOTS: + m_engine->SetShadowMapping(false); + m_engine->SetShadowMappingQuality(false); + UpdateSetupButtons(); break; case EVENT_INTERFACE_SHADOW_MAPPING: - m_engine->SetShadowMapping(!m_engine->GetShadowMapping()); + m_engine->SetShadowMapping(true); + m_engine->SetShadowMappingQuality(false); UpdateSetupButtons(); break; case EVENT_INTERFACE_SHADOW_MAPPING_QUALITY: - m_engine->SetShadowMappingQuality(!m_engine->GetShadowMappingQuality()); + m_engine->SetShadowMapping(true); + m_engine->SetShadowMappingQuality(true); UpdateSetupButtons(); break; @@ -330,6 +326,72 @@ void CScreenSetupGraphics::UpdateSetupButtons() pw = static_cast(m_interface->SearchControl(EVENT_WINDOW5)); if ( pw == 0 ) return; + pv = static_cast(pw->SearchControl(EVENT_INTERFACE_PARTI)); + if ( pv != 0 ) + { + value = m_engine->GetParticleDensity(); + pv->SetValue(value); + } + + pv = static_cast(pw->SearchControl(EVENT_INTERFACE_CLIP)); + if ( pv != 0 ) + { + value = m_engine->GetClippingDistance(); + pv->SetValue(value); + } + + pc = static_cast(pw->SearchControl(EVENT_INTERFACE_DIRTY)); + if ( pc != 0 ) + { + pc->SetState(STATE_CHECK, m_engine->GetDirty()); + } + + pc = static_cast(pw->SearchControl(EVENT_INTERFACE_FOG)); + if ( pc != 0 ) + { + pc->SetState(STATE_CHECK, m_engine->GetFog()); + } + + pc = static_cast(pw->SearchControl(EVENT_INTERFACE_LIGHT)); + if ( pc != 0 ) + { + pc->SetState(STATE_CHECK, m_engine->GetLightMode()); + } + + pc = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_SPOTS)); + if ( pc != 0 ) + { + pc->SetState(STATE_CHECK, !m_engine->GetShadowMapping()); + } + + pc = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING)); + if ( pc != 0 ) + { + pc->SetState(STATE_ENABLE, m_engine->IsShadowMappingSupported()); + pc->SetState(STATE_CHECK, m_engine->GetShadowMapping() && !m_engine->GetShadowMappingQuality()); + } + + pc = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING_QUALITY)); + if ( pc != 0 ) + { + pc->SetState(STATE_ENABLE, m_engine->IsShadowMappingQualitySupported()); + pc->SetState(STATE_CHECK, m_engine->GetShadowMapping() && m_engine->GetShadowMappingQuality()); + } + + pes = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING_BUFFER)); + if ( pes != 0 ) + { + pes->SetState(STATE_ENABLE, m_engine->GetShadowMapping() && m_engine->GetDevice()->IsFramebufferSupported()); + if (!m_engine->GetShadowMappingOffscreen()) + { + pes->SetVisibleValue(0); + } + else + { + pes->SetVisibleValue(m_engine->GetShadowMappingOffscreenResolution()); + } + } + pes = static_cast(pw->SearchControl(EVENT_INTERFACE_TEXTURE_FILTER)); if ( pes != 0 ) { @@ -354,73 +416,6 @@ void CScreenSetupGraphics::UpdateSetupButtons() { pes->SetVisibleValue(m_engine->GetMultiSample()); } - - pc = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING)); - if ( pc != 0 ) - { - pc->SetState(STATE_ENABLE, m_engine->IsShadowMappingSupported()); - pc->SetState(STATE_CHECK, m_engine->GetShadowMapping()); - } - - pc = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING_QUALITY)); - if ( pc != 0 ) - { - pc->SetState(STATE_ENABLE, m_engine->GetShadowMapping() && m_engine->IsShadowMappingQualitySupported()); - pc->SetState(STATE_CHECK, m_engine->GetShadowMapping() && m_engine->GetShadowMappingQuality()); - } - - pes = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW_MAPPING_BUFFER)); - if ( pes != 0 ) - { - pes->SetState(STATE_ENABLE, m_engine->GetShadowMapping() && m_engine->GetDevice()->IsFramebufferSupported()); - if (!m_engine->GetShadowMappingOffscreen()) - { - pes->SetVisibleValue(0); - } - else - { - pes->SetVisibleValue(m_engine->GetShadowMappingOffscreenResolution()); - } - } - - pc = static_cast(pw->SearchControl(EVENT_INTERFACE_SHADOW)); - if ( pc != 0 ) - { - pc->SetState(STATE_ENABLE, !m_engine->GetShadowMapping()); - pc->SetState(STATE_CHECK, !m_engine->GetShadowMapping() && m_engine->GetShadow()); - } - - pc = static_cast(pw->SearchControl(EVENT_INTERFACE_DIRTY)); - if ( pc != 0 ) - { - pc->SetState(STATE_CHECK, m_engine->GetDirty()); - } - - pc = static_cast(pw->SearchControl(EVENT_INTERFACE_FOG)); - if ( pc != 0 ) - { - pc->SetState(STATE_CHECK, m_engine->GetFog()); - } - - pc = static_cast(pw->SearchControl(EVENT_INTERFACE_LIGHT)); - if ( pc != 0 ) - { - pc->SetState(STATE_CHECK, m_engine->GetLightMode()); - } - - pv = static_cast(pw->SearchControl(EVENT_INTERFACE_PARTI)); - if ( pv != 0 ) - { - value = m_engine->GetParticleDensity(); - pv->SetValue(value); - } - - pv = static_cast(pw->SearchControl(EVENT_INTERFACE_CLIP)); - if ( pv != 0 ) - { - value = m_engine->GetClippingDistance(); - pv->SetValue(value); - } } // Updates the engine function of the buttons after the setup phase. @@ -502,7 +497,6 @@ void CScreenSetupGraphics::ChangeSetupQuality(int quality) float value; bEnable = true; //(quality >= 0); - m_engine->SetShadow(bEnable); m_engine->SetDirty(bEnable); m_engine->SetFog(bEnable); m_engine->SetLightMode(bEnable);