Better shadow type selection UI

master
krzys-h 2015-08-14 13:36:23 +02:00
parent 009b3abc03
commit 78a279b479
13 changed files with 123 additions and 152 deletions

View File

@ -444,13 +444,13 @@ msgstr ""
msgid "MSAA\\Multisample anti-aliasing" msgid "MSAA\\Multisample anti-aliasing"
msgstr "" msgstr ""
msgid "Simple shadows\\Shadows on the ground" msgid "Simple shadows\\Shadows spots on the ground"
msgstr "" msgstr ""
msgid "Shadow mapping\\Beautiful shadows!" msgid "Dynamic shadows\\Beautiful shadows!"
msgstr "" msgstr ""
msgid "Better shadow maps\\Shadow transparency and self shadowing" msgid "Quality dynamic shadows\\Enable shadow transparency and self shadowing"
msgstr "" msgstr ""
msgid "Shadow resolution\\Higher means better range and quality, but slower" msgid "Shadow resolution\\Higher means better range and quality, but slower"

View File

@ -185,9 +185,6 @@ msgstr "Rückwärts\\Bewegung nach hinten"
msgid "Bad argument for \"new\"" msgid "Bad argument for \"new\""
msgstr "Falsche Argumente für \"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" 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" 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" msgid "Dynamic lighting\\Mobile light sources"
msgstr "Dynamische Beleuchtung\\Dynamische Beleuchtung" msgstr "Dynamische Beleuchtung\\Dynamische Beleuchtung"
msgid "Dynamic shadows\\Beautiful shadows!"
msgstr ""
msgid "Edit the selected program" msgid "Edit the selected program"
msgstr "Gewähltes Programm bearbeiten" 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" msgid "Quake at explosions\\The screen shakes at explosions"
msgstr "Beben bei Explosionen\\Die Kamera bebt bei Explosionen" 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" msgid "Quit\\Quit Colobot: Gold Edition"
msgstr "" msgstr ""
@ -1328,9 +1331,6 @@ msgstr "Astronauten auswählen\\Astronauten auswählen"
msgid "Semicolon terminator missing" msgid "Semicolon terminator missing"
msgstr "Es fehlt ein Strichpunkt \";\" am Ende der Anweisung" 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" msgid "Shadow resolution\\Higher means better range and quality, but slower"
msgstr "" msgstr ""
@ -1362,7 +1362,7 @@ msgid "Sign \" : \" missing"
msgstr "Es fehlt ein Doppelpunkt \" : \"" msgstr "Es fehlt ein Doppelpunkt \" : \""
#, fuzzy #, fuzzy
msgid "Simple shadows\\Shadows on the ground" msgid "Simple shadows\\Shadows spots on the ground"
msgstr "Schatten\\Schlagschatten auf dem Boden" msgstr "Schatten\\Schlagschatten auf dem Boden"
msgid "Size 1" msgid "Size 1"

View File

