From 894d2c042ad963628fb502cd13203d1ee0feebd9 Mon Sep 17 00:00:00 2001 From: Marc Chapman Date: Wed, 16 Oct 2019 19:22:34 +0100 Subject: [PATCH 1/8] Fix shader path and added console.log in cleanup.bat --- Tools/CMake/cleanup-win.bat.in | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Tools/CMake/cleanup-win.bat.in b/Tools/CMake/cleanup-win.bat.in index c8c3a4fad..d0495a01e 100644 --- a/Tools/CMake/cleanup-win.bat.in +++ b/Tools/CMake/cleanup-win.bat.in @@ -2,7 +2,7 @@ :: Delete procedural shaders echo shaders -del /q /a:-R shaders\procedural\*.* +del /q /a:-R data\shaderCachel\*.* :: Delete dumped shader disassembly files for /R %%a IN (*._dis.txt) do IF EXIST "%%a._dis.txt" del "%%a._dis.txt" @@ -38,10 +38,11 @@ IF EXIST "scripts\server\banlist.cs" del /s scripts\server\banlist.cs IF EXIST "scripts\server\prefs.cs" del /s scripts\server\prefs.cs IF EXIST "client\config.cs" del /s client\config.cs IF EXIST "config.cs" del /s config.cs -IF EXIST "tools\settings.xml" del /s tools\settings.xml +:: IF EXIST "tools\settings.xml" del /s tools\settings.xml IF EXIST "banlist.cs" del /s banlist.cs :: logs echo logs IF EXIST "torque3d.log" del /s torque3d.log -echo DONE! +IF EXIST "console.log" del /s console.log +echo DONE! \ No newline at end of file From dcc1c47e39d69c09788f2a4aebd4e7b3fdbde429 Mon Sep 17 00:00:00 2001 From: Marc Chapman Date: Wed, 16 Oct 2019 19:22:56 +0100 Subject: [PATCH 2/8] typos --- .../game/data/ExampleModule/components/ExampleComponent.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Templates/BaseGame/game/data/ExampleModule/components/ExampleComponent.cs b/Templates/BaseGame/game/data/ExampleModule/components/ExampleComponent.cs index 497b0e41d..5656f5cd5 100644 --- a/Templates/BaseGame/game/data/ExampleModule/components/ExampleComponent.cs +++ b/Templates/BaseGame/game/data/ExampleModule/components/ExampleComponent.cs @@ -4,7 +4,7 @@ function ExampleComponent::onAdd(%this) { } -//onAdd is called when the component is removed and deleted from it's owner entity. +//onRemove is called when the component is removed and deleted from it's owner entity. function ExampleComponent::onRemove(%this) { @@ -15,7 +15,7 @@ function ExampleComponent::onClientConnect(%this, %client) } //onClientDisconnect is called any time a client disconnects from the server. -function ExampleComponent::onClientDisonnect(%this, %client) +function ExampleComponent::onClientDisconnect(%this, %client) { } From be6054b3d155b92506b5aded751b8b8f18772761 Mon Sep 17 00:00:00 2001 From: Marc Chapman Date: Wed, 16 Oct 2019 19:23:32 +0100 Subject: [PATCH 3/8] Shaderdata new->singleton --- .../game/core/gameObjects/materials/materials.cs | 4 ++-- .../lighting/scripts/advancedLighting_Shaders.cs | 12 ++++++------ .../game/core/lighting/scripts/deferredShading.cs | 2 +- .../game/core/lighting/scripts/shadowMaps_Init.cs | 2 +- .../game/core/rendering/scripts/gfxData/shaders.cs | 6 +++--- .../worldEditor/scripts/visibility/lightViz.cs | 14 +++++++------- .../worldEditor/scripts/visibility/miscViz.cs | 8 ++++---- .../worldEditor/scripts/visibility/shadowViz.cs | 2 +- 8 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Templates/BaseGame/game/core/gameObjects/materials/materials.cs b/Templates/BaseGame/game/core/gameObjects/materials/materials.cs index 9ea6fa1bd..af1f49cf7 100644 --- a/Templates/BaseGame/game/core/gameObjects/materials/materials.cs +++ b/Templates/BaseGame/game/core/gameObjects/materials/materials.cs @@ -1,4 +1,4 @@ -new ShaderData( BasicRibbonShader ) +singleton ShaderData( BasicRibbonShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/ribbons/basicRibbonShaderV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/ribbons/basicRibbonShaderP.hlsl"; @@ -26,7 +26,7 @@ singleton CustomMaterial( BasicRibbonMat ) preload = true; }; -new ShaderData( TexturedRibbonShader ) +singleton ShaderData( TexturedRibbonShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/ribbons/texRibbonShaderV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/ribbons/texRibbonShaderP.hlsl"; diff --git a/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs b/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs index bc70856ad..8ccb8a517 100644 --- a/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs +++ b/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs @@ -61,7 +61,7 @@ new GFXStateBlockData( AL_VectorLightState ) }; // Vector Light Material -new ShaderData( AL_VectorLightShader ) +singleton shaderData( AL_VectorLightShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/farFrustumQuadV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/vectorLightP.hlsl"; @@ -140,7 +140,7 @@ new GFXStateBlockData( AL_ConvexLightState ) }; // Point Light Material -new ShaderData( AL_PointLightShader ) +singleton shaderData( AL_PointLightShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/convexGeometryV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/pointLightP.hlsl"; @@ -179,7 +179,7 @@ new CustomMaterial( AL_PointLightMaterial ) }; // Spot Light Material -new ShaderData( AL_SpotLightShader ) +singleton shaderData( AL_SpotLightShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/convexGeometryV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/spotLightP.hlsl"; @@ -256,7 +256,7 @@ new Material( AL_DefaultShadowMaterial ) }; // Particle System Point Light Material -new ShaderData( AL_ParticlePointLightShader ) +singleton shaderData( AL_ParticlePointLightShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/particlePointLightV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/particlePointLightP.hlsl"; @@ -281,7 +281,7 @@ new CustomMaterial( AL_ParticlePointLightMaterial ) }; //Probe Processing -new ShaderData( IrradianceShader ) +singleton shaderData( IrradianceShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/cubemapV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/irradianceP.hlsl"; @@ -294,7 +294,7 @@ new ShaderData( IrradianceShader ) pixVersion = 3.0; }; -new ShaderData( PrefiterCubemapShader ) +singleton shaderData( PrefiterCubemapShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/cubemapV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/prefilterP.hlsl"; diff --git a/Templates/BaseGame/game/core/lighting/scripts/deferredShading.cs b/Templates/BaseGame/game/core/lighting/scripts/deferredShading.cs index eb6afe74c..d0631fc50 100644 --- a/Templates/BaseGame/game/core/lighting/scripts/deferredShading.cs +++ b/Templates/BaseGame/game/core/lighting/scripts/deferredShading.cs @@ -27,7 +27,7 @@ new GFXStateBlockData( AL_DeferredCaptureState : PFX_DefaultStateBlock ) samplerStates[4] = SamplerWrapLinear; }; -new ShaderData( AL_ProbeShader ) +singleton shaderData( AL_ProbeShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/probeShadingP.hlsl"; diff --git a/Templates/BaseGame/game/core/lighting/scripts/shadowMaps_Init.cs b/Templates/BaseGame/game/core/lighting/scripts/shadowMaps_Init.cs index f4875bf08..f1e9f175c 100644 --- a/Templates/BaseGame/game/core/lighting/scripts/shadowMaps_Init.cs +++ b/Templates/BaseGame/game/core/lighting/scripts/shadowMaps_Init.cs @@ -21,7 +21,7 @@ //----------------------------------------------------------------------------- -new ShaderData(BlurDepthShader) +singleton shaderData(BlurDepthShader) { DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/shadowMap/boxFilterV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/shadowMap/boxFilterP.hlsl"; diff --git a/Templates/BaseGame/game/core/rendering/scripts/gfxData/shaders.cs b/Templates/BaseGame/game/core/rendering/scripts/gfxData/shaders.cs index da3b7c864..6a2981fa9 100644 --- a/Templates/BaseGame/game/core/rendering/scripts/gfxData/shaders.cs +++ b/Templates/BaseGame/game/core/rendering/scripts/gfxData/shaders.cs @@ -57,7 +57,7 @@ singleton ShaderData( OffscreenParticleCompositeShaderData ) //----------------------------------------------------------------------------- // Planar Reflection //----------------------------------------------------------------------------- -new ShaderData( ReflectBump ) +singleton shaderData( ReflectBump ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/planarReflectBumpV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/planarReflectBumpP.hlsl"; @@ -72,7 +72,7 @@ new ShaderData( ReflectBump ) pixVersion = 2.0; }; -new ShaderData( Reflect ) +singleton shaderData( Reflect ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/planarReflectV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/planarReflectP.hlsl"; @@ -89,7 +89,7 @@ new ShaderData( Reflect ) //----------------------------------------------------------------------------- // fxFoliageReplicator //----------------------------------------------------------------------------- -new ShaderData( fxFoliageReplicatorShader ) +singleton shaderData( fxFoliageReplicatorShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/fxFoliageReplicatorV.hlsl"; DXPixelShaderFile = $Core::CommonShaderPath @ "/fxFoliageReplicatorP.hlsl"; diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/lightViz.cs b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/lightViz.cs index 2edfa2898..913e19f95 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/lightViz.cs +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/lightViz.cs @@ -20,7 +20,7 @@ // IN THE SOFTWARE. //----------------------------------------------------------------------------- // Debug Shaders. -new ShaderData( AL_ColorBufferShader ) +singleton shaderData( AL_ColorBufferShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl"; DXPixelShaderFile = "./shaders/dbgColorBufferP.hlsl"; @@ -59,7 +59,7 @@ function toggleColorBufferViz( %enable ) } } -new ShaderData( AL_SpecMapShader ) +singleton shaderData( AL_SpecMapShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl"; DXPixelShaderFile = "./shaders/dbgSpecMapVisualizeP.hlsl"; @@ -121,7 +121,7 @@ new GFXStateBlockData( AL_DefaultVisualizeState ) samplerStates[1] = SamplerClampLinear; // depthviz }; -new ShaderData( AL_DepthVisualizeShader ) +singleton shaderData( AL_DepthVisualizeShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl"; DXPixelShaderFile = "./shaders/dbgDepthVisualizeP.hlsl"; @@ -157,7 +157,7 @@ function AL_DepthVisualize::onEnabled( %this ) return true; } -new ShaderData( AL_GlowVisualizeShader ) +singleton shaderData( AL_GlowVisualizeShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl"; DXPixelShaderFile = "./shaders/dbgGlowVisualizeP.hlsl"; @@ -178,7 +178,7 @@ singleton PostEffect( AL_GlowVisualize ) renderPriority = 9999; }; -new ShaderData( AL_NormalsVisualizeShader ) +singleton shaderData( AL_NormalsVisualizeShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl"; DXPixelShaderFile = "./shaders/dbgNormalVisualizeP.hlsl"; @@ -214,7 +214,7 @@ function AL_NormalsVisualize::onEnabled( %this ) -new ShaderData( AL_LightColorVisualizeShader ) +singleton shaderData( AL_LightColorVisualizeShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl"; DXPixelShaderFile = "./shaders/dbgLightColorVisualizeP.hlsl"; @@ -249,7 +249,7 @@ function AL_LightColorVisualize::onEnabled( %this ) } -new ShaderData( AL_LightSpecularVisualizeShader ) +singleton shaderData( AL_LightSpecularVisualizeShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl"; DXPixelShaderFile = "./shaders/dbgLightSpecularVisualizeP.hlsl"; diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.cs b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.cs index 3bb990019..5fc159ce7 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.cs +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.cs @@ -39,7 +39,7 @@ new GFXStateBlockData( Viz_DefaultVisualizeState ) samplerStates[4] = SamplerClampLinear; // depthviz }; -new ShaderData( Viz_TexelDensity ) +singleton shaderData( Viz_TexelDensity ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl"; DXPixelShaderFile = "./shaders/Viz_TexelDensityP.hlsl"; @@ -79,7 +79,7 @@ function toggleTexelDensityViz( %enable ) // // -new ShaderData( Viz_SurfaceProperties ) +singleton shaderData( Viz_SurfaceProperties ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl"; DXPixelShaderFile = "./shaders/Viz_SurfacePropertiesP.hlsl"; @@ -203,7 +203,7 @@ function Viz_SurfacePropertiesPFX::onEnabled( %this ) // // // -new ShaderData( Viz_ColorBlindness ) +singleton shaderData( Viz_ColorBlindness ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl"; DXPixelShaderFile = "./shaders/Viz_ColorblindnessP.hlsl"; @@ -307,7 +307,7 @@ function Viz_ColorBlindnessPFX::onEnabled( %this ) // //Material Complexity Viz -new ShaderData( Viz_MaterialComplexity ) +singleton shaderData( Viz_MaterialComplexity ) { DXVertexShaderFile = "./shaders/Viz_materialComplexityV.hlsl"; DXPixelShaderFile = "./shaders/Viz_materialComplexityP.hlsl"; diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/shadowViz.cs b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/shadowViz.cs index 1bfa88488..bb07ba596 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/shadowViz.cs +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/shadowViz.cs @@ -20,7 +20,7 @@ // IN THE SOFTWARE. //----------------------------------------------------------------------------- -new ShaderData( AL_ShadowVisualizeShader ) +singleton shaderData( AL_ShadowVisualizeShader ) { DXVertexShaderFile = $Core::CommonShaderPath @ "/guiMaterialV.hlsl"; DXPixelShaderFile = "./shaders/dbgShadowVisualizeP.hlsl"; From d433b28f8fd29b68dcf674b4418983156a122ed3 Mon Sep 17 00:00:00 2001 From: Marc Chapman Date: Wed, 16 Oct 2019 19:26:45 +0100 Subject: [PATCH 4/8] GFXStateBlockData new -> singleton --- .../core/lighting/scripts/advancedLighting_Shaders.cs | 4 ++-- .../game/core/lighting/scripts/deferredShading.cs | 2 +- .../core/rendering/scripts/gfxData/commonMaterialData.cs | 8 ++++---- .../game/core/rendering/scripts/gfxData/scatterSky.cs | 2 +- .../BaseGame/game/core/rendering/scripts/gfxData/water.cs | 2 +- .../game/tools/worldEditor/scripts/visibility/lightViz.cs | 4 ++-- .../game/tools/worldEditor/scripts/visibility/miscViz.cs | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs b/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs index 8ccb8a517..af04cea66 100644 --- a/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs +++ b/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs @@ -22,7 +22,7 @@ // Vector Light State -new GFXStateBlockData( AL_VectorLightState ) +singleton GFXStateBlockData( AL_VectorLightState ) { blendDefined = true; blendEnable = true; @@ -102,7 +102,7 @@ new CustomMaterial( AL_VectorLightMaterial ) //------------------------------------------------------------------------------ // Convex-geometry light states -new GFXStateBlockData( AL_ConvexLightState ) +singleton GFXStateBlockData( AL_ConvexLightState ) { blendDefined = true; blendEnable = true; diff --git a/Templates/BaseGame/game/core/lighting/scripts/deferredShading.cs b/Templates/BaseGame/game/core/lighting/scripts/deferredShading.cs index d0631fc50..f2c9e43af 100644 --- a/Templates/BaseGame/game/core/lighting/scripts/deferredShading.cs +++ b/Templates/BaseGame/game/core/lighting/scripts/deferredShading.cs @@ -9,7 +9,7 @@ singleton ShaderData( DeferredColorShader ) pixVersion = 2.0; }; -new GFXStateBlockData( AL_DeferredCaptureState : PFX_DefaultStateBlock ) +singleton GFXStateBlockData( AL_DeferredCaptureState : PFX_DefaultStateBlock ) { blendEnable = false; diff --git a/Templates/BaseGame/game/core/rendering/scripts/gfxData/commonMaterialData.cs b/Templates/BaseGame/game/core/rendering/scripts/gfxData/commonMaterialData.cs index c5d8ef5bc..dee7364de 100644 --- a/Templates/BaseGame/game/core/rendering/scripts/gfxData/commonMaterialData.cs +++ b/Templates/BaseGame/game/core/rendering/scripts/gfxData/commonMaterialData.cs @@ -34,7 +34,7 @@ $sequence = 16; // Common stateblock definitions -new GFXSamplerStateData(SamplerClampLinear) +singleton GFXSamplerStateData(SamplerClampLinear) { textureColorOp = GFXTOPModulate; addressModeU = GFXAddressClamp; @@ -45,7 +45,7 @@ new GFXSamplerStateData(SamplerClampLinear) mipFilter = GFXTextureFilterLinear; }; -new GFXSamplerStateData(SamplerClampPoint) +singleton GFXSamplerStateData(SamplerClampPoint) { textureColorOp = GFXTOPModulate; addressModeU = GFXAddressClamp; @@ -56,7 +56,7 @@ new GFXSamplerStateData(SamplerClampPoint) mipFilter = GFXTextureFilterPoint; }; -new GFXSamplerStateData(SamplerWrapLinear) +singleton GFXSamplerStateData(SamplerWrapLinear) { textureColorOp = GFXTOPModulate; addressModeU = GFXTextureAddressWrap; @@ -67,7 +67,7 @@ new GFXSamplerStateData(SamplerWrapLinear) mipFilter = GFXTextureFilterLinear; }; -new GFXSamplerStateData(SamplerWrapPoint) +singleton GFXSamplerStateData(SamplerWrapPoint) { textureColorOp = GFXTOPModulate; addressModeU = GFXTextureAddressWrap; diff --git a/Templates/BaseGame/game/core/rendering/scripts/gfxData/scatterSky.cs b/Templates/BaseGame/game/core/rendering/scripts/gfxData/scatterSky.cs index 5add01d8b..a37fb1a48 100644 --- a/Templates/BaseGame/game/core/rendering/scripts/gfxData/scatterSky.cs +++ b/Templates/BaseGame/game/core/rendering/scripts/gfxData/scatterSky.cs @@ -20,7 +20,7 @@ // IN THE SOFTWARE. //----------------------------------------------------------------------------- -new GFXStateBlockData( ScatterSkySBData ) +singleton GFXStateBlockData( ScatterSkySBData ) { cullMode = "GFXCullNone"; diff --git a/Templates/BaseGame/game/core/rendering/scripts/gfxData/water.cs b/Templates/BaseGame/game/core/rendering/scripts/gfxData/water.cs index ec5e4be71..e462a604b 100644 --- a/Templates/BaseGame/game/core/rendering/scripts/gfxData/water.cs +++ b/Templates/BaseGame/game/core/rendering/scripts/gfxData/water.cs @@ -45,7 +45,7 @@ singleton ShaderData( WaterShader ) pixVersion = 3.0; }; -new GFXSamplerStateData(WaterSampler) +singleton GFXSamplerStateData(WaterSampler) { textureColorOp = GFXTOPModulate; addressModeU = GFXAddressWrap; diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/lightViz.cs b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/lightViz.cs index 913e19f95..9031526e5 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/lightViz.cs +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/lightViz.cs @@ -94,7 +94,7 @@ function toggleSpecMapViz( %enable ) AL_SpecMapVisualize.disable(); } -new GFXStateBlockData( AL_DepthVisualizeState ) +singleton GFXStateBlockData( AL_DepthVisualizeState ) { zDefined = true; zEnable = false; @@ -105,7 +105,7 @@ new GFXStateBlockData( AL_DepthVisualizeState ) samplerStates[1] = SamplerClampLinear; // viz color lookup }; -new GFXStateBlockData( AL_DefaultVisualizeState ) +singleton GFXStateBlockData( AL_DefaultVisualizeState ) { blendDefined = true; blendEnable = true; diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.cs b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.cs index 5fc159ce7..1b09d28fe 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.cs +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/visibility/miscViz.cs @@ -1,4 +1,4 @@ -new GFXStateBlockData( Viz_DefaultVisualizeState ) +singleton GFXStateBlockData( Viz_DefaultVisualizeState ) { /*alphaDefined = true; alphaTestEnable = true; From e1f09312553d24b93b96c6fe052bec60d0f73192 Mon Sep 17 00:00:00 2001 From: Marc Chapman Date: Fri, 18 Oct 2019 04:25:49 +0100 Subject: [PATCH 5/8] Fixed bug in display options UI writing incorrect values. --- Templates/BaseGame/game/data/ui/guis/optionsMenu.cs | 2 +- Templates/BaseGame/game/data/ui/scripts/displayMenu.cs | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Templates/BaseGame/game/data/ui/guis/optionsMenu.cs b/Templates/BaseGame/game/data/ui/guis/optionsMenu.cs index 98c3eda8d..51b4e4790 100644 --- a/Templates/BaseGame/game/data/ui/guis/optionsMenu.cs +++ b/Templates/BaseGame/game/data/ui/guis/optionsMenu.cs @@ -367,7 +367,7 @@ function OptionsMenuBackSetting::onClick(%this) //advance by one %newSetting = getToken(%settingsList, ",", %currentSettingIdx); - eval(%settingCtrl.qualitySettingGroup@"::set("@%newSetting@");"); + eval(%settingCtrl.qualitySettingGroup@"::set(\""@%newSetting@"\");"); %settingCtrl-->SettingText.setText( %newSetting ); if(%currentSettingIdx == %settingsListCount) diff --git a/Templates/BaseGame/game/data/ui/scripts/displayMenu.cs b/Templates/BaseGame/game/data/ui/scripts/displayMenu.cs index 71fb68b65..bf84abfd8 100644 --- a/Templates/BaseGame/game/data/ui/scripts/displayMenu.cs +++ b/Templates/BaseGame/game/data/ui/scripts/displayMenu.cs @@ -38,7 +38,14 @@ function DisplayMenu::apply(%this) } //Update the display settings now - $pref::Video::Resolution = getWord( $pref::Video::Resolution, 0 ) SPC getWord( $pref::Video::Resolution, 2 ); + if (getWord( $pref::Video::Resolution, 2) == "") + { + $pref::Video::Resolution = getWord( $pref::Video::Resolution, 0 ) SPC getWord( $pref::Video::Resolution, 1 ); + } + else + { + $pref::Video::Resolution = getWord( $pref::Video::Resolution, 0 ) SPC getWord( $pref::Video::Resolution, 2 ); + } /*if ( %newFullScreen $= "false" ) { From ecfe9a579c393439eb9fa3a3f434aeb4642d293d Mon Sep 17 00:00:00 2001 From: Marc Chapman Date: Sun, 20 Oct 2019 09:16:16 +0100 Subject: [PATCH 6/8] Added TerrainSnapOffsetZ back to editor settings --- .../BaseGame/game/tools/worldEditor/scripts/editorPrefs.ed.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/editorPrefs.ed.cs b/Templates/BaseGame/game/tools/worldEditor/scripts/editorPrefs.ed.cs index 876ae120a..891a5988a 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/editorPrefs.ed.cs +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/editorPrefs.ed.cs @@ -60,6 +60,8 @@ EditorSettings.endGroup(); EditorSettings.beginGroup( "Tools" ); EditorSettings.setDefaultValue( "snapGround", "0" ); +EditorSettings.setDefaultValue( "TerrainSnapOffsetZ", "0" ); +EditorSettings.setDefaultValue( "OffsetZValue", "0.01" ); EditorSettings.setDefaultValue( "snapSoft", "0" ); EditorSettings.setDefaultValue( "snapSoftSize", "2.0" ); EditorSettings.setDefaultValue( "boundingBoxCollision", "0" ); From 8c880caaf7c498b0e579b40c5747eeb261e9b776 Mon Sep 17 00:00:00 2001 From: Marc Chapman Date: Sun, 20 Oct 2019 09:48:57 +0100 Subject: [PATCH 7/8] MIssed settings --- .../BaseGame/game/tools/worldEditor/scripts/editorPrefs.ed.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/editorPrefs.ed.cs b/Templates/BaseGame/game/tools/worldEditor/scripts/editorPrefs.ed.cs index 891a5988a..f53243afa 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/editorPrefs.ed.cs +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/editorPrefs.ed.cs @@ -217,6 +217,8 @@ function EditorGui::readWorldEditorSettings(%this) EditorSettings.beginGroup( "Tools" ); EWorldEditor.stickToGround = EditorSettings.value("snapGround"); //$pref::WorldEditor::snapGround; + EWorldEditor.TerrainSnapOffsetZ = EditorSettings.value("TerrainSnapOffsetZ"); //$pref::WorldEditor::TerrainSnapOffsetZ; + EWorldEditor.OffsetZValue = EditorSettings.value("OffsetZValue"); //$pref::WorldEditor::OffsetZValue; EWorldEditor.setSoftSnap( EditorSettings.value("snapSoft") ); //$pref::WorldEditor::snapSoft EWorldEditor.setSoftSnapSize( EditorSettings.value("snapSoftSize") ); //$pref::WorldEditor::snapSoftSize EWorldEditor.boundingBoxCollision = EditorSettings.value("boundingBoxCollision"); //$pref::WorldEditor::boundingBoxCollision; @@ -312,6 +314,8 @@ function EditorGui::writeWorldEditorSettings(%this) EditorSettings.beginGroup( "Tools" ); EditorSettings.setValue( "snapGround", EWorldEditor.stickToGround ); //$Pref::WorldEditor::snapGround + EditorSettings.setValue( "TerrainSnapOffsetZ", EWorldEditor.TerrainSnapOffsetZ ); //$pref::WorldEditor::TerrainSnapOffsetZ; + EditorSettings.setValue( "OffsetZValue", EWorldEditor.OffsetZValue ); //$pref::WorldEditor::OffsetZValue; EditorSettings.setValue( "snapSoft", EWorldEditor.getSoftSnap() ); //$Pref::WorldEditor::snapSoft EditorSettings.setValue( "snapSoftSize", EWorldEditor.getSoftSnapSize() ); //$Pref::WorldEditor::snapSoftSize EditorSettings.setValue( "boundingBoxCollision", EWorldEditor.boundingBoxCollision ); //$Pref::WorldEditor::boundingBoxCollision From 7ea5216a0698ce708d51a8602df66250a2763177 Mon Sep 17 00:00:00 2001 From: Marc Chapman Date: Sun, 20 Oct 2019 14:05:09 +0100 Subject: [PATCH 8/8] Un Mirrored these green textures... again --- .../tools/base/images/512_forestgreen.png | Bin 4614 -> 3938 bytes .../base/images/512_forestgreen_lines.png | Bin 6245 -> 10553 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Templates/BaseGame/game/tools/base/images/512_forestgreen.png b/Templates/BaseGame/game/tools/base/images/512_forestgreen.png index 179831bea181d17b5d3594211f0f8e68481caabc..c5f2cd2fd5eb6fb6767b92743ca7ad5fc3eff943 100644 GIT binary patch delta 2223 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