Add sliders to change ssao parameters.
This commit is contained in:
parent
496269e73b
commit
768d51d0c3
@ -1,7 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<stkgui>
|
||||
<div x="2%" y="10%" width="96%" height="80%" layout="vertical-row" >
|
||||
<label id="title" width="100%"/>
|
||||
<gauge id="value_slider" min_value="0" max_value="100" width="100%" />
|
||||
<label id="Red" width="100%"/>
|
||||
<gauge id="red_slider" min_value="0" max_value="100" width="100%" />
|
||||
<label id="Green" width="100%"/>
|
||||
<gauge id="green_slider" min_value="0" max_value="100" width="100%" />
|
||||
<label id="Blue" width="100%"/>
|
||||
<gauge id="blue_slider" min_value="0" max_value="100" width="100%" />
|
||||
<label id="SSAO radius" width="100%"/>
|
||||
<gauge id="ssao_radius" min_value="0" max_value="100" width="100%" />
|
||||
<label id="SSAO k" width="100%"/>
|
||||
<gauge id="ssao_k" min_value="0" max_value="100" width="100%" />
|
||||
<label id="SSAO Sigma" width="100%"/>
|
||||
<gauge id="ssao_sigma" min_value="0" max_value="100" width="100%" />
|
||||
</div>
|
||||
</stkgui>
|
||||
|
@ -32,23 +32,19 @@ using namespace GUIEngine;
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------
|
||||
|
||||
DebugSliderDialog::DebugSliderDialog(std::string id, irr::core::stringw msg, std::function<int()> G, std::function<void(int)> S) :
|
||||
ModalDialog(0.85f, 0.25f, MODAL_DIALOG_LOCATION_BOTTOM), Getter(G), Setter(S)
|
||||
DebugSliderDialog::DebugSliderDialog() : ModalDialog(0.85f, 0.25f, MODAL_DIALOG_LOCATION_CENTER)
|
||||
{
|
||||
//if (StateManager::get()->getGameState() == GUIEngine::GAME)
|
||||
//{
|
||||
// World::getWorld()->schedulePause(World::IN_GAME_MENU_PHASE);
|
||||
//}
|
||||
|
||||
m_id = id;
|
||||
m_fade_background = false;
|
||||
|
||||
loadFromFile("debug_slider.stkgui");
|
||||
}
|
||||
|
||||
LabelWidget* message = getWidget<LabelWidget>("title");
|
||||
message->setText( msg.c_str(), false );
|
||||
|
||||
getWidget<SpinnerWidget>("value_slider")->setValue(Getter());
|
||||
void DebugSliderDialog::setSliderHook(std::string id, unsigned min, unsigned max, std::function<int()> G, std::function<void(int)> S)
|
||||
{
|
||||
getWidget<SpinnerWidget>(id.c_str())->setValue(G());
|
||||
getWidget<SpinnerWidget>(id.c_str())->setMin(min);
|
||||
getWidget<SpinnerWidget>(id.c_str())->setMax(max);
|
||||
Setters[id] = S;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------
|
||||
@ -71,15 +67,12 @@ void DebugSliderDialog::onEnterPressedInternal()
|
||||
|
||||
GUIEngine::EventPropagation DebugSliderDialog::processEvent(const std::string& eventSource)
|
||||
{
|
||||
if (eventSource == "value_slider")
|
||||
{
|
||||
int value = getWidget<SpinnerWidget>("value_slider")->getValue();
|
||||
Log::info("DebugSlider", "Value for <%s> : %i", m_id.c_str(), value);
|
||||
Setter(value);
|
||||
return GUIEngine::EVENT_BLOCK;
|
||||
}
|
||||
|
||||
return GUIEngine::EVENT_LET;
|
||||
if (Setters.find(eventSource) == Setters.end())
|
||||
return GUIEngine::EVENT_LET;
|
||||
int value = getWidget<SpinnerWidget>(eventSource.c_str())->getValue();
|
||||
Log::info("DebugSlider", "Value for <%s> : %i", eventSource.c_str(), value);
|
||||
Setters[eventSource](value);
|
||||
return GUIEngine::EVENT_BLOCK;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------------
|
||||
|
@ -33,16 +33,15 @@ class DebugSliderDialog : public GUIEngine::ModalDialog
|
||||
private:
|
||||
|
||||
std::string m_id;
|
||||
std::function<int()> Getter;
|
||||
std::function<void(int)> Setter;
|
||||
std::map<std::string, std::function<void(int)> >Setters;
|
||||
|
||||
public:
|
||||
|
||||
|
||||
DebugSliderDialog(std::string id, ::core::stringw msg, std::function<int()> G, std::function<void(int)> S);
|
||||
DebugSliderDialog();
|
||||
|
||||
~DebugSliderDialog();
|
||||
|
||||
void setSliderHook(std::string id, unsigned min, unsigned max, std::function<int()> G, std::function<void(int)> S);
|
||||
|
||||
virtual void onEnterPressedInternal() OVERRIDE;
|
||||
virtual void onUpdate(float dt) OVERRIDE;
|
||||
|
||||
|
@ -83,9 +83,7 @@ enum DebugMenuCommand
|
||||
DEBUG_TOGGLE_GUI,
|
||||
DEBUG_HIDE_KARTS,
|
||||
DEBUG_THROTTLE_FPS,
|
||||
DEBUG_CHANGE_AMBIENT_RED,
|
||||
DEBUG_CHANGE_AMBIENT_GREEN,
|
||||
DEBUG_CHANGE_AMBIENT_BLUE,
|
||||
DEBUG_VISUAL_VALUES,
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@ -189,11 +187,7 @@ bool onEvent(const SEvent &event)
|
||||
sub->addItem(L"Anvil", DEBUG_ATTACHMENT_ANVIL);
|
||||
sub->addItem(L"Parachute", DEBUG_ATTACHMENT_PARACHUTE);
|
||||
|
||||
mnu->addItem(L"Adjust Ambient >", -1, true, true);
|
||||
sub = mnu->getSubMenu(3);
|
||||
sub->addItem(L"Red ", DEBUG_CHANGE_AMBIENT_RED);
|
||||
sub->addItem(L"Green", DEBUG_CHANGE_AMBIENT_GREEN);
|
||||
sub->addItem(L"Blue", DEBUG_CHANGE_AMBIENT_BLUE);
|
||||
mnu->addItem(L"Adjust values", DEBUG_VISUAL_VALUES);
|
||||
|
||||
mnu->addItem(L"Profiler",DEBUG_PROFILER);
|
||||
if (UserConfigParams::m_profiler_enabled)
|
||||
@ -440,31 +434,35 @@ bool onEvent(const SEvent &event)
|
||||
kart->getNode()->setVisible(false);
|
||||
}
|
||||
}
|
||||
else if (cmdID == DEBUG_CHANGE_AMBIENT_RED)
|
||||
else if (cmdID == DEBUG_VISUAL_VALUES)
|
||||
{
|
||||
new DebugSliderDialog("Red", "Red", [](){ return irr_driver->getAmbientLight().r * 255.; },
|
||||
DebugSliderDialog *dsd = new DebugSliderDialog();
|
||||
dsd->setSliderHook( "red_slider", 0, 255, [](){ return irr_driver->getAmbientLight().r * 255.; },
|
||||
[](int v){
|
||||
video::SColorf ambient = irr_driver->getAmbientLight();
|
||||
ambient.setColorComponentValue(0, v / 255.);
|
||||
irr_driver->setAmbientLight(ambient); }
|
||||
);
|
||||
}
|
||||
else if (cmdID == DEBUG_CHANGE_AMBIENT_GREEN)
|
||||
{
|
||||
new DebugSliderDialog("Green", "Green", [](){ return irr_driver->getAmbientLight().g * 255.; },
|
||||
[](int v){
|
||||
video::SColorf ambient = irr_driver->getAmbientLight();
|
||||
ambient.setColorComponentValue(1, v / 255.);
|
||||
irr_driver->setAmbientLight(ambient); }
|
||||
);
|
||||
}
|
||||
else if (cmdID == DEBUG_CHANGE_AMBIENT_BLUE)
|
||||
{
|
||||
new DebugSliderDialog("Blue", "Blue", [](){ return irr_driver->getAmbientLight().b * 255.; },
|
||||
dsd->setSliderHook("green_slider", 0, 255, [](){ return irr_driver->getAmbientLight().g * 255.; },
|
||||
[](int v){
|
||||
video::SColorf ambient = irr_driver->getAmbientLight();
|
||||
ambient.setColorComponentValue(2, v / 255.);
|
||||
irr_driver->setAmbientLight(ambient); }
|
||||
ambient.setColorComponentValue(1, v / 255.);
|
||||
irr_driver->setAmbientLight(ambient); }
|
||||
);
|
||||
dsd->setSliderHook("blue_slider", 0, 255, [](){ return irr_driver->getAmbientLight().b * 255.; },
|
||||
[](int v){
|
||||
video::SColorf ambient = irr_driver->getAmbientLight();
|
||||
ambient.setColorComponentValue(2, v / 255.);
|
||||
irr_driver->setAmbientLight(ambient); }
|
||||
);
|
||||
dsd->setSliderHook("ssao_radius", 0, 100, [](){ return irr_driver->getSSAORadius() * 10; },
|
||||
[](int v){irr_driver->setSSAORadius(v / 10.); }
|
||||
);
|
||||
dsd->setSliderHook("ssao_k", 0, 100, [](){ return irr_driver->getSSAOK() * 10; },
|
||||
[](int v){irr_driver->setSSAOK(v / 10.); }
|
||||
);
|
||||
dsd->setSliderHook("ssao_sigma", 0, 100, [](){ return irr_driver->getSSAOSigma() * 10; },
|
||||
[](int v){irr_driver->setSSAOSigma(v / 10.); }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user