@ -180,9 +180,6 @@ msgstr "Reculer\\Moteur en arrière"
msgid "Bad argument for \"new\"" msgid "Bad argument for \"new\""
msgstr "Mauvais argument pour \"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" msgid "Big indent\\Indent 2 or 4 spaces per level defined by braces"
msgstr "Grande indentation\\Indente avec 2 ou 4 espaces" 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" msgid "Dynamic lighting\\Mobile light sources"
msgstr "Lumières dynamiques\\Éclairages mobiles" msgstr "Lumières dynamiques\\Éclairages mobiles"
msgid "Dynamic shadows\\Beautiful shadows!"
msgstr ""
msgid "Edit the selected program" msgid "Edit the selected program"
msgstr "Édite le programme sélectionné" 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" msgid "Quake at explosions\\The screen shakes at explosions"
msgstr "Secousses lors d'explosions\\L'écran vibre lors d'une explosion" 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" msgid "Quit\\Quit Colobot: Gold Edition"
msgstr "" msgstr ""
@ -1324,9 +1327,6 @@ msgstr "Sélectionner le cosmonaute\\Sélectionner le cosmonaute"
msgid "Semicolon terminator missing" msgid "Semicolon terminator missing"
msgstr "Terminateur point-virgule non trouvé" msgstr "Terminateur point-virgule non trouvé"
msgid "Shadow mapping\\Beautiful shadows!"
msgstr ""
msgid "Shadow resolution\\Higher means better range and quality, but slower" msgid "Shadow resolution\\Higher means better range and quality, but slower"
msgstr "" msgstr ""
@ -1358,7 +1358,7 @@ msgid "Sign \" : \" missing"
msgstr "Séparateur \" : \" attendu" msgstr "Séparateur \" : \" attendu"
#, fuzzy #, fuzzy
msgid "Simple shadows\\Shadows on the ground" msgid "Simple shadows\\Shadows spots on the ground"
msgstr "Ombres\\Ombres projetées au sol" msgstr "Ombres\\Ombres projetées au sol"
msgid "Size 1" msgid "Size 1"

View File

@ -188,9 +188,6 @@ msgstr "Wstecz\\Porusza do tyłu"
msgid "Bad argument for \"new\"" msgid "Bad argument for \"new\""
msgstr "Zły argument dla funkcji \"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" msgid "Big indent\\Indent 2 or 4 spaces per level defined by braces"
msgstr "" msgstr ""
"Duże wcięcie\\2 lub 4 spacje wcięcia na każdy poziom zdefiniowany przez " "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" msgid "Dynamic lighting\\Mobile light sources"
msgstr "Dynamiczne oświetlenie\\Ruchome źródła światła" msgstr "Dynamiczne oświetlenie\\Ruchome źródła światła"
msgid "Dynamic shadows\\Beautiful shadows!"
msgstr ""
msgid "Edit the selected program" msgid "Edit the selected program"
msgstr "Edytuj zaznaczony program" msgstr "Edytuj zaznaczony program"
@ -1183,6 +1183,9 @@ msgstr "Publiczny\\Folder ogólnodostępny"
msgid "Quake at explosions\\The screen shakes at explosions" msgid "Quake at explosions\\The screen shakes at explosions"
msgstr "Wstrząsy przy wybuchach\\Ekran trzęsie się podczas wybuchów" 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" msgid "Quit\\Quit Colobot: Gold Edition"
msgstr "Wyjdź\\Kończy grę Colobot: Gold Edition" msgstr "Wyjdź\\Kończy grę Colobot: Gold Edition"
@ -1326,9 +1329,6 @@ msgstr "Zaznacz astronautę\\Zaznacza astronautę"
msgid "Semicolon terminator missing" msgid "Semicolon terminator missing"
msgstr "Brak średnika na końcu wiersza" msgstr "Brak średnika na końcu wiersza"
msgid "Shadow mapping\\Beautiful shadows!"
msgstr ""
msgid "Shadow resolution\\Higher means better range and quality, but slower" msgid "Shadow resolution\\Higher means better range and quality, but slower"
msgstr "" msgstr ""
@ -1359,7 +1359,8 @@ msgstr "Pokaż rozwiązanie"
msgid "Sign \" : \" missing" msgid "Sign \" : \" missing"
msgstr "Brak znaku \" :\"" 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" msgstr "Proste cienie\\Cienie na ziemi"
msgid "Size 1" msgid "Size 1"

View File

