mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-04 03:40:14 +00:00
Merge branch 'postprocess_hud' into 'master'
[Postprocessing] Improve HUD See merge request OpenMW/openmw!1933
This commit is contained in:
commit
d74ee0f3fe
@ -59,7 +59,6 @@ namespace MWGui
|
||||
getWidget(mTabConfiguration, "TabConfiguration");
|
||||
getWidget(mActiveList, "ActiveList");
|
||||
getWidget(mInactiveList, "InactiveList");
|
||||
getWidget(mModeToggle, "ModeToggle");
|
||||
getWidget(mConfigLayout, "ConfigLayout");
|
||||
getWidget(mFilter, "Filter");
|
||||
getWidget(mButtonActivate, "ButtonActivate");
|
||||
@ -78,8 +77,6 @@ namespace MWGui
|
||||
mActiveList->eventListChangePosition += MyGUI::newDelegate(this, &PostProcessorHud::notifyListChangePosition);
|
||||
mInactiveList->eventListChangePosition += MyGUI::newDelegate(this, &PostProcessorHud::notifyListChangePosition);
|
||||
|
||||
mModeToggle->eventMouseButtonClick += MyGUI::newDelegate(this, &PostProcessorHud::notifyModeToggle);
|
||||
|
||||
mFilter->eventEditTextChange += MyGUI::newDelegate(this, &PostProcessorHud::notifyFilterChanged);
|
||||
|
||||
mMainWidget->castType<MyGUI::Window>()->eventWindowChangeCoord += MyGUI::newDelegate(this, &PostProcessorHud::notifyWindowResize);
|
||||
@ -91,10 +88,14 @@ namespace MWGui
|
||||
mShaderInfo->setEditReadOnly(true);
|
||||
mShaderInfo->setEditWordWrap(true);
|
||||
mShaderInfo->setEditMultiLine(true);
|
||||
mShaderInfo->setNeedMouseFocus(false);
|
||||
|
||||
mConfigLayout->setVisibleVScroll(true);
|
||||
|
||||
mConfigArea = mConfigLayout->createWidget<MyGUI::Widget>("", {}, MyGUI::Align::Default);
|
||||
|
||||
mConfigLayout->eventMouseWheel += MyGUI::newDelegate(this, &PostProcessorHud::notifyMouseWheel);
|
||||
mConfigArea->eventMouseWheel += MyGUI::newDelegate(this, &PostProcessorHud::notifyMouseWheel);
|
||||
}
|
||||
|
||||
void PostProcessorHud::notifyFilterChanged(MyGUI::EditBox* sender)
|
||||
@ -225,12 +226,6 @@ namespace MWGui
|
||||
}
|
||||
}
|
||||
|
||||
void PostProcessorHud::notifyModeToggle(MyGUI::Widget* sender)
|
||||
{
|
||||
Settings::ShaderManager::Mode prev = Settings::ShaderManager::get().getMode();
|
||||
toggleMode(prev == Settings::ShaderManager::Mode::Debug ? Settings::ShaderManager::Mode::Normal : Settings::ShaderManager::Mode::Debug);
|
||||
}
|
||||
|
||||
void PostProcessorHud::onOpen()
|
||||
{
|
||||
toggleMode(Settings::ShaderManager::Mode::Debug);
|
||||
@ -267,6 +262,15 @@ namespace MWGui
|
||||
mConfigLayout->setSize(mConfigLayout->getWidth(), mConfigLayout->getParentSize().height - padding2);
|
||||
}
|
||||
|
||||
void PostProcessorHud::notifyMouseWheel(MyGUI::Widget *sender, int rel)
|
||||
{
|
||||
int offset = mConfigLayout->getViewOffset().top + rel * 0.3;
|
||||
if (offset > 0)
|
||||
mConfigLayout->setViewOffset(MyGUI::IntPoint(0, 0));
|
||||
else
|
||||
mConfigLayout->setViewOffset(MyGUI::IntPoint(0, static_cast<int>(offset)));
|
||||
}
|
||||
|
||||
void PostProcessorHud::select(ListWrapper* list, size_t index)
|
||||
{
|
||||
list->setIndexSelected(index);
|
||||
@ -277,8 +281,6 @@ namespace MWGui
|
||||
{
|
||||
Settings::ShaderManager::get().setMode(mode);
|
||||
|
||||
mModeToggle->setCaptionWithReplacing(mode == Settings::ShaderManager::Mode::Debug ? "#{sOn}" :"#{sOff}");
|
||||
|
||||
MWBase::Environment::get().getWorld()->getPostProcessor()->toggleMode();
|
||||
|
||||
if (!isVisible())
|
||||
@ -353,6 +355,7 @@ namespace MWGui
|
||||
MyGUI::Button* resetButton = mConfigArea->createWidget<MyGUI::Button>("MW_Button", {0,0,0,24}, MyGUI::Align::Default);
|
||||
resetButton->setCaption("Reset all to default");
|
||||
resetButton->setTextAlign(MyGUI::Align::Center);
|
||||
resetButton->eventMouseWheel += MyGUI::newDelegate(this, &PostProcessorHud::notifyMouseWheel);
|
||||
resetButton->eventMouseButtonClick += MyGUI::newDelegate(this, &PostProcessorHud::notifyResetButtonClicked);
|
||||
}
|
||||
|
||||
@ -366,6 +369,7 @@ namespace MWGui
|
||||
|
||||
fx::Widgets::UniformBase* uwidget = mConfigArea->createWidget<fx::Widgets::UniformBase>("MW_UniformEdit", {0,0,0,22}, MyGUI::Align::Default);
|
||||
uwidget->init(uniform);
|
||||
uwidget->getLabel()->eventMouseWheel += MyGUI::newDelegate(this, &PostProcessorHud::notifyMouseWheel);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -52,8 +52,6 @@ namespace MWGui
|
||||
|
||||
void updateConfigView(const std::string& name);
|
||||
|
||||
void notifyModeToggle(MyGUI::Widget* sender);
|
||||
|
||||
void notifyResetButtonClicked(MyGUI::Widget* sender);
|
||||
|
||||
void notifyListChangePosition(MyGUI::ListBox* sender, size_t index);
|
||||
@ -68,6 +66,8 @@ namespace MWGui
|
||||
|
||||
void notifyShaderDownPressed(MyGUI::Widget* sender);
|
||||
|
||||
void notifyMouseWheel(MyGUI::Widget *sender, int rel);
|
||||
|
||||
enum class Direction
|
||||
{
|
||||
Up,
|
||||
@ -97,7 +97,6 @@ namespace MWGui
|
||||
MyGUI::Widget* mConfigArea;
|
||||
|
||||
MyGUI::EditBox* mFilter;
|
||||
Gui::AutoSizedButton* mModeToggle;
|
||||
Gui::AutoSizedEditBox* mShaderInfo;
|
||||
|
||||
std::string mOverrideHint;
|
||||
|
@ -600,6 +600,11 @@ namespace fx
|
||||
expect<Lexer::String>();
|
||||
uniform->mHeader = std::get<Lexer::String>(mToken).value;
|
||||
}
|
||||
else if (key == "display_name")
|
||||
{
|
||||
expect<Lexer::String>();
|
||||
uniform->mDisplayName = std::get<Lexer::String>(mToken).value;
|
||||
}
|
||||
else
|
||||
error(Misc::StringUtils::format("unexpected key '%s'", std::string{key}));
|
||||
|
||||
|
@ -103,6 +103,7 @@ namespace fx
|
||||
struct UniformBase
|
||||
{
|
||||
std::string mName;
|
||||
std::string mDisplayName;
|
||||
std::string mHeader;
|
||||
std::string mTechniqueName;
|
||||
std::string mDescription;
|
||||
|
@ -78,7 +78,7 @@ namespace fx
|
||||
|
||||
void UniformBase::init(const std::shared_ptr<fx::Types::UniformBase>& uniform)
|
||||
{
|
||||
mLabel->setCaption(uniform->mName);
|
||||
mLabel->setCaption(uniform->mDisplayName.empty() ? uniform->mName : uniform->mDisplayName);
|
||||
|
||||
if (uniform->mDescription.empty())
|
||||
{
|
||||
|
@ -249,6 +249,8 @@ namespace fx
|
||||
|
||||
void addItem(EditBase* item);
|
||||
|
||||
Gui::AutoSizedTextBox* getLabel() { return mLabel; }
|
||||
|
||||
private:
|
||||
|
||||
void notifyResetClicked(MyGUI::Widget* sender);
|
||||
|
@ -413,24 +413,25 @@ To use the sampler, define the appropriately named `sampler2D` in any of your pa
|
||||
It is possible to define settings for your shaders that can be adjusted by either users or a Lua script.
|
||||
|
||||
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+---------+
|
||||
| Block | default | min | max | static | step | description | header |
|
||||
+=================+==========+==========+==========+=========+==========+==============+=========+
|
||||
|``uniform_bool`` | boolean | x | x | boolean | x | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+---------+
|
||||
|``uniform_float``| float | float | float | boolean | float | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+---------+
|
||||
|``uniform_int`` | integer | integer | integer | boolean | integer | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+---------+
|
||||
|``uniform_vec2`` | vec2 | vec2 | vec2 | boolean | vec2 | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+---------+
|
||||
|``uniform_vec3`` | vec3 | vec3 | vec3 | boolean | vec3 | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+---------+
|
||||
|``uniform_vec4`` | vec4 | vec4 | vec4 | boolean | vec4 | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+---------+
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+-------------------+---------+
|
||||
| Block | default | min | max | static | step | description | display_name | header |
|
||||
+=================+==========+==========+==========+=========+==========+==============+===================+=========+
|
||||
|``uniform_bool`` | boolean | x | x | boolean | x | string | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+-------------------+---------+
|
||||
|``uniform_float``| float | float | float | boolean | float | string | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+-------------------+---------+
|
||||
|``uniform_int`` | integer | integer | integer | boolean | integer | string | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+-------------------+---------+
|
||||
|``uniform_vec2`` | vec2 | vec2 | vec2 | boolean | vec2 | string | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+-------------------+---------+
|
||||
|``uniform_vec3`` | vec3 | vec3 | vec3 | boolean | vec3 | string | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+-------------------+---------+
|
||||
|``uniform_vec4`` | vec4 | vec4 | vec4 | boolean | vec4 | string | string | string |
|
||||
+-----------------+----------+----------+----------+---------+----------+--------------+-------------------+---------+
|
||||
|
||||
The ``description`` field is used to display a toolip when viewed in the in-game HUD. The ``header`` field
|
||||
field can be used to organize uniforms into groups in the HUD.
|
||||
field can be used to organize uniforms into groups in the HUD. The ``display_name`` field can be used to create a
|
||||
more user friendly uniform name for display in the HUD.
|
||||
|
||||
If you would like a uniform to be adjustable with Lua API you `must` set ``static = false;``. Doing this
|
||||
will also remove the uniform from the players HUD.
|
||||
@ -580,6 +581,7 @@ desaturation to apply to the scene. Here we setup a new variable of type
|
||||
max = 1.0;
|
||||
step = 0.05;
|
||||
static = true;
|
||||
display_name = "Desaturation Factor";
|
||||
description = "Desaturation factor. A value of 1.0 is full grayscale.";
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
||||
<Property key="Padding" value="0"/>
|
||||
<Property key="Spacing" value="8"/>
|
||||
|
||||
<Widget type="Widget" position ="0 0 0 400">
|
||||
<Widget type="Widget" position ="0 0 0 300">
|
||||
<UserString key="HStretch" value="true"/>
|
||||
<UserString key="VStretch" value="false"/>
|
||||
|
||||
@ -103,31 +103,6 @@
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
<Widget type="Widget" position="0 0 230 28" align="Bottom Left">
|
||||
<UserString key="HStretch" value="false"/>
|
||||
<UserString key="VStretch" value="false"/>
|
||||
|
||||
<Widget type="HBox" position_real="0 0 1 1" align="Stretch">
|
||||
<UserString key="HStretch" value="true"/>
|
||||
<Property key="Spacing" value="4"/>
|
||||
|
||||
<Widget type="AutoSizedTextBox" skin="SandText">
|
||||
<UserString key="HStretch" value="true"/>
|
||||
<UserString key="VStretch" value="true"/>
|
||||
<Property key="Caption" value="Enable Config Mode"/>
|
||||
<Property key="TextAlign" value="Left VCenter"/>
|
||||
</Widget>
|
||||
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" name="ModeToggle">
|
||||
<UserString key="VStretch" value="true"/>
|
||||
<Property key="Caption" value="#{sOff}"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
</Widget>
|
||||
|
||||
<Widget type="Widget" />
|
||||
|
||||
</Widget>
|
||||
|
||||
</Widget>
|
||||
|
@ -59,7 +59,7 @@
|
||||
<Widget type="AutoSizedTextBox" skin="SandText" name="Label" align="Top Right">
|
||||
<UserString key="HStretch" value="true"/>
|
||||
<UserString key="VStretch" value="true"/>
|
||||
<Property key="Padding" value="8"/>
|
||||
<Property key="Padding" value="8"/>
|
||||
<Property key="TextAlign" value="Left Top"/>
|
||||
<Property key="NeedMouse" value="true"/>
|
||||
</Widget>
|
||||
|
Loading…
x
Reference in New Issue
Block a user