STORM-2082 Attempt to put advanced settings into separate floater
parent
4e1bd474f2
commit
b4c99cbb0a
|
|
@ -351,6 +351,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
|
|||
mCommitCallbackRegistrar.add("Pref.AutoReplace", boost::bind(&LLFloaterPreference::onClickAutoReplace, this));
|
||||
mCommitCallbackRegistrar.add("Pref.PermsDefault", boost::bind(&LLFloaterPreference::onClickPermsDefault, this));
|
||||
mCommitCallbackRegistrar.add("Pref.SpellChecker", boost::bind(&LLFloaterPreference::onClickSpellChecker, this));
|
||||
mCommitCallbackRegistrar.add("Pref.Advanced", boost::bind(&LLFloaterPreference::onClickAdvanced, this));
|
||||
|
||||
sSkin = gSavedSettings.getString("SkinCurrent");
|
||||
|
||||
|
|
@ -621,6 +622,9 @@ void LLFloaterPreference::cancel()
|
|||
|
||||
// hide spellchecker settings folder
|
||||
LLFloaterReg::hideInstance("prefs_spellchecker");
|
||||
|
||||
// hide advancede floater
|
||||
LLFloaterReg::hideInstance("prefs_graphics_advanced");
|
||||
|
||||
// reverts any changes to current skin
|
||||
gSavedSettings.setString("SkinCurrent", sSkin);
|
||||
|
|
@ -745,6 +749,22 @@ void LLFloaterPreference::onVertexShaderEnable()
|
|||
refreshEnabledGraphics();
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::onVertexShaderEnable()
|
||||
{
|
||||
LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (instance)
|
||||
{
|
||||
instance->refresh();
|
||||
}
|
||||
|
||||
refreshEnabledGraphics();
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledGraphics()
|
||||
{
|
||||
refreshEnabledState();
|
||||
}
|
||||
|
||||
void LLFloaterPreference::onAvatarImpostorsEnable()
|
||||
{
|
||||
refreshEnabledGraphics();
|
||||
|
|
@ -792,10 +812,12 @@ void LLFloaterPreference::setHardwareDefaults()
|
|||
void LLFloaterPreference::getControlNames(std::vector<std::string>& names)
|
||||
{
|
||||
LLView* view = findChild<LLView>("display");
|
||||
if (view)
|
||||
LLFloater* advanced = LLFloaterReg::findTypedInstance<LLFloater>("prefs_graphics_advanced");
|
||||
if (view && advanced)
|
||||
{
|
||||
std::list<LLView*> stack;
|
||||
stack.push_back(view);
|
||||
stack.push_back(advanced);
|
||||
while(!stack.empty())
|
||||
{
|
||||
// Process view on top of the stack
|
||||
|
|
@ -930,6 +952,12 @@ void LLFloaterPreference::refreshEnabledGraphics()
|
|||
{
|
||||
instance->refresh();
|
||||
}
|
||||
|
||||
LLFloater* advanced = LLFloaterReg::findTypedInstance<LLFloater>("prefs_graphics_advanced");
|
||||
if (advanced)
|
||||
{
|
||||
advanced->refresh();
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPreference::onClickClearCache()
|
||||
|
|
@ -1111,7 +1139,37 @@ void LLFloaterPreference::buildPopupLists()
|
|||
}
|
||||
|
||||
void LLFloaterPreference::refreshEnabledState()
|
||||
{
|
||||
{
|
||||
LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
|
||||
LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
|
||||
|
||||
// if vertex shaders off, disable all shader related products
|
||||
if (!LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable") ||
|
||||
!LLFeatureManager::getInstance()->isFeatureAvailable("WindLightUseAtmosShaders"))
|
||||
{
|
||||
ctrl_wind_light->setEnabled(FALSE);
|
||||
ctrl_wind_light->setValue(FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
ctrl_wind_light->setEnabled(gSavedSettings.getBOOL("VertexShaderEnable"));
|
||||
}
|
||||
|
||||
//Deferred/SSAO/Shadows
|
||||
BOOL bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump") && gSavedSettings.getBOOL("RenderObjectBump");
|
||||
BOOL shaders = gSavedSettings.getBOOL("WindLightUseAtmosShaders") && gSavedSettings.getBOOL("VertexShaderEnable");
|
||||
BOOL enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
|
||||
bumpshiny &&
|
||||
shaders &&
|
||||
gGLManager.mHasFramebufferObject &&
|
||||
gSavedSettings.getBOOL("RenderAvatarVP") &&
|
||||
(ctrl_wind_light->get()) ? TRUE : FALSE;
|
||||
|
||||
ctrl_deferred->setEnabled(enabled);
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledState()
|
||||
{
|
||||
LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");
|
||||
LLTextBox* reflections_text = getChild<LLTextBox>("ReflectionsText");
|
||||
|
||||
|
|
@ -1175,22 +1233,18 @@ void LLFloaterPreference::refreshEnabledState()
|
|||
|
||||
// WindLight
|
||||
LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
|
||||
LLCheckBoxCtrl* ctrl_wind_light2 = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders2");
|
||||
LLSliderCtrl* sky = getChild<LLSliderCtrl>("SkyMeshDetail");
|
||||
LLTextBox* sky_text = getChild<LLTextBox>("SkyMeshDetailText");
|
||||
|
||||
// *HACK just checks to see if we can use shaders...
|
||||
// maybe some cards that use shaders, but don't support windlight
|
||||
ctrl_wind_light->setEnabled(ctrl_shader_enable->getEnabled() && shaders);
|
||||
ctrl_wind_light2->setEnabled(ctrl_shader_enable->getEnabled() && shaders);
|
||||
|
||||
sky->setEnabled(ctrl_wind_light->get() && shaders);
|
||||
sky_text->setEnabled(ctrl_wind_light->get() && shaders);
|
||||
|
||||
//Deferred/SSAO/Shadows
|
||||
LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
|
||||
LLCheckBoxCtrl* ctrl_deferred2 = getChild<LLCheckBoxCtrl>("UseLightShaders2");
|
||||
|
||||
|
||||
BOOL enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
|
||||
((bumpshiny_ctrl && bumpshiny_ctrl->get()) ? TRUE : FALSE) &&
|
||||
|
|
@ -1200,7 +1254,6 @@ void LLFloaterPreference::refreshEnabledState()
|
|||
(ctrl_wind_light->get()) ? TRUE : FALSE;
|
||||
|
||||
ctrl_deferred->setEnabled(enabled);
|
||||
ctrl_deferred2->setEnabled(enabled);
|
||||
|
||||
LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
|
||||
LLCheckBoxCtrl* ctrl_dof = getChild<LLCheckBoxCtrl>("UseDoF");
|
||||
|
|
@ -1291,7 +1344,7 @@ void LLFloaterPreference::refreshEnabledState()
|
|||
getChild<LLButton>("default_creation_permissions")->setEnabled(LLStartUp::getStartupState() < STATE_STARTED ? false : true);
|
||||
}
|
||||
|
||||
void LLFloaterPreference::disableUnavailableSettings()
|
||||
void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
|
||||
{
|
||||
LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");
|
||||
LLTextBox* reflections_text = getChild<LLTextBox>("ReflectionsText");
|
||||
|
|
@ -1302,7 +1355,6 @@ void LLFloaterPreference::disableUnavailableSettings()
|
|||
LLSliderCtrl* ctrl_maximum_arc = getChild<LLSliderCtrl>("MaximumARC");
|
||||
LLTextBox* maximum_arc_text = getChild<LLTextBox>("MaximumARCText");
|
||||
LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
|
||||
LLCheckBoxCtrl* ctrl_deferred2 = getChild<LLCheckBoxCtrl>("UseLightShaders2");
|
||||
LLComboBox* ctrl_shadows = getChild<LLComboBox>("ShadowDetail");
|
||||
LLTextBox* shadows_text = getChild<LLTextBox>("RenderShadowDetailText");
|
||||
LLCheckBoxCtrl* ctrl_ssao = getChild<LLCheckBoxCtrl>("UseSSAO");
|
||||
|
|
@ -1344,8 +1396,6 @@ void LLFloaterPreference::disableUnavailableSettings()
|
|||
|
||||
ctrl_deferred->setEnabled(FALSE);
|
||||
ctrl_deferred->setValue(FALSE);
|
||||
ctrl_deferred2->setEnabled(FALSE);
|
||||
ctrl_deferred2->setValue(FALSE);
|
||||
}
|
||||
|
||||
// disabled windlight
|
||||
|
|
@ -1370,8 +1420,6 @@ void LLFloaterPreference::disableUnavailableSettings()
|
|||
|
||||
ctrl_deferred->setEnabled(FALSE);
|
||||
ctrl_deferred->setValue(FALSE);
|
||||
ctrl_deferred2->setEnabled(FALSE);
|
||||
ctrl_deferred2->setValue(FALSE);
|
||||
}
|
||||
|
||||
// disabled deferred
|
||||
|
|
@ -1390,8 +1438,6 @@ void LLFloaterPreference::disableUnavailableSettings()
|
|||
|
||||
ctrl_deferred->setEnabled(FALSE);
|
||||
ctrl_deferred->setValue(FALSE);
|
||||
ctrl_deferred2->setEnabled(FALSE);
|
||||
ctrl_deferred2->setValue(FALSE);
|
||||
}
|
||||
|
||||
// disabled deferred SSAO
|
||||
|
|
@ -1439,8 +1485,6 @@ void LLFloaterPreference::disableUnavailableSettings()
|
|||
|
||||
ctrl_deferred->setEnabled(FALSE);
|
||||
ctrl_deferred->setValue(FALSE);
|
||||
ctrl_deferred2->setEnabled(FALSE);
|
||||
ctrl_deferred2->setValue(FALSE);
|
||||
}
|
||||
|
||||
// disabled cloth
|
||||
|
|
@ -1461,6 +1505,18 @@ void LLFloaterPreference::disableUnavailableSettings()
|
|||
void LLFloaterPreference::refresh()
|
||||
{
|
||||
LLPanel::refresh();
|
||||
refreshEnabledState();
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::draw()
|
||||
{
|
||||
refresh();
|
||||
LLFloater::draw();
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::refresh()
|
||||
{
|
||||
refreshEnabledState();
|
||||
|
||||
getChild<LLUICtrl>("fsaa")->setValue((LLSD::Integer) gSavedSettings.getU32("RenderFSAASamples"));
|
||||
|
||||
|
|
@ -1731,7 +1787,7 @@ void LLFloaterPreference::refreshUI()
|
|||
refresh();
|
||||
}
|
||||
|
||||
void LLFloaterPreference::updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box)
|
||||
void LLFloaterPreferenceGraphicsAdvanced::updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box)
|
||||
{
|
||||
if (text_box == NULL || ctrl== NULL)
|
||||
return;
|
||||
|
|
@ -1760,7 +1816,7 @@ void LLFloaterPreference::updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_b
|
|||
}
|
||||
}
|
||||
|
||||
void LLFloaterPreference::updateImpostorsText(LLSliderCtrl* ctrl, LLTextBox* text_box)
|
||||
void LLFloaterPreferenceGraphicsAdvanced::updateImpostorsText(LLSliderCtrl* ctrl, LLTextBox* text_box)
|
||||
{
|
||||
F32 value = (F32)ctrl->getValue().asReal();
|
||||
|
||||
|
|
@ -1779,7 +1835,7 @@ void LLFloaterPreference::updateImpostorsText(LLSliderCtrl* ctrl, LLTextBox* tex
|
|||
}
|
||||
}
|
||||
|
||||
void LLFloaterPreference::updateMaximumArcText(LLSliderCtrl* ctrl, LLTextBox* text_box)
|
||||
void LLFloaterPreferenceGraphicsAdvanced::updateMaximumArcText(LLSliderCtrl* ctrl, LLTextBox* text_box)
|
||||
{
|
||||
F32 min_result = 20000.0f;
|
||||
F32 max_result = 300000.0f;
|
||||
|
|
@ -1857,6 +1913,11 @@ void LLFloaterPreference::onClickSpellChecker()
|
|||
LLFloaterReg::showInstance("prefs_spellchecker");
|
||||
}
|
||||
|
||||
void LLFloaterPreference::onClickAdvanced()
|
||||
{
|
||||
LLFloaterReg::showInstance("prefs_graphics_advanced");
|
||||
}
|
||||
|
||||
void LLFloaterPreference::onClickActionChange()
|
||||
{
|
||||
mClickActionDirty = true;
|
||||
|
|
@ -2115,10 +2176,13 @@ void LLPanelPreference::apply()
|
|||
|
||||
void LLPanelPreference::saveSettings()
|
||||
{
|
||||
LLFloater* advanced = LLFloaterReg::findTypedInstance<LLFloater>("prefs_graphics_advanced");
|
||||
|
||||
// Save the value of all controls in the hierarchy
|
||||
mSavedValues.clear();
|
||||
std::list<LLView*> view_stack;
|
||||
view_stack.push_back(this);
|
||||
view_stack.push_back(advanced);
|
||||
while(!view_stack.empty())
|
||||
{
|
||||
// Process view on top of the stack
|
||||
|
|
@ -2279,6 +2343,9 @@ static LLPanelInjector<LLPanelPreferencePrivacy> t_pref_privacy("panel_preferenc
|
|||
|
||||
BOOL LLPanelPreferenceGraphics::postBuild()
|
||||
{
|
||||
LLFloaterReg::showInstance("prefs_graphics_advanced");
|
||||
LLFloaterReg::hideInstance("prefs_graphics_advanced");
|
||||
|
||||
// Don't do this on Mac as their braindead GL versioning
|
||||
// sets this when 8x and 16x are indeed available
|
||||
//
|
||||
|
|
@ -2340,8 +2407,10 @@ void LLPanelPreferenceGraphics::setPresetText()
|
|||
|
||||
bool LLPanelPreferenceGraphics::hasDirtyChilds()
|
||||
{
|
||||
LLFloater* advanced = LLFloaterReg::findTypedInstance<LLFloater>("prefs_graphics_advanced");
|
||||
std::list<LLView*> view_stack;
|
||||
view_stack.push_back(this);
|
||||
view_stack.push_back(advanced);
|
||||
while(!view_stack.empty())
|
||||
{
|
||||
// Process view on top of the stack
|
||||
|
|
@ -2377,8 +2446,10 @@ bool LLPanelPreferenceGraphics::hasDirtyChilds()
|
|||
|
||||
void LLPanelPreferenceGraphics::resetDirtyChilds()
|
||||
{
|
||||
LLFloater* advanced = LLFloaterReg::findTypedInstance<LLFloater>("prefs_graphics_advanced");
|
||||
std::list<LLView*> view_stack;
|
||||
view_stack.push_back(this);
|
||||
view_stack.push_back(advanced);
|
||||
while(!view_stack.empty())
|
||||
{
|
||||
// Process view on top of the stack
|
||||
|
|
@ -2414,6 +2485,16 @@ void LLPanelPreferenceGraphics::setHardwareDefaults()
|
|||
LLPanelPreference::setHardwareDefaults();
|
||||
}
|
||||
|
||||
LLFloaterPreferenceGraphicsAdvanced::LLFloaterPreferenceGraphicsAdvanced(const LLSD& key)
|
||||
: LLFloater(key)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("Pref.VertexShaderEnable", boost::bind(&LLFloaterPreferenceGraphicsAdvanced::onVertexShaderEnable, this));
|
||||
}
|
||||
|
||||
LLFloaterPreferenceGraphicsAdvanced::~LLFloaterPreferenceGraphicsAdvanced()
|
||||
{
|
||||
}
|
||||
|
||||
LLFloaterPreferenceProxy::LLFloaterPreferenceProxy(const LLSD& key)
|
||||
: LLFloater(key),
|
||||
mSocksSettingsDirty(false)
|
||||
|
|
|
|||
|
|
@ -117,10 +117,10 @@ protected:
|
|||
// callback for defaults
|
||||
void setHardwareDefaults();
|
||||
void setRecommended();
|
||||
// callback for when client turns on shaders
|
||||
void onVertexShaderEnable();
|
||||
// callback for when client turns on impostors
|
||||
void onAvatarImpostorsEnable();
|
||||
// callback for when client turns on shaders
|
||||
void onVertexShaderEnable();
|
||||
|
||||
// callback for commit in the "Single click on land" and "Double click on land" comboboxes.
|
||||
void onClickActionChange();
|
||||
|
|
@ -128,7 +128,7 @@ protected:
|
|||
void updateClickActionSettings();
|
||||
// updates click/double-click action controls depending on values from settings.xml
|
||||
void updateClickActionControls();
|
||||
|
||||
|
||||
// This function squirrels away the current values of the controls so that
|
||||
// cancel() can restore them.
|
||||
void saveSettings();
|
||||
|
|
@ -155,15 +155,11 @@ public:
|
|||
void enableHistory();
|
||||
void setPersonalInfo(const std::string& visibility, bool im_via_email);
|
||||
void refreshEnabledState();
|
||||
void disableUnavailableSettings();
|
||||
void onCommitWindowedMode();
|
||||
void refresh(); // Refresh enable/disable
|
||||
// if the quality radio buttons are changed
|
||||
void onChangeQuality(const LLSD& data);
|
||||
|
||||
void updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box);
|
||||
void updateImpostorsText(LLSliderCtrl* ctrl, LLTextBox* text_box);
|
||||
void updateMaximumArcText(LLSliderCtrl* ctrl, LLTextBox* text_box);
|
||||
void refreshUI();
|
||||
|
||||
void onCommitParcelMediaAutoPlayEnable();
|
||||
|
|
@ -177,6 +173,7 @@ public:
|
|||
void onClickPermsDefault();
|
||||
void onClickAutoReplace();
|
||||
void onClickSpellChecker();
|
||||
void onClickAdvanced();
|
||||
void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
|
||||
void getUIColor(LLUICtrl* ctrl, const LLSD& param);
|
||||
void onLogChatHistorySaved();
|
||||
|
|
@ -269,6 +266,24 @@ private:
|
|||
void onPresetsListChange();
|
||||
};
|
||||
|
||||
class LLFloaterPreferenceGraphicsAdvanced : public LLFloater
|
||||
{
|
||||
public:
|
||||
LLFloaterPreferenceGraphicsAdvanced(const LLSD& key);
|
||||
~LLFloaterPreferenceGraphicsAdvanced();
|
||||
|
||||
void disableUnavailableSettings();
|
||||
void refreshEnabledGraphics();
|
||||
void refreshEnabledState();
|
||||
void updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box);
|
||||
void updateImpostorsText(LLSliderCtrl* ctrl, LLTextBox* text_box);
|
||||
void updateMaximumArcText(LLSliderCtrl* ctrl, LLTextBox* text_box);
|
||||
void draw();
|
||||
void refresh();
|
||||
// callback for when client turns on shaders
|
||||
void onVertexShaderEnable();
|
||||
};
|
||||
|
||||
class LLFloaterPreferenceProxy : public LLFloater
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -274,6 +274,7 @@ void LLViewerFloaterReg::registerFloaters()
|
|||
LLFloaterReg::add("perms_default", "floater_perms_default.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPermsDefault>);
|
||||
LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
|
||||
LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
|
||||
LLFloaterReg::add("prefs_graphics_advanced", "floater_preferences_graphics_advanced.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceGraphicsAdvanced>);
|
||||
LLFloaterReg::add("prefs_proxy", "floater_preferences_proxy.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceProxy>);
|
||||
LLFloaterReg::add("prefs_spellchecker_import", "floater_spellcheck_import.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSpellCheckerImport>);
|
||||
LLFloaterReg::add("prefs_translation", "floater_translation_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTranslationSettings>);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,862 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater
|
||||
height="680"
|
||||
layout="topleft"
|
||||
name="prefs_graphics_advanced"
|
||||
help_topic="Preferences_Graphics_Advanced"
|
||||
single_instance="true"
|
||||
save_rect="true"
|
||||
title="ADVANCED GRAPHICS PREFERENCES"
|
||||
width="450">
|
||||
|
||||
<!-- This block shows Advanced Settings -->
|
||||
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Reset all to recommended settings"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="Defaults"
|
||||
top="5"
|
||||
width="250">
|
||||
<button.commit_callback
|
||||
function="Pref.HardwareDefaults" />
|
||||
</button>
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="GeneralText"
|
||||
top_delta="35"
|
||||
left="5"
|
||||
width="128">
|
||||
General
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="RenderFarClip"
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="8"
|
||||
initial_value="160"
|
||||
label="Draw distance:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
min_val="64"
|
||||
max_val="512"
|
||||
name="DrawDistance"
|
||||
top_delta="16"
|
||||
width="330" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="DrawDistanceMeterText2"
|
||||
top_delta="0"
|
||||
left_delta="330"
|
||||
width="102">
|
||||
m
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="RenderMaxPartCount"
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="256"
|
||||
initial_value="4096"
|
||||
label="Max. particle count:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
max_val="8192"
|
||||
name="MaxParticleCount"
|
||||
top_delta="16"
|
||||
width="336" />
|
||||
|
||||
<slider
|
||||
control_name="RenderGlowResolutionPow"
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="1"
|
||||
initial_value="8"
|
||||
label="Post process quality:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
min_val="8"
|
||||
max_val="9"
|
||||
name="RenderPostProcess"
|
||||
show_text="false"
|
||||
top_delta="16"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
function="Pref.UpdateSliderText"
|
||||
parameter="PostProcessText" />
|
||||
</slider>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="PostProcessText"
|
||||
top_delta="0"
|
||||
left_delta="304"
|
||||
width="128">
|
||||
Low
|
||||
</text>
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="AvatarText"
|
||||
top_delta="20"
|
||||
left="5"
|
||||
width="128">
|
||||
Avatar
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="MaximumARC"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
initial_value="101"
|
||||
increment="1"
|
||||
label="Maximum ARC:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
min_val="1"
|
||||
max_val="101"
|
||||
name="MaximumARC"
|
||||
show_text="false"
|
||||
top_delta="16"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
function="Pref.UpdateSliderText"
|
||||
parameter="MaximumARCText" />
|
||||
</slider>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
top_delta="0"
|
||||
left_delta="304"
|
||||
text_readonly_color="LabelDisabledColor"
|
||||
name="MaximumARCText"
|
||||
width="128">
|
||||
0
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="RenderAvatarMaxVisible"
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="1"
|
||||
initial_value="12"
|
||||
label="Max. # of non-impostors:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
min_val="1"
|
||||
max_val="66"
|
||||
name="MaxNumberAvatarDrawn"
|
||||
show_text="false"
|
||||
top_delta="16"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
function="Pref.UpdateSliderText"
|
||||
parameter="ImpostorsText" />
|
||||
</slider>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
top_delta="0"
|
||||
left_delta="304"
|
||||
text_readonly_color="LabelDisabledColor"
|
||||
name="ImpostorsText"
|
||||
width="128">
|
||||
0
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="RenderAvatarLODFactor"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.125"
|
||||
initial_value="160"
|
||||
label="Detail:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="AvatarMeshDetail"
|
||||
show_text="false"
|
||||
top_delta="16"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
function="Pref.UpdateSliderText"
|
||||
parameter="AvatarMeshDetailText" />
|
||||
</slider>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="AvatarMeshDetailText"
|
||||
top_delta="0"
|
||||
left_delta="304"
|
||||
width="128">
|
||||
Low
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="RenderAvatarPhysicsLODFactor"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
initial_value="100"
|
||||
increment=".05"
|
||||
label="Physics:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="AvatarPhysicsDetail"
|
||||
show_text="false"
|
||||
top_delta="16"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
function="Pref.UpdateSliderText"
|
||||
parameter="AvatarPhysicsDetailText" />
|
||||
</slider>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
top_delta="0"
|
||||
left_delta="304"
|
||||
name="AvatarPhysicsDetailText"
|
||||
width="128">
|
||||
Low
|
||||
</text>
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="ShadersText"
|
||||
top_delta="20"
|
||||
left="5"
|
||||
width="128">
|
||||
Shaders
|
||||
</text>
|
||||
|
||||
<check_box
|
||||
control_name="RenderTransparentWater"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Transparent Water"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="TransparentWater"
|
||||
top_delta="16"
|
||||
width="300" />
|
||||
|
||||
<check_box
|
||||
control_name="RenderObjectBump"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Bump mapping and shiny"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="BumpShiny"
|
||||
top_delta="16"
|
||||
width="300">
|
||||
<check_box.commit_callback
|
||||
function="Pref.VertexShaderEnable" />
|
||||
</check_box>
|
||||
|
||||
<check_box
|
||||
control_name="RenderLocalLights"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Local Lights"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="LocalLights"
|
||||
top_delta="16"
|
||||
width="300" />
|
||||
|
||||
<check_box
|
||||
control_name="VertexShaderEnable"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Basic shaders"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="BasicShaders"
|
||||
tool_tip="Disabling this option may prevent some graphics card drivers from crashing"
|
||||
top_delta="16"
|
||||
width="300">
|
||||
<check_box.commit_callback
|
||||
function="Pref.VertexShaderEnable" />
|
||||
</check_box>
|
||||
|
||||
<slider
|
||||
control_name="RenderTerrainDetail"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Terrain Detail:"
|
||||
label_width="165"
|
||||
layout="topleft"
|
||||
left="50"
|
||||
show_text="false"
|
||||
initial_value="0"
|
||||
increment="1"
|
||||
min_val="0"
|
||||
max_val="1"
|
||||
name="TerrainDetail"
|
||||
top_delta="16"
|
||||
width="280" >
|
||||
<slider.commit_callback
|
||||
function="Pref.UpdateSliderText"
|
||||
parameter="TerrainDetail" />
|
||||
</slider>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
top_delta="0"
|
||||
left_delta="284"
|
||||
name="TerrainDetailText"
|
||||
text_readonly_color="LabelDisabledColor"
|
||||
width="128">
|
||||
Low
|
||||
</text>
|
||||
|
||||
<check_box
|
||||
control_name="RenderAvatarVP"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Avatar Hardware skinning"
|
||||
layout="topleft"
|
||||
left="50"
|
||||
name="AvatarVertexProgram"
|
||||
top_delta="16"
|
||||
width="280">
|
||||
<check_box.commit_callback
|
||||
function="Pref.VertexShaderEnable" />
|
||||
</check_box>
|
||||
|
||||
<check_box
|
||||
control_name="RenderAvatarCloth"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Avatar cloth"
|
||||
layout="topleft"
|
||||
left="50"
|
||||
name="AvatarCloth"
|
||||
top_delta="16"
|
||||
width="280" />
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="ReflectionsText"
|
||||
text_readonly_color="LabelDisabledColor"
|
||||
top_delta="16"
|
||||
left="50"
|
||||
width="128">
|
||||
Water Reflections:
|
||||
</text>
|
||||
<combo_box
|
||||
control_name="RenderReflectionDetail"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_delta="170"
|
||||
top_delta="0"
|
||||
name="Reflections"
|
||||
width="150">
|
||||
<combo_box.item
|
||||
label="Minimal"
|
||||
name="0"
|
||||
value="0"/>
|
||||
<combo_box.item
|
||||
label="Terrain and trees"
|
||||
name="1"
|
||||
value="1"/>
|
||||
<combo_box.item
|
||||
label="All static objects"
|
||||
name="2"
|
||||
value="2"/>
|
||||
<combo_box.item
|
||||
label="All avatars and objects"
|
||||
name="3"
|
||||
value="3"/>
|
||||
<combo_box.item
|
||||
label="Everything"
|
||||
name="4"
|
||||
value="4"/>
|
||||
</combo_box>
|
||||
|
||||
<check_box
|
||||
control_name="WindLightUseAtmosShaders"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Atmospheric shaders"
|
||||
layout="topleft"
|
||||
left="50"
|
||||
name="WindLightUseAtmosShaders"
|
||||
top_delta="16"
|
||||
width="280">
|
||||
<check_box.commit_callback
|
||||
function="Pref.VertexShaderEnable" />
|
||||
</check_box>
|
||||
|
||||
<slider
|
||||
control_name="WLSkyDetail"
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="8"
|
||||
initial_value="160"
|
||||
label="Sky:"
|
||||
label_width="145"
|
||||
layout="topleft"
|
||||
left="70"
|
||||
min_val="16"
|
||||
max_val="128"
|
||||
name="SkyMeshDetail"
|
||||
show_text="false"
|
||||
top_delta="16"
|
||||
width="260">
|
||||
<slider.commit_callback
|
||||
function="Pref.UpdateSliderText"
|
||||
parameter="SkyMeshDetailText" />
|
||||
</slider>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left_delta="264"
|
||||
name="SkyMeshDetailText"
|
||||
text_readonly_color="LabelDisabledColor"
|
||||
top_delta="0"
|
||||
width="128">
|
||||
Low
|
||||
</text>
|
||||
|
||||
<check_box
|
||||
control_name="RenderDeferred"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Advanced Lighting Model"
|
||||
layout="topleft"
|
||||
left="70"
|
||||
name="UseLightShaders"
|
||||
top_delta="16"
|
||||
width="260">
|
||||
<check_box.commit_callback
|
||||
function="Pref.VertexShaderEnable" />
|
||||
</check_box>
|
||||
|
||||
<check_box
|
||||
control_name="RenderDeferredSSAO"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Ambient Occlusion"
|
||||
layout="topleft"
|
||||
left="90"
|
||||
name="UseSSAO"
|
||||
top_delta="16"
|
||||
width="240">
|
||||
<check_box.commit_callback
|
||||
function="Pref.VertexShaderEnable" />
|
||||
</check_box>
|
||||
|
||||
<check_box
|
||||
control_name="RenderDepthOfField"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Depth of Field"
|
||||
layout="topleft"
|
||||
left="90"
|
||||
name="UseDoF"
|
||||
top_delta="16"
|
||||
width="240">
|
||||
<check_box.commit_callback
|
||||
function="Pref.VertexShaderEnable" />
|
||||
</check_box>
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="90"
|
||||
name="RenderShadowDetailText"
|
||||
text_readonly_color="LabelDisabledColor"
|
||||
top_delta="16"
|
||||
width="128">
|
||||
Shadows:
|
||||
</text>
|
||||
<combo_box
|
||||
control_name="RenderShadowDetail"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_delta="130"
|
||||
top_delta="0"
|
||||
name="ShadowDetail"
|
||||
width="150">
|
||||
<combo_box.item
|
||||
label="None"
|
||||
name="0"
|
||||
value="0"/>
|
||||
<combo_box.item
|
||||
label="Sun/Moon"
|
||||
name="1"
|
||||
value="1"/>
|
||||
<combo_box.item
|
||||
label="Sun/Moon + Projectors"
|
||||
name="2"
|
||||
value="2"/>
|
||||
</combo_box>
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="AvatarText"
|
||||
top_delta="20"
|
||||
left="5"
|
||||
width="128">
|
||||
Mesh
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="RenderTerrainLODFactor"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.125"
|
||||
initial_value="160"
|
||||
label="Terrain Mesh Detail:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
min_val="1"
|
||||
max_val="2"
|
||||
name="TerrainMeshDetail"
|
||||
show_text="false"
|
||||
top_delta="16"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
function="Pref.UpdateSliderText"
|
||||
parameter="TerrainMeshDetailText" />
|
||||
</slider>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="TerrainMeshDetailText"
|
||||
text_readonly_color="LabelDisabledColor"
|
||||
top_delta="0"
|
||||
left_delta="304"
|
||||
width="128">
|
||||
Low
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="RenderTreeLODFactor"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.125"
|
||||
initial_value="160"
|
||||
label="Trees:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="TreeMeshDetail"
|
||||
show_text="false"
|
||||
top_delta="16"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
function="Pref.UpdateSliderText"
|
||||
parameter="TreeMeshDetailText" />
|
||||
</slider>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="TreeMeshDetailText"
|
||||
top_delta="0"
|
||||
left_delta="304"
|
||||
width="128">
|
||||
Low
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="RenderVolumeLODFactor"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.125"
|
||||
initial_value="160"
|
||||
label="Objects:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
max_val="2"
|
||||
name="ObjectMeshDetail"
|
||||
show_text="false"
|
||||
top_delta="16"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
function="Pref.UpdateSliderText"
|
||||
parameter="ObjectMeshDetailText" />
|
||||
</slider>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="ObjectMeshDetailText"
|
||||
top_delta="0"
|
||||
left_delta="304"
|
||||
width="128">
|
||||
Low
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="RenderFlexTimeFactor"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
initial_value="160"
|
||||
label="Flexiprims:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="FlexibleMeshDetail"
|
||||
show_text="false"
|
||||
top_delta="16"
|
||||
width="300">
|
||||
<slider.commit_callback
|
||||
function="Pref.UpdateSliderText"
|
||||
parameter="FlexibleMeshDetailText" />
|
||||
</slider>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="FlexibleMeshDetailText"
|
||||
top_delta="0"
|
||||
left_delta="304"
|
||||
width="128">
|
||||
Low
|
||||
</text>
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
name="ShadersText"
|
||||
top_delta="20"
|
||||
left="5"
|
||||
width="128">
|
||||
Hardware
|
||||
</text>
|
||||
|
||||
<slider
|
||||
control_name="TextureMemory"
|
||||
decimal_digits="0"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="16"
|
||||
initial_value="32"
|
||||
label="Texture Memory (MB):"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
max_val="4096"
|
||||
name="GraphicsCardTextureMemory"
|
||||
tool_tip="Amount of memory to allocate for textures. Defaults to video card memory. Reducing this may improve performance but may also make textures blurry."
|
||||
top_delta="16"
|
||||
width="335" />
|
||||
|
||||
<slider
|
||||
control_name="RenderFogRatio"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
initial_value="4"
|
||||
decimal_digits="1"
|
||||
label="Fog Distance Ratio:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="fog"
|
||||
min_val="0.5"
|
||||
max_val="10"
|
||||
increment="0.1"
|
||||
top_delta="16"
|
||||
width="332" />
|
||||
|
||||
<slider
|
||||
control_name="RenderGamma"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
initial_value="1"
|
||||
decimal_digits="2"
|
||||
label="Gamma:"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="gamma"
|
||||
min_val="0"
|
||||
max_val="2"
|
||||
increment="0.01"
|
||||
top_delta="16"
|
||||
width="332" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="(brightness, lower is brighter)"
|
||||
top_delta="16"
|
||||
width="230">
|
||||
(0 = default brightness, lower = brighter)
|
||||
</text>
|
||||
|
||||
<check_box
|
||||
control_name="RenderAnisotropic"
|
||||
height="16"
|
||||
label="Anisotropic Filtering (slower when enabled)"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="ani"
|
||||
top_delta="16"
|
||||
width="256" />
|
||||
|
||||
<check_box
|
||||
control_name="RenderVBOEnable"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Enable OpenGL Vertex Buffer Objects"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
top_delta="16"
|
||||
name="vbo"
|
||||
tool_tip="Enabling this on modern hardware gives a performance gain. However, older hardware often has poor implementations of VBOs and you may get crashes when this is enabled."
|
||||
width="315" />
|
||||
|
||||
<check_box
|
||||
control_name="RenderCompressTextures"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Enable Texture Compression (requires restart)"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
top_delta="16"
|
||||
name="texture compression"
|
||||
tool_tip="Compresses textures in video memory, allowing for higher resolution textures to be loaded at the cost of some color quality."
|
||||
width="315" />
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="antialiasing label"
|
||||
top_delta="20"
|
||||
width="100">
|
||||
Antialiasing:
|
||||
</text>
|
||||
<combo_box
|
||||
control_name="RenderFSAASamples"
|
||||
height="20"
|
||||
initial_value="false"
|
||||
label="Antialiasing"
|
||||
layout="topleft"
|
||||
left_pad="40"
|
||||
name="fsaa"
|
||||
top_delta="0"
|
||||
width="90">
|
||||
<combo_box.item
|
||||
label="Disabled"
|
||||
name="FSAADisabled"
|
||||
value="0" />
|
||||
<combo_box.item
|
||||
label="2x"
|
||||
name="2x"
|
||||
value="2" />
|
||||
<combo_box.item
|
||||
label="4x"
|
||||
name="4x"
|
||||
value="4" />
|
||||
<combo_box.item
|
||||
label="8x"
|
||||
name="8x"
|
||||
value="8" />
|
||||
<combo_box.item
|
||||
label="16x"
|
||||
name="16x"
|
||||
value="16" />
|
||||
</combo_box>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="antialiasing restart"
|
||||
top_delta="0"
|
||||
width="190">
|
||||
(requires viewer restart)
|
||||
</text>
|
||||
<!-- End of Advanced Settings block -->
|
||||
|
||||
</floater>
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue