< Summary

Class:DCL.SettingsControls.SSAOControlController
Assembly:SettingsControllers
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/SettingsControllers/SpecificControllers/SSAOControlController.cs
Covered lines:17
Uncovered lines:11
Coverable lines:28
Total lines:70
Line coverage:60.7% (17 of 28)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Initialize()0%110100%
GetStoredValue()0%110100%
UpdateSetting(...)0%13.125031.25%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/Settings/SettingsControllers/SpecificControllers/SSAOControlController.cs

#LineLine coverage
 1using System.Collections;
 2using System.Reflection;
 3using DCL.SettingsData;
 4using UnityEngine;
 5using UnityEngine.Rendering;
 6using UnityEngine.Rendering.Universal;
 7using QualitySettings = DCL.SettingsData.QualitySettings;
 8
 9namespace DCL.SettingsControls
 10{
 11    [CreateAssetMenu(menuName = "Settings/Controllers/Controls/SSAO Controller", fileName = "SSAOControlController")]
 12    public class SSAOControlController : SpinBoxSettingsControlController
 13    {
 14        private UniversalRenderPipelineAsset urpAsset = null;
 15        private ScriptableRendererFeature ssaoFeature;
 16
 17        private object settings;
 18        private FieldInfo sourceField;
 19        private FieldInfo downsampleField;
 20
 21        public override void Initialize()
 22        {
 123            base.Initialize();
 24
 125            urpAsset = GraphicsSettings.renderPipelineAsset as UniversalRenderPipelineAsset;
 26
 127            ScriptableRenderer forwardRenderer = urpAsset.GetRenderer(0) as ScriptableRenderer;
 128            var featuresField = typeof(ScriptableRenderer).GetField("m_RendererFeatures", BindingFlags.NonPublic | Bindi
 29
 130            IList features = featuresField.GetValue(forwardRenderer) as IList;
 131            ssaoFeature = features[0] as ScriptableRendererFeature;
 32
 133            FieldInfo settingsField = ssaoFeature.GetType().GetField("m_Settings", BindingFlags.NonPublic | BindingFlags
 134            settings = settingsField.GetValue(ssaoFeature);
 35
 136            sourceField = settings.GetType().GetField("Source", BindingFlags.NonPublic | BindingFlags.Instance);
 137            downsampleField = settings.GetType().GetField("Downsample", BindingFlags.NonPublic | BindingFlags.Instance);
 138        }
 39
 140        public override object GetStoredValue() { return currentQualitySetting.ssaoQuality; }
 41
 42        public override void UpdateSetting(object newValue)
 43        {
 144            int value = (int)newValue;
 45            switch ( value )
 46            {
 47                case (int)QualitySettings.SSAOQualityLevel.OFF:
 148                    ssaoFeature.SetActive(false);
 149                    break;
 50                case (int)QualitySettings.SSAOQualityLevel.LOW:
 051                    ssaoFeature.SetActive(true);
 052                    sourceField.SetValue(settings, 0);
 053                    downsampleField.SetValue(settings, true);
 054                    break;
 55                case (int)QualitySettings.SSAOQualityLevel.MID:
 056                    ssaoFeature.SetActive(true);
 057                    sourceField.SetValue(settings, 1);
 058                    downsampleField.SetValue(settings, true);
 059                    break;
 60                case (int)QualitySettings.SSAOQualityLevel.HIGH:
 061                    ssaoFeature.SetActive(true);
 062                    sourceField.SetValue(settings, 1);
 063                    downsampleField.SetValue(settings, false);
 64                    break;
 65            }
 66
 167            currentQualitySetting.ssaoQuality = (QualitySettings.SSAOQualityLevel)value;
 168        }
 69    }
 70}