@ -180,9 +180,6 @@ msgstr "Назад\\Двигаться назад"
msgid "Bad argument for \"new\"" msgid "Bad argument for \"new\""
msgstr "Неверный аргумент для \"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" msgid "Big indent\\Indent 2 or 4 spaces per level defined by braces"
msgstr "Большой отступ\\Отступать на 2 или 4 пробела, в зависимости от скобок" msgstr "Большой отступ\\Отступать на 2 или 4 пробела, в зависимости от скобок"
@ -507,6 +504,9 @@ msgstr "Пыль\\Пыль и грязь на ботах и зданиях"
msgid "Dynamic lighting\\Mobile light sources" msgid "Dynamic lighting\\Mobile light sources"
msgstr "Динамическое освещение\\Подвижные источники света" msgstr "Динамическое освещение\\Подвижные источники света"
msgid "Dynamic shadows\\Beautiful shadows!"
msgstr ""
msgid "Edit the selected program" msgid "Edit the selected program"
msgstr "Изменить выбранную программу" msgstr "Изменить выбранную программу"
@ -1179,6 +1179,9 @@ msgstr "Общее\\Общая папка"
msgid "Quake at explosions\\The screen shakes at explosions" msgid "Quake at explosions\\The screen shakes at explosions"
msgstr "Землетряс. при взрывах\\Тряска экрана при взрывах" msgstr "Землетряс. при взрывах\\Тряска экрана при взрывах"
msgid "Quality dynamic shadows\\Enable shadow transparency and self shadowing"
msgstr ""
msgid "Quit\\Quit Colobot: Gold Edition" msgid "Quit\\Quit Colobot: Gold Edition"
msgstr "" msgstr ""
@ -1322,9 +1325,6 @@ msgstr "Выбор астронавта\\Выбор астронавта"
msgid "Semicolon terminator missing" msgid "Semicolon terminator missing"
msgstr "Отсутствует точка с запятой" msgstr "Отсутствует точка с запятой"
msgid "Shadow mapping\\Beautiful shadows!"
msgstr ""
msgid "Shadow resolution\\Higher means better range and quality, but slower" msgid "Shadow resolution\\Higher means better range and quality, but slower"
msgstr "" msgstr ""
@ -1356,7 +1356,7 @@ msgid "Sign \" : \" missing"
msgstr "Знак \" : \" отсутствует" msgstr "Знак \" : \" отсутствует"
#, fuzzy #, fuzzy
msgid "Simple shadows\\Shadows on the ground" msgid "Simple shadows\\Shadows spots on the ground"
msgstr "Тени\\Тени на земле" msgstr "Тени\\Тени на земле"
msgid "Size 1" msgid "Size 1"

View File

@ -193,7 +193,6 @@ void InitializeEventTypeTexts()
EVENT_TYPE_TEXT[EVENT_INTERFACE_FULL] = "EVENT_INTERFACE_FULL"; EVENT_TYPE_TEXT[EVENT_INTERFACE_FULL] = "EVENT_INTERFACE_FULL";
EVENT_TYPE_TEXT[EVENT_INTERFACE_APPLY] = "EVENT_INTERFACE_APPLY"; 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_DIRTY] = "EVENT_INTERFACE_DIRTY";
EVENT_TYPE_TEXT[EVENT_INTERFACE_LIGHT] = "EVENT_INTERFACE_LIGHT"; EVENT_TYPE_TEXT[EVENT_INTERFACE_LIGHT] = "EVENT_INTERFACE_LIGHT";
EVENT_TYPE_TEXT[EVENT_INTERFACE_PARTI] = "EVENT_INTERFACE_PARTI"; 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_MIPMAP] = "EVENT_INTERFACE_TEXTURE_MIPMAP";
EVENT_TYPE_TEXT[EVENT_INTERFACE_TEXTURE_ANISOTROPY] = "EVENT_INTERFACE_TEXTURE_ANISOTROPY"; 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_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] = "EVENT_INTERFACE_SHADOW_MAPPING";
EVENT_TYPE_TEXT[EVENT_INTERFACE_SHADOW_MAPPING_QUALITY] = "EVENT_INTERFACE_SHADOW_MAPPING_QUALITY"; 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"; EVENT_TYPE_TEXT[EVENT_INTERFACE_SHADOW_MAPPING_BUFFER] = "EVENT_INTERFACE_SHADOW_MAPPING_BUFFER";

View File

