mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-02 02:51:00 +00:00
Adds sanity check to editing of gameasset script action in asset browser Updates module template file Updates visualizers Fixes checking of popup menu items Adds stub for TerrainMaterialAsset
1104 lines
32 KiB
C#
1104 lines
32 KiB
C#
// =============================================================================
|
|
// GRAPHICS MENU
|
|
// =============================================================================
|
|
function GraphicsMenu::refresh(%this)
|
|
{
|
|
//
|
|
// Display Menu
|
|
GraphicsMenuFullScreen.setStateOn( Canvas.isFullScreen() );
|
|
GraphicsMenuVSync.setStateOn( !$pref::Video::disableVerticalSync );
|
|
|
|
%this.initResMenu();
|
|
%resSelId = GraphicsMenuResolution.findText( _makePrettyResString( $pref::Video::mode ) );
|
|
if( %resSelId != -1 )
|
|
GraphicsMenuResolution.setSelected( %resSelId );
|
|
|
|
GraphicsMenuDriver.clear();
|
|
|
|
%buffer = getDisplayDeviceList();
|
|
%count = getFieldCount( %buffer );
|
|
for(%i = 0; %i < %count; %i++)
|
|
GraphicsMenuDriver.add(getField(%buffer, %i), %i);
|
|
|
|
%selId = GraphicsMenuDriver.findText( getDisplayDeviceInformation() );
|
|
if ( %selId == -1 )
|
|
GraphicsMenuDriver.setFirstSelected();
|
|
else
|
|
GraphicsMenuDriver.setSelected( %selId );
|
|
//
|
|
|
|
//
|
|
// General Graphics menu
|
|
GraphicsMenuShadowQlty.init(ShadowQualityList);
|
|
GraphicsMenuSoftShadow.init(SoftShadowList);
|
|
|
|
GraphicsMenuModelDtl.init(MeshQualityGroup);
|
|
GraphicsMenuTextureDtl.init(TextureQualityGroup);
|
|
GraphicsMenuTerrainDtl.init(TerrainQualityGroup);
|
|
GraphicsMenuDecalLife.init(DecalLifetimeGroup);
|
|
GraphicsMenuGroundClutter.init(GroundCoverDensityGroup);
|
|
|
|
GraphicsMenuMaterialQlty.init(ShaderQualityGroup);
|
|
|
|
// Setup the anisotropic filtering menu.
|
|
%ansioCtrl = GraphicsMenuAniso;
|
|
%ansioCtrl.clear();
|
|
%ansioCtrl.add( "16X", 16 );
|
|
%ansioCtrl.add( "8X", 8 );
|
|
%ansioCtrl.add( "4X", 4 );
|
|
%ansioCtrl.add( "Off", 0 );
|
|
%ansioCtrl.setSelected( $pref::Video::defaultAnisotropy, false );
|
|
|
|
// set up the Refresh Rate menu.
|
|
%refreshMenu = GraphicsMenuRefreshRate;
|
|
%refreshMenu.clear();
|
|
// %refreshMenu.add("Auto", 60);
|
|
%refreshMenu.add("60", 60);
|
|
%refreshMenu.add("75", 75);
|
|
%refreshMenu.setSelected( $pref::Video::RefreshRate );
|
|
|
|
// Populate the Anti-aliasing popup.
|
|
%aaMenu = GraphicsMenuAA;
|
|
%aaMenu.clear();
|
|
%aaMenu.Add( "4x", 4 );
|
|
%aaMenu.Add( "2x", 2 );
|
|
%aaMenu.Add( "1x", 1 );
|
|
%aaMenu.Add( "Off", 0 );
|
|
%aaMenu.setSelected( $pref::Video::AA );
|
|
|
|
//Parallax
|
|
GraphicsMenuParallax.setStateOn(!$pref::Video::disableParallaxMapping);
|
|
|
|
//water reflections
|
|
GraphicsMenuWaterRefl.setStateOn(!$pref::Water::disableTrueReflections);
|
|
|
|
GraphicsMenuParallax.setStateOn(!$pref::Video::disableParallaxMapping);
|
|
|
|
GraphicsMenuAO.setStateOn($pref::PostFX::EnableSSAO);
|
|
GraphicsMenuHDR.setStateOn($pref::PostFX::EnableHDR);
|
|
GraphicsMenuDOF.setStateOn($pref::PostFX::EnableDOF);
|
|
GraphicsMenuVignette.setStateOn($pref::PostFX::EnableVignette);
|
|
GraphicsMenuLightRay.setStateOn($pref::PostFX::EnableLightRays);
|
|
}
|
|
|
|
function GraphicsMenu::initResMenu( %this )
|
|
{
|
|
// Clear out previous values
|
|
%resMenu = GraphicsMenuResolution;
|
|
%resMenu.clear();
|
|
|
|
// If we are in a browser then we can't change our resolution through
|
|
// the options dialog
|
|
if (getWebDeployment())
|
|
{
|
|
%count = 0;
|
|
%currRes = getWords(Canvas.getVideoMode(), $WORD::RES_X, $WORD::RES_Y);
|
|
%resMenu.add(%currRes, %count);
|
|
%count++;
|
|
|
|
return;
|
|
}
|
|
|
|
// Loop through all and add all valid resolutions
|
|
%count = 0;
|
|
%resCount = Canvas.getModeCount();
|
|
for (%i = 0; %i < %resCount; %i++)
|
|
{
|
|
%testResString = Canvas.getMode( %i );
|
|
%testRes = _makePrettyResString( %testResString );
|
|
|
|
// Only add to list if it isn't there already.
|
|
if (%resMenu.findText(%testRes) == -1)
|
|
{
|
|
%resMenu.add(%testRes, %i);
|
|
%count++;
|
|
}
|
|
}
|
|
|
|
%resMenu.sort();
|
|
}
|
|
|
|
//
|
|
function GraphicsMenu::Autodetect(%this)
|
|
{
|
|
$pref::Video::autoDetect = false;
|
|
|
|
%shaderVer = getPixelShaderVersion();
|
|
%intel = ( strstr( strupr( getDisplayDeviceInformation() ), "INTEL" ) != -1 ) ? true : false;
|
|
%videoMem = GFXCardProfilerAPI::getVideoMemoryMB();
|
|
|
|
return %this.Autodetect_Apply( %shaderVer, %intel, %videoMem );
|
|
}
|
|
|
|
function GraphicsMenu::Autodetect_Apply(%this, %shaderVer, %intel, %videoMem )
|
|
{
|
|
if ( %shaderVer < 2.0 )
|
|
{
|
|
return "Your video card does not meet the minimum requirment of shader model 2.0.";
|
|
}
|
|
|
|
if ( %shaderVer < 3.0 || %intel )
|
|
{
|
|
// Allow specular and normals for 2.0a and 2.0b
|
|
if ( %shaderVer > 2.0 )
|
|
{
|
|
MeshQualityGroup.applySetting("Lowest");
|
|
TextureQualityGroup.applySetting("Lowest");
|
|
GroundCoverDensityGroup.applySetting("Lowest");
|
|
DecalLifetimeGroup.applySetting("None");
|
|
TerrainQualityGroup.applySetting("Lowest");
|
|
ShaderQualityGroup.applySetting("High");
|
|
|
|
ShadowQualityList.applySetting("None");
|
|
|
|
SoftShadowList.applySetting("Off");
|
|
|
|
$pref::Shadows::useShadowCaching = true;
|
|
|
|
$pref::Water::disableTrueReflections = true;
|
|
$pref::Video::disableParallaxMapping = true;
|
|
$pref::PostFX::EnableSSAO = false;
|
|
$pref::PostFX::EnableHDR = false;
|
|
$pref::PostFX::EnableDOF = false;
|
|
$pref::PostFX::EnableLightRays = false;
|
|
$pref::PostFX::EnableVignette = false;
|
|
|
|
$pref::Video::AA = 0;
|
|
$pref::Video::disableVerticalSync = 0;
|
|
}
|
|
else
|
|
{
|
|
MeshQualityGroup.applySetting("Lowest");
|
|
TextureQualityGroup.applySetting("Lowest");
|
|
GroundCoverDensityGroup.applySetting("Lowest");
|
|
DecalLifetimeGroup.applySetting("None");
|
|
TerrainQualityGroup.applySetting("Lowest");
|
|
ShaderQualityGroup.applySetting("Low");
|
|
|
|
ShadowQualityList.applySetting("None");
|
|
|
|
SoftShadowList.applySetting("Off");
|
|
|
|
$pref::Shadows::useShadowCaching = true;
|
|
|
|
$pref::Water::disableTrueReflections = true;
|
|
$pref::Video::disableParallaxMapping = true;
|
|
$pref::PostFX::EnableSSAO = false;
|
|
$pref::PostFX::EnableHDR = false;
|
|
$pref::PostFX::EnableDOF = false;
|
|
$pref::PostFX::EnableLightRays = false;
|
|
$pref::PostFX::EnableVignette = false;
|
|
|
|
$pref::Video::AA = 0;
|
|
$pref::Video::disableVerticalSync = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( %videoMem > 1000 )
|
|
{
|
|
MeshQualityGroup.applySetting("High");
|
|
TextureQualityGroup.applySetting("High");
|
|
GroundCoverDensityGroup.applySetting("High");
|
|
DecalLifetimeGroup.applySetting("High");
|
|
TerrainQualityGroup.applySetting("High");
|
|
ShaderQualityGroup.applySetting("High");
|
|
|
|
ShadowQualityList.applySetting("High");
|
|
|
|
SoftShadowList.applySetting("High");
|
|
|
|
//Should this default to on in ultra settings?
|
|
$pref::Shadows::useShadowCaching = true;
|
|
|
|
$pref::Water::disableTrueReflections = false;
|
|
$pref::Video::disableParallaxMapping = false;
|
|
$pref::PostFX::EnableSSAO = true;
|
|
$pref::PostFX::EnableHDR = true;
|
|
$pref::PostFX::EnableDOF = true;
|
|
$pref::PostFX::EnableLightRays = true;
|
|
$pref::PostFX::EnableVignette = true;
|
|
|
|
$pref::Video::AA = 4;
|
|
$pref::Video::disableVerticalSync = 16;
|
|
}
|
|
else if ( %videoMem > 400 || %videoMem == 0 )
|
|
{
|
|
MeshQualityGroup.applySetting("Medium");
|
|
TextureQualityGroup.applySetting("Medium");
|
|
GroundCoverDensityGroup.applySetting("Medium");
|
|
DecalLifetimeGroup.applySetting("Medium");
|
|
TerrainQualityGroup.applySetting("Medium");
|
|
ShaderQualityGroup.applySetting("High");
|
|
|
|
ShadowQualityList.applySetting("Medium");
|
|
|
|
SoftShadowList.applySetting("Low");
|
|
|
|
$pref::Shadows::useShadowCaching = true;
|
|
|
|
$pref::Water::disableTrueReflections = false;
|
|
$pref::Video::disableParallaxMapping = true;
|
|
$pref::PostFX::EnableSSAO = false;
|
|
$pref::PostFX::EnableHDR = true;
|
|
$pref::PostFX::EnableDOF = true;
|
|
$pref::PostFX::EnableLightRays = true;
|
|
$pref::PostFX::EnableVignette = true;
|
|
|
|
$pref::Video::AA = 4;
|
|
$pref::Video::disableVerticalSync = 4;
|
|
|
|
if ( %videoMem == 0 )
|
|
return "Torque was unable to detect available video memory. Applying 'Medium' quality.";
|
|
}
|
|
else
|
|
{
|
|
MeshQualityGroup.applySetting("Low");
|
|
TextureQualityGroup.applySetting("Low");
|
|
GroundCoverDensityGroup.applySetting("Low");
|
|
DecalLifetimeGroup.applySetting("Low");
|
|
TerrainQualityGroup.applySetting("Low");
|
|
ShaderQualityGroup.applySetting("Low");
|
|
|
|
ShadowQualityList.applySetting("None");
|
|
|
|
SoftShadowList.applySetting("Off");
|
|
|
|
$pref::Shadows::useShadowCaching = true;
|
|
|
|
$pref::Water::disableTrueReflections = false;
|
|
$pref::Video::disableParallaxMapping = true;
|
|
$pref::PostFX::EnableSSAO = false;
|
|
$pref::PostFX::EnableHDR = false;
|
|
$pref::PostFX::EnableDOF = false;
|
|
$pref::PostFX::EnableLightRays = false;
|
|
$pref::PostFX::EnableVignette = false;
|
|
|
|
$pref::Video::AA = 0;
|
|
$pref::Video::disableVerticalSync = 0;
|
|
}
|
|
}
|
|
|
|
%this.refresh();
|
|
|
|
%this.apply();
|
|
|
|
//force postFX updates
|
|
PostFXManager.settingsEffectSetEnabled("SSAO", $pref::PostFX::EnableSSAO);
|
|
PostFXManager.settingsEffectSetEnabled("HDR", $pref::PostFX::EnableHDR);
|
|
PostFXManager.settingsEffectSetEnabled("DOF", $pref::PostFX::EnableDOF);
|
|
PostFXManager.settingsEffectSetEnabled("LightRays", $pref::PostFX::EnableLightRays);
|
|
PostFXManager.settingsEffectSetEnabled("Vignette", $pref::PostFX::EnableVignette);
|
|
|
|
return "Graphics quality settings have been auto detected.";
|
|
}
|
|
|
|
function _makePrettyResString( %resString )
|
|
{
|
|
%width = getWord( %resString, $WORD::RES_X );
|
|
%height = getWord( %resString, $WORD::RES_Y );
|
|
|
|
%aspect = %width / %height;
|
|
%aspect = mRound( %aspect * 100 ) * 0.01;
|
|
|
|
switch$( %aspect )
|
|
{
|
|
case "1.33":
|
|
%aspect = "4:3";
|
|
case "1.78":
|
|
%aspect = "16:9";
|
|
default:
|
|
%aspect = "";
|
|
}
|
|
|
|
%outRes = %width @ " x " @ %height;
|
|
if ( %aspect !$= "" )
|
|
%outRes = %outRes @ " (" @ %aspect @ ")";
|
|
|
|
return %outRes;
|
|
}
|
|
|
|
function GraphicsMenu::apply(%this)
|
|
{
|
|
%newAdapter = GraphicsMenuDriver.getText();
|
|
%numAdapters = GFXInit::getAdapterCount();
|
|
%newDevice = $pref::Video::displayDevice;
|
|
|
|
for( %i = 0; %i < %numAdapters; %i ++ )
|
|
{
|
|
if( GFXInit::getAdapterName( %i ) $= %newAdapter )
|
|
{
|
|
%newDevice = GFXInit::getAdapterType( %i );
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Change the device.
|
|
if ( %newDevice !$= $pref::Video::displayDevice )
|
|
{
|
|
if ( %testNeedApply )
|
|
return true;
|
|
|
|
$pref::Video::displayDevice = %newDevice;
|
|
if( %newAdapter !$= getDisplayDeviceInformation() )
|
|
MessageBoxOK( "Change requires restart", "Please restart the game for a display device change to take effect." );
|
|
}
|
|
|
|
//Loop through the settings cache and actually apply the values
|
|
%cachedSettingCount = GraphicsSettingsCache.count();
|
|
|
|
for(%i=0; %i < %cachedSettingCount; %i++)
|
|
{
|
|
%var = GraphicsSettingsCache.getKey(%i);
|
|
%val = GraphicsSettingsCache.getValue(%i);
|
|
|
|
setVariable(%var, %val);
|
|
}
|
|
|
|
//Update Textures
|
|
reloadTextures();
|
|
|
|
//Update lighting
|
|
// Set the light manager. This should do nothing
|
|
// if its already set or if its not compatible.
|
|
//setLightManager( $pref::lightManager );
|
|
|
|
PostFXManager.settingsEffectSetEnabled("SSAO", $pref::PostFX::EnableSSAO);
|
|
PostFXManager.settingsEffectSetEnabled("HDR", $pref::PostFX::EnableHDR);
|
|
PostFXManager.settingsEffectSetEnabled("DOF", $pref::PostFX::EnableDOF);
|
|
PostFXManager.settingsEffectSetEnabled("LightRays", $pref::PostFX::EnableLightRays);
|
|
PostFXManager.settingsEffectSetEnabled("Vignette", $pref::PostFX::EnableVignette);
|
|
|
|
//Update the display settings now
|
|
$pref::Video::Resolution = getWords( Canvas.getMode( GraphicsMenuResolution.getSelected() ), $WORD::RES_X, $WORD::RES_Y );
|
|
%newBpp = 32; // ... its not 1997 anymore.
|
|
$pref::Video::FullScreen = GraphicsMenuFullScreen.isStateOn() ? "true" : "false";
|
|
$pref::Video::RefreshRate = GraphicsMenuRefreshRate.getSelected();
|
|
$pref::Video::disableVerticalSync = !GraphicsMenuVSync.isStateOn();
|
|
|
|
if ( %newFullScreen $= "false" )
|
|
{
|
|
// If we're in windowed mode switch the fullscreen check
|
|
// if the resolution is bigger than the desktop.
|
|
%deskRes = getDesktopResolution();
|
|
%deskResX = getWord(%deskRes, $WORD::RES_X);
|
|
%deskResY = getWord(%deskRes, $WORD::RES_Y);
|
|
if ( getWord( %newRes, $WORD::RES_X ) > %deskResX ||
|
|
getWord( %newRes, $WORD::RES_Y ) > %deskResY )
|
|
{
|
|
$pref::Video::FullScreen = "true";
|
|
GraphicsMenuFullScreen.setStateOn( true );
|
|
}
|
|
}
|
|
|
|
// Build the final mode string.
|
|
%newMode = $pref::Video::Resolution SPC $pref::Video::FullScreen SPC %newBpp SPC $pref::Video::RefreshRate SPC $pref::Video::AA;
|
|
|
|
// Change the video mode.
|
|
if ( %newMode !$= $pref::Video::mode ||
|
|
%newVsync != $pref::Video::disableVerticalSync )
|
|
{
|
|
if ( %testNeedApply )
|
|
return true;
|
|
|
|
$pref::Video::mode = %newMode;
|
|
$pref::Video::disableVerticalSync = %newVsync;
|
|
configureCanvas();
|
|
}
|
|
|
|
echo("Exporting client prefs");
|
|
%prefPath = getPrefpath();
|
|
export("$pref::*", %prefPath @ "/clientPrefs.cs", false);
|
|
}
|
|
|
|
function GraphicsMenu::loadSettings()
|
|
{
|
|
OptionsMenu.currentMenu = "GraphicsMenu";
|
|
OptionsSettingStack.clear();
|
|
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Shadow Quality", "", "ShadowQuality");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Shadow Caching", "", "ShadowCaching");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Soft Shadows", "", "SoftShadow");
|
|
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Model Detail", "", "MeshQuality");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Texture Detail", "", "TextureQuality");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Terrain Detail", "", "TerrainQuality");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Decal Lifetime", "", "DecalLifetime");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Ground Clutter Density", "", "GroundCoverDensity");
|
|
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Material Quality", "", "ShaderQuality");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Parallax", "", "ParallaxSetting");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Ambient Occlusion", "", "AmbientOcclusionSetting");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Light Rays", "", "LightRaysSetting");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Depth of Field", "", "DOFSetting");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Vignetting", "", "VignetteSetting");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Water Reflections", "", "WaterReflectionSetting");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Anti Aliasing", "", "AASetting");
|
|
OptionsMenu.addSettingOption(OptionsSettingStack, "Anisotropic Filtering", "", "AnisotropicFilteringSetting");
|
|
|
|
if(!isObject(GraphicsSettingsCache))
|
|
{
|
|
new ArrayObject(GraphicsSettingsCache){};
|
|
}
|
|
|
|
GraphicsSettingsCache.empty();
|
|
}
|
|
|
|
function GraphicsMenu::set(%var, %val)
|
|
{
|
|
%ex = GraphicsSettingsCache.getIndexFromKey(%var);
|
|
if(%ex != -1)
|
|
GraphicsSettingsCache.erase(%ex);
|
|
|
|
GraphicsSettingsCache.add(%var, %val);
|
|
}
|
|
|
|
//
|
|
//
|
|
//
|
|
function MeshQuality::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "High":
|
|
GraphicsMenu::set("$pref::TS::detailAdjust", "1.5");
|
|
GraphicsMenu::set("$pref::TS::skipRenderDLs", "0");
|
|
case "Medium":
|
|
GraphicsMenu::set("$pref::TS::detailAdjust", "1.0");
|
|
GraphicsMenu::set("$pref::TS::skipRenderDLs", "0");
|
|
case "Low":
|
|
GraphicsMenu::set("$pref::TS::detailAdjust", "0.75");
|
|
GraphicsMenu::set("$pref::TS::skipRenderDLs", "0");
|
|
case "Lowest":
|
|
GraphicsMenu::set("$pref::TS::detailAdjust", "0.5");
|
|
GraphicsMenu::set("$pref::TS::skipRenderDLs", "0");
|
|
default:
|
|
GraphicsMenu::set("$pref::TS::detailAdjust", "1.0");
|
|
GraphicsMenu::set("$pref::TS::skipRenderDLs", "0");
|
|
}
|
|
}
|
|
|
|
function MeshQuality::get()
|
|
{
|
|
if($pref::TS::detailAdjust == 1.5)
|
|
return "High";
|
|
else if($pref::TS::detailAdjust == 1.0)
|
|
return "Medium";
|
|
else if($pref::TS::detailAdjust == 0.75)
|
|
return "Low";
|
|
else if($pref::TS::detailAdjust == 0.5)
|
|
return "Lowest";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function MeshQuality::getList()
|
|
{
|
|
return "Lowest,Low,Medium,High";
|
|
}
|
|
|
|
//
|
|
function TextureQuality::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "High":
|
|
GraphicsMenu::set("$pref::Video::textureReductionLevel", "0");
|
|
GraphicsMenu::set("$pref::Reflect::refractTexScale", "1.25");
|
|
case "Medium":
|
|
GraphicsMenu::set("$pref::Video::textureReductionLevel", "0");
|
|
GraphicsMenu::set("$pref::Reflect::refractTexScale", "1");
|
|
case "Low":
|
|
GraphicsMenu::set("$pref::Video::textureReductionLevel", "1");
|
|
GraphicsMenu::set("$pref::Reflect::refractTexScale", "0.75");
|
|
case "Lowest":
|
|
GraphicsMenu::set("$pref::Video::textureReductionLevel", "2");
|
|
GraphicsMenu::set("$pref::Reflect::refractTexScale", "0.5");
|
|
default:
|
|
GraphicsMenu::set("$pref::Video::textureReductionLevel", "0");
|
|
GraphicsMenu::set("$pref::Reflect::refractTexScale", "1");
|
|
}
|
|
}
|
|
|
|
function TextureQuality::get()
|
|
{
|
|
if($pref::Video::textureReductionLevel == 0 && $pref::Reflect::refractTexScale == 1.25)
|
|
return "High";
|
|
else if($pref::Video::textureReductionLevel == 0 && $pref::Reflect::refractTexScale == 1)
|
|
return "Medium";
|
|
else if($pref::Video::textureReductionLevel == 1 && $pref::Reflect::refractTexScale == 0.75)
|
|
return "Low";
|
|
else if($pref::Video::textureReductionLevel == 2 && $pref::Reflect::refractTexScale == 0.5)
|
|
return "Lowest";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function TextureQuality::getList()
|
|
{
|
|
return "Lowest,Low,Medium,High";
|
|
}
|
|
|
|
//
|
|
function GroundCoverDensity::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "High":
|
|
GraphicsMenu::set("$pref::GroundCover::densityScale", "1");
|
|
case "Medium":
|
|
GraphicsMenu::set("$pref::GroundCover::densityScale", "0.75");
|
|
case "Low":
|
|
GraphicsMenu::set("$pref::GroundCover::densityScale", "0.5");
|
|
case "Lowest":
|
|
GraphicsMenu::set("$pref::GroundCover::densityScale", "0.25");
|
|
default:
|
|
GraphicsMenu::set("$pref::GroundCover::densityScale", "0.75");
|
|
}
|
|
}
|
|
|
|
function GroundCoverDensity::get()
|
|
{
|
|
if($pref::GroundCover::densityScale == 1)
|
|
return "High";
|
|
else if($pref::GroundCover::densityScale == 0.75)
|
|
return "Medium";
|
|
else if($pref::GroundCover::densityScale == 0.5)
|
|
return "Low";
|
|
else if($pref::GroundCover::densityScale == 0.25)
|
|
return "Lowest";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function GroundCoverDensity::getList()
|
|
{
|
|
return "Lowest,Low,Medium,High";
|
|
}
|
|
|
|
//
|
|
function DecalLifetime::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "High":
|
|
GraphicsMenu::set("$pref::decalMgr::enabled", "true");
|
|
GraphicsMenu::set("$pref::Decals::lifeTimeScale", "1");
|
|
case "Medium":
|
|
GraphicsMenu::set("$pref::decalMgr::enabled", "true");
|
|
GraphicsMenu::set("$pref::Decals::lifeTimeScale", "0.5");
|
|
case "Low":
|
|
GraphicsMenu::set("$pref::decalMgr::enabled", "true");
|
|
GraphicsMenu::set("$pref::Decals::lifeTimeScale", "0.25");
|
|
case "None":
|
|
GraphicsMenu::set("$pref::decalMgr::enabled", "false");
|
|
default:
|
|
GraphicsMenu::set("$pref::decalMgr::enabled", "true");
|
|
GraphicsMenu::set("$pref::Decals::lifeTimeScale", "0.5");
|
|
}
|
|
}
|
|
|
|
function DecalLifetime::get()
|
|
{
|
|
if($pref::decalMgr::enabled == true && $pref::Decals::lifeTimeScale == 1)
|
|
return "High";
|
|
else if($pref::decalMgr::enabled == true && $pref::Decals::lifeTimeScale == 0.5)
|
|
return "Medium";
|
|
else if($pref::decalMgr::enabled == true && $pref::Decals::lifeTimeScale == 0.25)
|
|
return "Low";
|
|
else if($pref::decalMgr::enabled == true )
|
|
return "None";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function DecalLifetime::getList()
|
|
{
|
|
return "None,Low,Medium,High";
|
|
}
|
|
|
|
//
|
|
function TerrainQuality::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "High":
|
|
GraphicsMenu::set("$pref::Terrain::lodScale", "0.75");
|
|
GraphicsMenu::set("$pref::Terrain::detailScale", "1.5");
|
|
case "Medium":
|
|
GraphicsMenu::set("$pref::Terrain::lodScale", "1");
|
|
GraphicsMenu::set("$pref::Terrain::detailScale", "1");
|
|
case "Low":
|
|
GraphicsMenu::set("$pref::Terrain::lodScale", "1.5");
|
|
GraphicsMenu::set("$pref::Terrain::detailScale", "0.75");
|
|
case "Lowest":
|
|
GraphicsMenu::set("$pref::Terrain::lodScale", "2");
|
|
GraphicsMenu::set("$pref::Terrain::detailScale", "0.5");
|
|
default:
|
|
GraphicsMenu::set("$pref::decalMgr::enabled", "1");
|
|
GraphicsMenu::set("$pref::Decals::lifeTimeScale", "1");
|
|
}
|
|
}
|
|
|
|
function TerrainQuality::get()
|
|
{
|
|
if($pref::Terrain::lodScale == 0.75 && $pref::Terrain::detailScale == 1.5)
|
|
return "High";
|
|
else if($pref::Terrain::lodScale == 1 && $pref::Terrain::detailScale == 1)
|
|
return "Medium";
|
|
else if($pref::Terrain::lodScale == 1.5 && $pref::Terrain::detailScale == 0.75)
|
|
return "Low";
|
|
else if($pref::Terrain::lodScale == 2 && $pref::Terrain::detailScale == 0.5)
|
|
return "Lowest";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function TerrainQuality::getList()
|
|
{
|
|
return "Lowest,Low,Medium,High";
|
|
}
|
|
|
|
//
|
|
function ShadowQuality::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "High":
|
|
GraphicsMenu::set("$pref::Shadows::disable", "false");
|
|
GraphicsMenu::set("$pref::Shadows::textureScalar", "1.0");
|
|
case "Medium":
|
|
GraphicsMenu::set("$pref::Shadows::disable", "false");
|
|
GraphicsMenu::set("$pref::Shadows::textureScalar", "0.5");
|
|
case "Low":
|
|
GraphicsMenu::set("$pref::Shadows::disable", "false");
|
|
GraphicsMenu::set("$pref::Shadows::textureScalar", "0.25");
|
|
case "None":
|
|
GraphicsMenu::set("$pref::Shadows::disable", "true");
|
|
GraphicsMenu::set("$pref::Shadows::textureScalar", "0.5");
|
|
default:
|
|
GraphicsMenu::set("$pref::Shadows::disable", "false");
|
|
GraphicsMenu::set("$pref::Shadows::textureScalar", "0.5");
|
|
}
|
|
}
|
|
|
|
function ShadowQuality::get()
|
|
{
|
|
if($pref::Shadows::disable == false && $pref::Shadows::textureScalar == 1.0)
|
|
return "High";
|
|
else if($pref::Shadows::disable == false && $pref::Shadows::textureScalar == 0.5)
|
|
return "Medium";
|
|
else if($pref::Shadows::disable == false && $pref::Shadows::textureScalar == 0.25)
|
|
return "Low";
|
|
else if($pref::Shadows::disable == true)
|
|
return "None";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function ShadowQuality::getList()
|
|
{
|
|
return "None,Low,Medium,High";
|
|
}
|
|
|
|
//
|
|
function ShadowDistance::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "Highest":
|
|
GraphicsMenu::set("$pref::Shadows::drawDistance", "1.0");
|
|
case "High":
|
|
GraphicsMenu::set("$pref::Shadows::drawDistance", "0.75");
|
|
case "Medium":
|
|
GraphicsMenu::set("$pref::Shadows::drawDistance", "0.5");
|
|
case "Low":
|
|
GraphicsMenu::set("$pref::Shadows::drawDistance", "0.25");
|
|
default:
|
|
GraphicsMenu::set("$pref::Shadows::drawDistance", "0.5");
|
|
}
|
|
}
|
|
|
|
function ShadowDistance::get()
|
|
{
|
|
if($pref::Shadows::drawDistance == 1.0)
|
|
return "Highest";
|
|
else if($pref::Shadows::drawDistance == 0.75)
|
|
return "High";
|
|
else if($pref::Shadows::drawDistance == 0.5)
|
|
return "Medium";
|
|
else if($pref::Shadows::drawDistance == 0.25)
|
|
return "Low";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function ShadowDistance::getList()
|
|
{
|
|
return "Low,Medium,High,Highest";
|
|
}
|
|
|
|
//
|
|
function SoftShadow::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "High":
|
|
GraphicsMenu::set("$pref::Shadows::filterMode", "SoftShadowHighQuality");
|
|
case "Low":
|
|
GraphicsMenu::set("$pref::Shadows::filterMode", "SoftShadow");
|
|
case "Off":
|
|
GraphicsMenu::set("$pref::Shadows::filterMode", "None");
|
|
default:
|
|
GraphicsMenu::set("$pref::Shadows::filterMode", "SoftShadow");
|
|
}
|
|
}
|
|
|
|
function SoftShadow::get()
|
|
{
|
|
if($pref::Shadows::filterMode $= "SoftShadowHighQuality")
|
|
return "High";
|
|
else if($pref::Shadows::filterMode $= "SoftShadow")
|
|
return "Low";
|
|
else if($pref::Shadows::filterMode $= "None")
|
|
return "Off";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function SoftShadow::getList()
|
|
{
|
|
return "Off,Low,High";
|
|
}
|
|
|
|
//
|
|
function LightDistance::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "High":
|
|
GraphicsMenu::set("$pref::Lights::drawDistance", "1");
|
|
case "Medium":
|
|
GraphicsMenu::set("$pref::Lights::drawDistance", "0.75");
|
|
case "Low":
|
|
GraphicsMenu::set("$pref::Lights::drawDistance", "0.5");
|
|
case "Lowest":
|
|
GraphicsMenu::set("$pref::Lights::drawDistance", "0.25");
|
|
default:
|
|
GraphicsMenu::set("$pref::Lights::drawDistance", "0.75");
|
|
}
|
|
}
|
|
|
|
function LightDistance::get()
|
|
{
|
|
if($pref::Lights::drawDistance == 1)
|
|
return "High";
|
|
else if($pref::Lights::drawDistance == 0.75)
|
|
return "Medium";
|
|
else if($pref::Lights::drawDistance == 0.5)
|
|
return "Low";
|
|
else if($pref::Lights::drawDistance == 0.25)
|
|
return "Lowest";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function LightDistance::getList()
|
|
{
|
|
return "Lowest,Low,Medium,High";
|
|
}
|
|
|
|
//
|
|
function ShaderQuality::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "High":
|
|
GraphicsMenu::set("$pref::Video::disablePixSpecular", "false");
|
|
GraphicsMenu::set("$pref::Video::disableNormalmapping", "false");
|
|
case "Low":
|
|
GraphicsMenu::set("$pref::Video::disablePixSpecular", "true");
|
|
GraphicsMenu::set("$pref::Video::disableNormalmapping", "true");
|
|
default:
|
|
GraphicsMenu::set("$pref::Video::disablePixSpecular", "false");
|
|
GraphicsMenu::set("$pref::Video::disableNormalmapping", "false");
|
|
}
|
|
}
|
|
|
|
function ShaderQuality::get()
|
|
{
|
|
if($pref::Video::disablePixSpecular == false || $pref::Video::disableNormalmapping == false)
|
|
return "High";
|
|
else if($pref::Video::disablePixSpecular == true || $pref::Video::disableNormalmapping == true)
|
|
return "Low";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function ShaderQuality::getList()
|
|
{
|
|
return "Low,High";
|
|
}
|
|
|
|
//
|
|
function ShadowCaching::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "On":
|
|
GraphicsMenu::set("$pref::Shadows::useShadowCaching", "true");
|
|
case "Off":
|
|
GraphicsMenu::set("$pref::Shadows::useShadowCaching", "false");
|
|
default:
|
|
GraphicsMenu::set("$pref::Shadows::useShadowCaching", "true");
|
|
}
|
|
}
|
|
|
|
function ShadowCaching::get()
|
|
{
|
|
if($pref::Shadows::useShadowCaching == true)
|
|
return "On";
|
|
else
|
|
return "Off";
|
|
}
|
|
|
|
function ShadowCaching::getList()
|
|
{
|
|
return "Off,On";
|
|
}
|
|
|
|
//
|
|
function ParallaxSetting::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "On":
|
|
GraphicsMenu::set("$pref::Video::disableParallaxMapping", "false");
|
|
case "Off":
|
|
GraphicsMenu::set("$pref::Video::disableParallaxMapping", "true");
|
|
default:
|
|
GraphicsMenu::set("$pref::Video::disableParallaxMapping", "false");
|
|
}
|
|
}
|
|
|
|
function ParallaxSetting::get()
|
|
{
|
|
if($pref::Video::disableParallaxMapping == false)
|
|
return "On";
|
|
else
|
|
return "Off";
|
|
}
|
|
|
|
function ParallaxSetting::getList()
|
|
{
|
|
return "Off,On";
|
|
}
|
|
|
|
//
|
|
function AmbientOcclusionSetting::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "On":
|
|
GraphicsMenu::set("$pref::PostFX::EnableSSAO", "true");
|
|
case "Off":
|
|
GraphicsMenu::set("$pref::PostFX::EnableSSAO", "false");
|
|
default:
|
|
GraphicsMenu::set("$pref::PostFX::EnableSSAO", "true");
|
|
}
|
|
}
|
|
|
|
function AmbientOcclusionSetting::get()
|
|
{
|
|
if($pref::PostFX::EnableSSAO == true)
|
|
return "On";
|
|
else
|
|
return "Off";
|
|
}
|
|
|
|
function AmbientOcclusionSetting::getList()
|
|
{
|
|
return "Off,On";
|
|
}
|
|
|
|
//
|
|
function LightRaysSetting::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "On":
|
|
GraphicsMenu::set("$pref::PostFX::EnableLightRays", "true");
|
|
case "Off":
|
|
GraphicsMenu::set("$pref::PostFX::EnableLightRays", "false");
|
|
default:
|
|
GraphicsMenu::set("$pref::PostFX::EnableLightRays", "true");
|
|
}
|
|
}
|
|
|
|
function LightRaysSetting::get()
|
|
{
|
|
if($pref::PostFX::EnableLightRays == true)
|
|
return "On";
|
|
else
|
|
return "Off";
|
|
}
|
|
|
|
function LightRaysSetting::getList()
|
|
{
|
|
return "Off,On";
|
|
}
|
|
|
|
//
|
|
function DOFSetting::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "On":
|
|
GraphicsMenu::set("$pref::PostFX::EnableDOF", "true");
|
|
case "Off":
|
|
GraphicsMenu::set("$pref::PostFX::EnableDOF", "false");
|
|
default:
|
|
GraphicsMenu::set("$pref::PostFX::EnableDOF", "true");
|
|
}
|
|
}
|
|
|
|
function DOFSetting::get()
|
|
{
|
|
if($pref::PostFX::EnableLightRays == true)
|
|
return "On";
|
|
else
|
|
return "Off";
|
|
}
|
|
|
|
function DOFSetting::getList()
|
|
{
|
|
return "Off,On";
|
|
}
|
|
|
|
//
|
|
function WaterReflectionSetting::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "On":
|
|
GraphicsMenu::set("$pref::Water::disableTrueReflections", "false");
|
|
case "Off":
|
|
GraphicsMenu::set("$pref::Water::disableTrueReflections", "true");
|
|
default:
|
|
GraphicsMenu::set("$pref::Water::disableTrueReflections", "false");
|
|
}
|
|
}
|
|
|
|
function WaterReflectionSetting::get()
|
|
{
|
|
if($pref::Water::disableTrueReflections == false)
|
|
return "On";
|
|
else
|
|
return "Off";
|
|
}
|
|
|
|
function WaterReflectionSetting::getList()
|
|
{
|
|
return "Off,On";
|
|
}
|
|
|
|
//
|
|
function VignetteSetting::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "On":
|
|
GraphicsMenu::set("$pref::PostFX::EnableVignette", "true");
|
|
case "Off":
|
|
GraphicsMenu::set("$pref::PostFX::EnableVignette", "false");
|
|
default:
|
|
GraphicsMenu::set("$pref::PostFX::EnableVignette", "true");
|
|
}
|
|
}
|
|
|
|
function VignetteSetting::get()
|
|
{
|
|
if($pref::PostFX::EnableVignette == true)
|
|
return "On";
|
|
else
|
|
return "Off";
|
|
}
|
|
|
|
function VignetteSetting::getList()
|
|
{
|
|
return "Off,On";
|
|
}
|
|
|
|
//
|
|
function AASetting::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "4x":
|
|
GraphicsMenu::set("$pref::Video::AA", "4");
|
|
case "2x":
|
|
GraphicsMenu::set("$pref::Video::AA", "2");
|
|
case "1x":
|
|
GraphicsMenu::set("$pref::Video::AA", "1");
|
|
case "Off":
|
|
GraphicsMenu::set("$pref::Video::AA", "0");
|
|
default:
|
|
GraphicsMenu::set("$pref::Video::AA", "0");
|
|
}
|
|
}
|
|
|
|
function AASetting::get()
|
|
{
|
|
if($pref::Video::AA == 4)
|
|
return "4x";
|
|
else if($pref::Video::AA == 2)
|
|
return "2x";
|
|
else if($pref::Video::AA == 1)
|
|
return "1x";
|
|
else if($pref::Video::AA == 0)
|
|
return "Off";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function AASetting::getList()
|
|
{
|
|
return "Off,1x,2x,4x";
|
|
}
|
|
|
|
//
|
|
function AnisotropicFilteringSetting::set(%setting)
|
|
{
|
|
switch$(%setting)
|
|
{
|
|
case "16x":
|
|
GraphicsMenu::set("$pref::Video::defaultAnisotropy", "16");
|
|
case "8x":
|
|
GraphicsMenu::set("$pref::Video::defaultAnisotropy", "8");
|
|
case "4x":
|
|
GraphicsMenu::set("$pref::Video::defaultAnisotropy", "4");
|
|
case "Off":
|
|
GraphicsMenu::set("$pref::Video::defaultAnisotropy", "0");
|
|
default:
|
|
GraphicsMenu::set("$pref::Video::defaultAnisotropy", "0");
|
|
}
|
|
}
|
|
|
|
function AnisotropicFilteringSetting::get()
|
|
{
|
|
if($pref::Video::defaultAnisotropy == 16)
|
|
return "16x";
|
|
else if($pref::Video::defaultAnisotropy == 8)
|
|
return "8x";
|
|
else if($pref::Video::defaultAnisotropy == 4)
|
|
return "4x";
|
|
else if($pref::Video::defaultAnisotropy == 0)
|
|
return "Off";
|
|
else
|
|
return "Custom";
|
|
}
|
|
|
|
function AnisotropicFilteringSetting::getList()
|
|
{
|
|
return "Off,4x,8x,16x";
|
|
} |