From 4741118b61301ce374cee0f2fb13f4f01b852cd3 Mon Sep 17 00:00:00 2001
From: krzys-h <krzys_h@interia.pl>
Date: Mon, 20 Jul 2015 20:47:44 +0200
Subject: [PATCH] Added new options to configuration presets

---
 src/graphics/engine/engine.cpp | 10 ++++------
 src/ui/maindialog.cpp          | 15 ++++++++++++++-
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/graphics/engine/engine.cpp b/src/graphics/engine/engine.cpp
index 9f640073..e1c57d8a 100644
--- a/src/graphics/engine/engine.cpp
+++ b/src/graphics/engine/engine.cpp
@@ -124,7 +124,7 @@ CEngine::CEngine(CApplication *app)
     m_offscreenShadowRenderingResolution = 1024;
     m_qualityShadows = true;
     m_shadowRange = 0.0f;
-    m_multisample = 1;
+    m_multisample = 2;
 
     m_totoMode = true;
     m_lensMode = true;
@@ -2583,12 +2583,9 @@ float CEngine::GetShadowRange()
 
 void CEngine::SetMultiSample(int value)
 {
-    bool changed = m_multisample != value;
+    if(value == m_multisample) return;
     m_multisample = value;
-    if(changed)
-    {
-        m_device->DeleteFramebuffer("multisample");
-    }
+    m_device->DeleteFramebuffer("multisample");
 }
 
 int CEngine::GetMultiSample()
@@ -3751,6 +3748,7 @@ void CEngine::UseShadowMapping(bool enable)
 
 void CEngine::UseMSAA(bool enable)
 {
+    m_multisample = Math::Min(m_device->GetMaxSamples(), m_multisample);
     if (m_multisample < 2) return;
 
     if (enable)
diff --git a/src/ui/maindialog.cpp b/src/ui/maindialog.cpp
index 55055e51..43219bb7 100644
--- a/src/ui/maindialog.cpp
+++ b/src/ui/maindialog.cpp
@@ -5355,7 +5355,7 @@ void CMainDialog::ChangeSetupQuality(int quality)
     bool    bEnable;
     float   value;
 
-    bEnable = (quality >= 0);
+    bEnable = true; //(quality >= 0);
     m_engine->SetShadow(bEnable);
     m_engine->SetGroundSpot(bEnable);
     m_engine->SetDirty(bEnable);
@@ -5386,6 +5386,19 @@ void CMainDialog::ChangeSetupQuality(int quality)
     if ( quality >  0 )  value = 1.0f;
     m_engine->SetGadgetQuantity(value);
 
+    if ( quality <  0 ) m_engine->SetMultiSample(1);
+    if ( quality == 0 ) m_engine->SetMultiSample(2);
+    if ( quality >  0 ) m_engine->SetMultiSample(4);
+
+    if ( quality <  0 ) { m_engine->SetTextureFilterMode(Gfx::TEX_FILTER_BILINEAR); }
+    if ( quality == 0 ) { m_engine->SetTextureFilterMode(Gfx::TEX_FILTER_TRILINEAR); m_engine->SetTextureMipmapLevel(4); m_engine->SetTextureAnisotropyLevel(4); }
+    if ( quality >  0 ) { m_engine->SetTextureFilterMode(Gfx::TEX_FILTER_TRILINEAR); m_engine->SetTextureMipmapLevel(8); m_engine->SetTextureAnisotropyLevel(8); }
+
+    if ( quality <  0 ) { m_engine->SetShadowMapping(false); m_engine->SetShadowMappingQuality(false); }
+    else { m_engine->SetShadowMapping(true); m_engine->SetShadowMappingQuality(true); m_engine->SetShadowMappingOffscreen(true); }
+    if ( quality == 0 ) m_engine->SetShadowMappingOffscreenResolution(1024);
+    if ( quality >  0 ) m_engine->SetShadowMappingOffscreenResolution(2048);
+
     // TODO: first execute adapt?
     //m_engine->FirstExecuteAdapt(false);
 }