@ -217,7 +217,7 @@ enum EventType
EVENT_INTERFACE_FULL = 442, EVENT_INTERFACE_FULL = 442,
EVENT_INTERFACE_APPLY = 443, EVENT_INTERFACE_APPLY = 443,
EVENT_INTERFACE_SHADOW = 451, EVENT_INTERFACE_SHADOW_SPOTS = 451,
EVENT_INTERFACE_DIRTY = 452, EVENT_INTERFACE_DIRTY = 452,
EVENT_INTERFACE_LIGHT = 457, EVENT_INTERFACE_LIGHT = 457,
EVENT_INTERFACE_PARTI = 458, EVENT_INTERFACE_PARTI = 458,

View File

@ -219,9 +219,9 @@ void InitializeRestext()
stringsEvent[EVENT_INTERFACE_TEXTURE_MIPMAP] = TR("Mipmap level\\Mipmap level"); stringsEvent[EVENT_INTERFACE_TEXTURE_MIPMAP] = TR("Mipmap level\\Mipmap level");
stringsEvent[EVENT_INTERFACE_TEXTURE_ANISOTROPY]= TR("Anisotropy level\\Anisotropy level"); stringsEvent[EVENT_INTERFACE_TEXTURE_ANISOTROPY]= TR("Anisotropy level\\Anisotropy level");
stringsEvent[EVENT_INTERFACE_MSAA] = TR("MSAA\\Multisample anti-aliasing"); stringsEvent[EVENT_INTERFACE_MSAA] = TR("MSAA\\Multisample anti-aliasing");
stringsEvent[EVENT_INTERFACE_SHADOW] = TR("Simple shadows\\Shadows on the ground"); stringsEvent[EVENT_INTERFACE_SHADOW_SPOTS] = TR("Simple shadows\\Shadows spots on the ground");
stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING] = TR("Shadow mapping\\Beautiful shadows!"); stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING] = TR("Dynamic shadows\\Beautiful shadows!");
stringsEvent[EVENT_INTERFACE_SHADOW_MAPPING_QUALITY]= TR("Better shadow maps\\Shadow transparency and self shadowing"); 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_SHADOW_MAPPING_BUFFER] = TR("Shadow resolution\\Higher means better range and quality, but slower");
stringsEvent[EVENT_INTERFACE_KDEF] = TR("Standard controls\\Standard key functions"); stringsEvent[EVENT_INTERFACE_KDEF] = TR("Standard controls\\Standard key functions");

View File

@ -81,7 +81,6 @@ void CSettings::SaveSettings()
GetConfigFile().SetIntProperty("Setup", "Autosave", main->GetAutosave()); GetConfigFile().SetIntProperty("Setup", "Autosave", main->GetAutosave());
GetConfigFile().SetIntProperty("Setup", "AutosaveInterval", main->GetAutosaveInterval()); GetConfigFile().SetIntProperty("Setup", "AutosaveInterval", main->GetAutosaveInterval());
GetConfigFile().SetIntProperty("Setup", "AutosaveSlots", main->GetAutosaveSlots()); GetConfigFile().SetIntProperty("Setup", "AutosaveSlots", main->GetAutosaveSlots());
GetConfigFile().SetIntProperty("Setup", "GroundShadow", engine->GetShadow());
GetConfigFile().SetIntProperty("Setup", "ObjectDirty", engine->GetDirty()); GetConfigFile().SetIntProperty("Setup", "ObjectDirty", engine->GetDirty());
GetConfigFile().SetIntProperty("Setup", "FogMode", engine->GetFog()); GetConfigFile().SetIntProperty("Setup", "FogMode", engine->GetFog());
GetConfigFile().SetIntProperty("Setup", "LightMode", engine->GetLightMode()); GetConfigFile().SetIntProperty("Setup", "LightMode", engine->GetLightMode());
@ -174,9 +173,6 @@ void CSettings::LoadSettings()
if (GetConfigFile().GetIntProperty("Setup", "AutosaveSlots", iValue)) if (GetConfigFile().GetIntProperty("Setup", "AutosaveSlots", iValue))
main->SetAutosaveSlots(iValue); main->SetAutosaveSlots(iValue);
if (GetConfigFile().GetIntProperty("Setup", "GroundShadow", iValue))
engine->SetShadow(iValue);
if (GetConfigFile().GetIntProperty("Setup", "ObjectDirty", iValue)) if (GetConfigFile().GetIntProperty("Setup", "ObjectDirty", iValue))
engine->SetDirty(iValue); engine->SetDirty(iValue);

View File

@ -108,7 +108,6 @@ CEngine::CEngine(CApplication *app, CSystemUtils* systemUtils)
m_render = true; m_render = true;
m_screenshotMode = false; m_screenshotMode = false;
m_shadowVisible = true;
m_dirty = true; m_dirty = true;
m_fog = true; m_fog = true;
m_secondTex = ""; m_secondTex = "";
@ -2583,16 +2582,6 @@ float CEngine::GetFocus()
return m_focus; return m_focus;
} }
void CEngine::SetShadow(bool mode)
{
m_shadowVisible = mode;
}
bool CEngine::GetShadow()
{
return m_shadowVisible;
}
void CEngine::SetShadowColor(float value) void CEngine::SetShadowColor(float value)
{ {
m_shadowColor = value; m_shadowColor = value;
@ -3207,9 +3196,9 @@ void CEngine::Draw3DScene()
if (!m_qualityShadows) if (!m_qualityShadows)
UseShadowMapping(false); UseShadowMapping(false);
// Draws the shadows, if shadows enabled and shadow mapping disabled // Draws the old-style shadow spots, if shadow mapping disabled
if (m_shadowVisible && !m_shadowMapping) if (!m_shadowMapping)
DrawShadow(); DrawShadowSpots();
m_app->StopPerformanceCounter(PCNT_RENDER_TERRAIN); m_app->StopPerformanceCounter(PCNT_RENDER_TERRAIN);
@ -3829,7 +3818,7 @@ void CEngine::DrawInterface()
if (! m_objects[objRank].used) if (! m_objects[objRank].used)
continue; continue;
if (m_shadowVisible && m_objects[objRank].type == ENG_OBJTYPE_TERRAIN) if (m_objects[objRank].type == ENG_OBJTYPE_TERRAIN)
continue; continue;
if (! m_objects[objRank].drawFront) if (! m_objects[objRank].drawFront)
@ -4161,7 +4150,7 @@ void CEngine::UpdateGroundSpotTextures()
m_firstGroundSpot = false; m_firstGroundSpot = false;
} }
void CEngine::DrawShadow() void CEngine::DrawShadowSpots()
{ {
m_device->SetRenderState(RENDER_STATE_DEPTH_WRITE, false); m_device->SetRenderState(RENDER_STATE_DEPTH_WRITE, false);
m_device->SetRenderState(RENDER_STATE_LIGHTING, false); m_device->SetRenderState(RENDER_STATE_LIGHTING, false);

View File

@ -956,13 +956,6 @@ public:
float GetFocus(); 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 //! Management of the global mode of contamination
// NOTE: This is an user configuration setting // NOTE: This is an user configuration setting
@ -1198,8 +1191,8 @@ protected:
//! Updates the textures used for drawing ground spot //! Updates the textures used for drawing ground spot
void UpdateGroundSpotTextures(); void UpdateGroundSpotTextures();
//! Draws shadows //! Draws old-style shadow spots
void DrawShadow(); void DrawShadowSpots();
//! Draws the gradient background //! Draws the gradient background
void DrawBackground(); void DrawBackground();
//! Draws the gradient background //! Draws the gradient background
@ -1381,7 +1374,6 @@ protected:
bool m_backForce; bool m_backForce;
float m_tracePrecision; float m_tracePrecision;
bool m_shadowVisible;
bool m_dirty; bool m_dirty;
bool m_fog; bool m_fog;
float m_particleDensity; float m_particleDensity;

View File

@ -2772,7 +2772,6 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject)
m_ui->GetLoadingScreen()->SetProgress(0.1f, RT_LOADING_LEVEL_SETTINGS); m_ui->GetLoadingScreen()->SetProgress(0.1f, RT_LOADING_LEVEL_SETTINGS);
int rankObj = 0; int rankObj = 0;
int rankGadget = 0;
CObject* sel = 0; CObject* sel = 0;
/* /*

View File

@ -116,7 +116,7 @@ void CScreenSetupGraphics::CreateInterface()
pos.y = 0.65f; pos.y = 0.65f;
ddim.x = dim.x*3; ddim.x = dim.x*3;
ddim.y = dim.y*0.5f; 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); pc->SetState(STATE_SHADOW);
pos.y -= 0.048f; pos.y -= 0.048f;
pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW_MAPPING); pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW_MAPPING);
@ -124,10 +124,6 @@ void CScreenSetupGraphics::CreateInterface()
pos.y -= 0.048f; pos.y -= 0.048f;
pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW_MAPPING_QUALITY); pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SHADOW_MAPPING_QUALITY);
pc->SetState(STATE_SHADOW); pc->SetState(STATE_SHADOW);
if (!m_engine->IsShadowMappingQualitySupported())
{
pc->ClearState(STATE_ENABLE);
}
pos.y -= 0.048f*1.5f; pos.y -= 0.048f*1.5f;
ddim.x = dim.x*2.2f; ddim.x = dim.x*2.2f;
@ -139,7 +135,8 @@ void CScreenSetupGraphics::CreateInterface()
}; };
if (m_engine->GetDevice()->IsFramebufferSupported()) 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<int>(i)+"x"+StrUtils::ToString<int>(i); shadowOptions[i] = StrUtils::ToString<int>(i)+"x"+StrUtils::ToString<int>(i);
pes->SetPossibleValues(shadowOptions); pes->SetPossibleValues(shadowOptions);
} }
@ -249,43 +246,42 @@ bool CScreenSetupGraphics::EventProcess(const Event &event)
switch( event.type ) switch( event.type )
{ {
case EVENT_INTERFACE_SHADOW: case EVENT_INTERFACE_PARTI:
m_engine->SetShadow(!m_engine->GetShadow()); case EVENT_INTERFACE_CLIP:
ChangeSetupButtons(); ChangeSetupButtons();
UpdateSetupButtons();
break; break;
case EVENT_INTERFACE_DIRTY: case EVENT_INTERFACE_DIRTY:
m_engine->SetDirty(!m_engine->GetDirty()); m_engine->SetDirty(!m_engine->GetDirty());
ChangeSetupButtons();
UpdateSetupButtons(); UpdateSetupButtons();
break; break;
case EVENT_INTERFACE_FOG: case EVENT_INTERFACE_FOG:
m_engine->SetFog(!m_engine->GetFog()); m_engine->SetFog(!m_engine->GetFog());
m_camera->SetOverBaseColor(Gfx::Color(0.0f, 0.0f, 0.0f, 0.0f)); // TODO: color ok? m_camera->SetOverBaseColor(Gfx::Color(0.0f, 0.0f, 0.0f, 0.0f)); // TODO: color ok?
ChangeSetupButtons();
UpdateSetupButtons(); UpdateSetupButtons();
break; break;
case EVENT_INTERFACE_LIGHT: case EVENT_INTERFACE_LIGHT:
m_engine->SetLightMode(!m_engine->GetLightMode()); m_engine->SetLightMode(!m_engine->GetLightMode());
ChangeSetupButtons();
UpdateSetupButtons(); UpdateSetupButtons();
break; break;
case EVENT_INTERFACE_PARTI: case EVENT_INTERFACE_SHADOW_SPOTS:
case EVENT_INTERFACE_CLIP: m_engine->SetShadowMapping(false);
ChangeSetupButtons(); m_engine->SetShadowMappingQuality(false);
UpdateSetupButtons();
break; break;
case EVENT_INTERFACE_SHADOW_MAPPING: case EVENT_INTERFACE_SHADOW_MAPPING:
m_engine->SetShadowMapping(!m_engine->GetShadowMapping()); m_engine->SetShadowMapping(true);
m_engine->SetShadowMappingQuality(false);
UpdateSetupButtons(); UpdateSetupButtons();
break; break;
case EVENT_INTERFACE_SHADOW_MAPPING_QUALITY: case EVENT_INTERFACE_SHADOW_MAPPING_QUALITY:
m_engine->SetShadowMappingQuality(!m_engine->GetShadowMappingQuality()); m_engine->SetShadowMapping(true);
m_engine->SetShadowMappingQuality(true);
UpdateSetupButtons(); UpdateSetupButtons();
break; break;
@ -330,6 +326,72 @@ void CScreenSetupGraphics::UpdateSetupButtons()
pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5)); pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5));
if ( pw == 0 ) return; if ( pw == 0 ) return;
pv = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_PARTI));
if ( pv != 0 )
{
value = m_engine->GetParticleDensity();
pv->SetValue(value);
}
pv = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_CLIP));
if ( pv != 0 )
{
value = m_engine->GetClippingDistance();
pv->SetValue(value);
}
pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_DIRTY));
if ( pc != 0 )
{
pc->SetState(STATE_CHECK, m_engine->GetDirty());
}
pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_FOG));
if ( pc != 0 )
{
pc->SetState(STATE_CHECK, m_engine->GetFog());
}
pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_LIGHT));
if ( pc != 0 )
{
pc->SetState(STATE_CHECK, m_engine->GetLightMode());
}
pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_SHADOW_SPOTS));
if ( pc != 0 )
{
pc->SetState(STATE_CHECK, !m_engine->GetShadowMapping());
}
pc = static_cast<CCheck*>(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<CCheck*>(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<CEnumSlider*>(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<CEnumSlider*>(pw->SearchControl(EVENT_INTERFACE_TEXTURE_FILTER)); pes = static_cast<CEnumSlider*>(pw->SearchControl(EVENT_INTERFACE_TEXTURE_FILTER));
if ( pes != 0 ) if ( pes != 0 )
{ {
@ -354,73 +416,6 @@ void CScreenSetupGraphics::UpdateSetupButtons()
{ {
pes->SetVisibleValue(m_engine->GetMultiSample()); pes->SetVisibleValue(m_engine->GetMultiSample());
} }
pc = static_cast<CCheck*>(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<CCheck*>(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<CEnumSlider*>(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<CCheck*>(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<CCheck*>(pw->SearchControl(EVENT_INTERFACE_DIRTY));
if ( pc != 0 )
{
pc->SetState(STATE_CHECK, m_engine->GetDirty());
}
pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_FOG));
if ( pc != 0 )
{
pc->SetState(STATE_CHECK, m_engine->GetFog());
}
pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_LIGHT));
if ( pc != 0 )
{
pc->SetState(STATE_CHECK, m_engine->GetLightMode());
}
pv = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_PARTI));
if ( pv != 0 )
{
value = m_engine->GetParticleDensity();
pv->SetValue(value);
}
pv = static_cast<CEditValue*>(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. // Updates the engine function of the buttons after the setup phase.
@ -502,7 +497,6 @@ void CScreenSetupGraphics::ChangeSetupQuality(int quality)
float value; float value;
bEnable = true; //(quality >= 0); bEnable = true; //(quality >= 0);
m_engine->SetShadow(bEnable);
m_engine->SetDirty(bEnable); m_engine->SetDirty(bEnable);
m_engine->SetFog(bEnable); m_engine->SetFog(bEnable);
m_engine->SetLightMode(bEnable); m_engine->SetLightMode(bEnable);