The BepInEx console will not appear when launching like it does for other games on Thunderstore. This is normal (and helps prevent crashes during startup). You can turn it back on in your BepInEx.cfg file.
Decompiled source of HDPeak v1.1.0
HDPeak.dll
Decompiled 6 days agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HDPeak.Settings; using Microsoft.CodeAnalysis; using TMPro; using Unity.Mathematics; using UnityEngine; using UnityEngine.Localization; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; using UnityEngine.SceneManagement; using Zorro.Settings; using Zorro.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.7.1", FrameworkDisplayName = ".NET Framework 4.7.1")] [assembly: AssemblyCompany("Nozz")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyCopyright("Copyright © 2025 Nozz")] [assembly: AssemblyFileVersion("1.1.0")] [assembly: AssemblyInformationalVersion("1.0.0+ff28d96789e667f3d6e4df666ee231dbb7354b32")] [assembly: AssemblyProduct("HDPeak")] [assembly: AssemblyTitle("HDPeak - Advanced Graphics Settings")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.1.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace HDPeak { internal static class HDPeakPluginInfo { internal const string PLUGIN_GUID = "com.nozz.hdpeak"; internal const string PLUGIN_NAME = "HDPeak"; internal const string PLUGIN_VERSION = "1.1.0"; } [BepInPlugin("com.nozz.hdpeak", "HDPeak", "1.1.0")] public class HDPeakPlugin : BaseUnityPlugin { internal static ManualLogSource Logger; private GameObject buttonSrc; private bool settingsAdded; private Coroutine updateTabsRoutine; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Logger.LogInfo((object)"Plugin com.nozz.hdpeak is loaded!"); LoadLocalizationData(); HDPeakSettingsRegistry.Register("HDPeak"); } private void Start() { if (!settingsAdded) { try { Logger.LogInfo((object)"Adding Anti-Aliasing setting..."); SettingsHandler.Instance.AddSetting((Setting)(object)new AntiAliasingSetting()); Logger.LogInfo((object)"Adding Anisotropic Filtering setting..."); SettingsHandler.Instance.AddSetting((Setting)(object)new AnisotropicFilteringSetting()); Logger.LogInfo((object)"Adding Texture Quality setting..."); SettingsHandler.Instance.AddSetting((Setting)(object)new TextureQualitySetting()); Logger.LogInfo((object)"Adding Shadow Resolution setting..."); SettingsHandler.Instance.AddSetting((Setting)(object)new ShadowResolutionSetting()); Logger.LogInfo((object)"Adding LOD Bias setting..."); SettingsHandler.Instance.AddSetting((Setting)(object)new LODBiasSetting()); Logger.LogInfo((object)"Adding Opaque Texture setting..."); SettingsHandler.Instance.AddSetting((Setting)(object)new OpaqueTextureSetting()); Logger.LogInfo((object)"Adding Max Additional Lights setting..."); SettingsHandler.Instance.AddSetting((Setting)(object)new MaxLightsSetting()); Logger.LogInfo((object)"Adding Dynamic Batching setting..."); SettingsHandler.Instance.AddSetting((Setting)(object)new DynamicBatchingSetting()); settingsAdded = true; Logger.LogInfo((object)"HDPeak settings added successfully!"); Logger.LogInfo((object)"Available settings: Anti-Aliasing, Anisotropic Filtering, Texture Quality, Shadow Resolution, LOD Bias, Opaque Texture, Max Additional Lights, Dynamic Batching"); Logger.LogInfo((object)$"Settings added: {settingsAdded}"); } catch (Exception ex) { Logger.LogError((object)("Error adding settings: " + ex.Message)); } } } private void OnEnable() { SceneManager.sceneLoaded += OnSceneLoaded; } private void OnDisable() { SceneManager.sceneLoaded -= OnSceneLoaded; if (updateTabsRoutine != null) { ((MonoBehaviour)this).StopCoroutine(updateTabsRoutine); updateTabsRoutine = null; } } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) if (updateTabsRoutine != null) { ((MonoBehaviour)this).StopCoroutine(updateTabsRoutine); updateTabsRoutine = null; } updateTabsRoutine = ((MonoBehaviour)this).StartCoroutine(UpdateTabs(scene)); } private IEnumerator UpdateTabs(Scene scene) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) Logger.LogInfo((object)("Scene loaded: " + ((Scene)(ref scene)).name)); while ((Object)(object)buttonSrc == (Object)null) { List<SettingsTABSButton> list = FindAllInScene(scene); if (list.Count != 0) { buttonSrc = ((Component)list[0]).gameObject; } yield return (object)new WaitForSeconds(0.05f); } if (!((Object)(object)buttonSrc != (Object)null)) { yield break; } Logger.LogInfo((object)"Found TABS/General"); foreach (KeyValuePair<string, SettingsCategory> page in HDPeakSettingsRegistry.GetPages()) { string key = page.Key; SettingsCategory value = page.Value; Logger.LogInfo((object)$"Creating {key} with category {value}"); SettingsTABSButton component = Object.Instantiate<GameObject>(buttonSrc, buttonSrc.transform.parent).GetComponent<SettingsTABSButton>(); component.category = value; ((TMP_Text)((TAB_Button)component).text).text = LocalizedText.GetText("HDPEAK_TAB", true); } } public static List<SettingsTABSButton> FindAllInScene(Scene scene) { List<SettingsTABSButton> list = new List<SettingsTABSButton>(); GameObject[] rootGameObjects = ((Scene)(ref scene)).GetRootGameObjects(); for (int i = 0; i < rootGameObjects.Length; i++) { SettingsTABSButton[] componentsInChildren = rootGameObjects[i].GetComponentsInChildren<SettingsTABSButton>(); list.AddRange(componentsInChildren); } return list; } private void LoadLocalizationData() { try { Assembly executingAssembly = Assembly.GetExecutingAssembly(); string text = "HDPeak.assets.Resources.Localization.Localized_Text.csv"; using Stream stream = executingAssembly.GetManifestResourceStream(text); if (stream == null) { Logger.LogError((object)("Could not find embedded resource: " + text)); return; } using StreamReader streamReader = new StreamReader(stream); string csvContent = streamReader.ReadToEnd(); Logger.LogInfo((object)"Successfully loaded HDPeak localization CSV"); ParseAndAddLocalizationData(csvContent); } catch (Exception ex) { Logger.LogError((object)("Error loading localization data: " + ex.Message)); } } private void ParseAndAddLocalizationData(string csvContent) { try { string[] array = csvContent.Split(new char[1] { '\n' }); if (array.Length < 2) { Logger.LogError((object)"Invalid CSV format: not enough lines"); return; } string[] array2 = array[0].Split(new char[1] { ',' }); Dictionary<string, int> dictionary = new Dictionary<string, int>(); for (int i = 1; i < array2.Length; i++) { dictionary[array2[i].Trim()] = i; } Logger.LogInfo((object)$"Found {dictionary.Count} languages in localization file"); for (int j = 1; j < array.Length; j++) { string text = array[j].Trim(); if (string.IsNullOrEmpty(text)) { continue; } string[] array3 = ParseCSVLine(text); if (array3.Length < 2) { continue; } string text2 = array3[0].Trim(); if (string.IsNullOrEmpty(text2)) { continue; } foreach (KeyValuePair<string, int> item in dictionary) { if (item.Value < array3.Length) { string value = array3[item.Value].Trim(); if (!string.IsNullOrEmpty(value)) { AddToGameLocalization(text2, value, item.Key); } } } } Logger.LogInfo((object)"Successfully parsed and added HDPeak localization data"); } catch (Exception ex) { Logger.LogError((object)("Error parsing localization CSV: " + ex.Message)); } } private string[] ParseCSVLine(string line) { List<string> list = new List<string>(); bool flag = false; string text = ""; for (int i = 0; i < line.Length; i++) { char c = line[i]; switch (c) { case '"': flag = !flag; continue; case ',': if (!flag) { list.Add(text); text = ""; continue; } break; } text += c; } list.Add(text); return list.ToArray(); } private void AddToGameLocalization(string key, string value, string language) { //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Expected I4, but got Unknown try { Dictionary<string, Language> dictionary = new Dictionary<string, Language> { { "English", (Language)0 }, { "French", (Language)1 }, { "Italian", (Language)2 }, { "German", (Language)3 }, { "SpanishSpain", (Language)4 }, { "SpanishLatam", (Language)5 }, { "BRPortuguese", (Language)6 }, { "Russian", (Language)7 }, { "Ukrainian", (Language)8 }, { "SimplifiedChinese", (Language)9 }, { "TraditionalChinese", (Language)10 }, { "Japanese", (Language)11 }, { "Korean", (Language)12 } }; if (!dictionary.ContainsKey(language)) { Logger.LogWarning((object)("Unknown language: " + language)); return; } int num = (int)dictionary[language]; try { FieldInfo field = typeof(LocalizedText).GetField("MAIN_TABLE", BindingFlags.Static | BindingFlags.NonPublic); if (field != null) { if (field.GetValue(null) is Dictionary<string, List<string>> dictionary2) { if (!dictionary2.ContainsKey(key)) { List<string> list = new List<string>(); for (int i = 0; i < 13; i++) { list.Add(""); } dictionary2[key] = list; } List<string> list2 = dictionary2[key]; if (num < list2.Count) { list2[num] = value; Logger.LogDebug((object)("Added localization: " + key + " = " + value + " for " + language)); } else { Logger.LogWarning((object)$"Language index {num} out of range for key {key}"); } } else { Logger.LogWarning((object)"Main table is null, trying to initialize it"); LocalizedText.TryInitTables(); } } else { Logger.LogWarning((object)"Could not find MAIN_TABLE field in LocalizedText"); } } catch (Exception ex) { Logger.LogError((object)("Error accessing LocalizedText table: " + ex.Message)); } } catch (Exception ex2) { Logger.LogError((object)("Error adding localization entry " + key + ": " + ex2.Message)); } } } public class HDPeakSettingsRegistry { internal static Dictionary<string, SettingsCategory> nameToCategoryId = new Dictionary<string, SettingsCategory>(); public static void Register(string name) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) if (!nameToCategoryId.ContainsKey(name)) { SettingsCategory val = Enum.GetValues(typeof(SettingsCategory)).Cast<SettingsCategory>().Max(); if (nameToCategoryId.Count != 0) { val = nameToCategoryId.Values.Max(); } nameToCategoryId[name] = (SettingsCategory)(val + 1); } } public static string GetPageId(string name) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) SettingsCategory val = nameToCategoryId[name]; return ((object)(SettingsCategory)(ref val)).ToString(); } public static Dictionary<string, SettingsCategory> GetPages() { return nameToCategoryId; } } } namespace HDPeak.Settings { public enum AntialiasingMode { Off, MSAA2x, MSAA4x, MSAA8x } public enum AnisotropicFilteringMode { Disable, Enable, ForceEnable } public enum TextureQualityMode { VeryLow, Low, Medium, High, VeryHigh } public enum ShadowResolutionMode { VeryLow, Low, Medium, High, VeryHigh, Ultra } public enum OpaqueTextureMode { Disabled, Enabled } public enum MaxLightsMode { VeryLow, Low, Medium, High, VeryHigh } public enum DynamicBatchingMode { Disabled, Enabled } public class AntiAliasingSetting : EnumSetting<AntialiasingMode>, IExposedSetting { public string GetDisplayName() { return LocalizedText.GetText("HDPEAK_ANTIALIASING", true); } public string GetCategory() { return HDPeakSettingsRegistry.GetPageId("HDPeak"); } public override List<LocalizedString> GetLocalizedChoices() { return null; } public override List<string> GetUnlocalizedChoices() { return new List<string> { LocalizedText.GetText("HDPEAK_ANTIALIASING_OFF", true), LocalizedText.GetText("HDPEAK_ANTIALIASING_MSAA2X", true), LocalizedText.GetText("HDPEAK_ANTIALIASING_MSAA4X", true), LocalizedText.GetText("HDPEAK_ANTIALIASING_MSAA8X", true) }; } protected override AntialiasingMode GetDefaultValue() { return AntialiasingMode.MSAA2x; } public override void ApplyValue() { RenderPipelineAsset renderPipeline = QualitySettings.renderPipeline; UniversalRenderPipelineAsset val = (UniversalRenderPipelineAsset)(object)((renderPipeline is UniversalRenderPipelineAsset) ? renderPipeline : null); if ((Object)(object)val == (Object)null) { switch (base.Value) { case AntialiasingMode.Off: QualitySettings.antiAliasing = 0; break; case AntialiasingMode.MSAA2x: QualitySettings.antiAliasing = 2; break; case AntialiasingMode.MSAA4x: QualitySettings.antiAliasing = 4; break; case AntialiasingMode.MSAA8x: QualitySettings.antiAliasing = 8; break; default: QualitySettings.antiAliasing = 2; break; } } else { switch (base.Value) { case AntialiasingMode.Off: val.msaaSampleCount = 1; break; case AntialiasingMode.MSAA2x: val.msaaSampleCount = 2; break; case AntialiasingMode.MSAA4x: val.msaaSampleCount = 4; break; case AntialiasingMode.MSAA8x: val.msaaSampleCount = 8; break; default: val.msaaSampleCount = 2; break; } } } } public class AnisotropicFilteringSetting : EnumSetting<AnisotropicFilteringMode>, IExposedSetting { public string GetDisplayName() { return LocalizedText.GetText("HDPEAK_ANISOTROPIC_FILTERING", true); } public string GetCategory() { return HDPeakSettingsRegistry.GetPageId("HDPeak"); } public override List<LocalizedString> GetLocalizedChoices() { return null; } public override List<string> GetUnlocalizedChoices() { return new List<string> { LocalizedText.GetText("HDPEAK_ANISOTROPIC_FILTERING_DISABLE", true), LocalizedText.GetText("HDPEAK_ANISOTROPIC_FILTERING_ENABLE", true), LocalizedText.GetText("HDPEAK_ANISOTROPIC_FILTERING_FORCE_ENABLE", true) }; } protected override AnisotropicFilteringMode GetDefaultValue() { return AnisotropicFilteringMode.Enable; } public override void ApplyValue() { switch (base.Value) { case AnisotropicFilteringMode.Disable: QualitySettings.anisotropicFiltering = (AnisotropicFiltering)0; break; case AnisotropicFilteringMode.Enable: QualitySettings.anisotropicFiltering = (AnisotropicFiltering)1; break; case AnisotropicFilteringMode.ForceEnable: QualitySettings.anisotropicFiltering = (AnisotropicFiltering)2; break; default: QualitySettings.anisotropicFiltering = (AnisotropicFiltering)1; break; } } } public class TextureQualitySetting : EnumSetting<TextureQualityMode>, IExposedSetting { public string GetDisplayName() { return LocalizedText.GetText("HDPEAK_TEXTURE_QUALITY", true); } public string GetCategory() { return HDPeakSettingsRegistry.GetPageId("HDPeak"); } public override List<LocalizedString> GetLocalizedChoices() { return null; } public override List<string> GetUnlocalizedChoices() { return new List<string> { LocalizedText.GetText("HDPEAK_TEXTURE_QUALITY_VERY_LOW", true), LocalizedText.GetText("HDPEAK_TEXTURE_QUALITY_LOW", true), LocalizedText.GetText("HDPEAK_TEXTURE_QUALITY_MEDIUM", true), LocalizedText.GetText("HDPEAK_TEXTURE_QUALITY_HIGH", true), LocalizedText.GetText("HDPEAK_TEXTURE_QUALITY_VERY_HIGH", true) }; } protected override TextureQualityMode GetDefaultValue() { return TextureQualityMode.High; } public override void ApplyValue() { switch (base.Value) { case TextureQualityMode.VeryHigh: QualitySettings.globalTextureMipmapLimit = 0; break; case TextureQualityMode.High: QualitySettings.globalTextureMipmapLimit = 1; break; case TextureQualityMode.Medium: QualitySettings.globalTextureMipmapLimit = 2; break; case TextureQualityMode.Low: QualitySettings.globalTextureMipmapLimit = 3; break; case TextureQualityMode.VeryLow: QualitySettings.globalTextureMipmapLimit = 4; break; default: QualitySettings.globalTextureMipmapLimit = 1; break; } } } public class ShadowResolutionSetting : EnumSetting<ShadowResolutionMode>, IExposedSetting { public string GetDisplayName() { return LocalizedText.GetText("HDPEAK_SHADOW_RESOLUTION", true); } public string GetCategory() { return HDPeakSettingsRegistry.GetPageId("HDPeak"); } public override List<LocalizedString> GetLocalizedChoices() { return null; } public override List<string> GetUnlocalizedChoices() { return new List<string> { LocalizedText.GetText("HDPEAK_SHADOW_RESOLUTION_VERY_LOW", true), LocalizedText.GetText("HDPEAK_SHADOW_RESOLUTION_LOW", true), LocalizedText.GetText("HDPEAK_SHADOW_RESOLUTION_MEDIUM", true), LocalizedText.GetText("HDPEAK_SHADOW_RESOLUTION_HIGH", true), LocalizedText.GetText("HDPEAK_SHADOW_RESOLUTION_VERY_HIGH", true), LocalizedText.GetText("HDPEAK_SHADOW_RESOLUTION_ULTRA", true) }; } protected override ShadowResolutionMode GetDefaultValue() { return ShadowResolutionMode.Medium; } public override void ApplyValue() { RenderPipelineAsset renderPipeline = QualitySettings.renderPipeline; UniversalRenderPipelineAsset val = (UniversalRenderPipelineAsset)(object)((renderPipeline is UniversalRenderPipelineAsset) ? renderPipeline : null); if ((Object)(object)val != (Object)null) { switch (base.Value) { case ShadowResolutionMode.VeryLow: val.mainLightShadowmapResolution = 256; break; case ShadowResolutionMode.Low: val.mainLightShadowmapResolution = 512; break; case ShadowResolutionMode.Medium: val.mainLightShadowmapResolution = 1024; break; case ShadowResolutionMode.High: val.mainLightShadowmapResolution = 2048; break; case ShadowResolutionMode.VeryHigh: val.mainLightShadowmapResolution = 4096; break; case ShadowResolutionMode.Ultra: val.mainLightShadowmapResolution = 8192; break; default: val.mainLightShadowmapResolution = 1024; break; } } } } public class LODBiasSetting : FloatSetting, IExposedSetting { public string GetDisplayName() { return LocalizedText.GetText("HDPEAK_LOD_BIAS", true); } public string GetCategory() { return HDPeakSettingsRegistry.GetPageId("HDPeak"); } protected override float GetDefaultValue() { return 1f; } protected override float2 GetMinMaxValue() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) return new float2(0.5f, 2f); } public override void ApplyValue() { QualitySettings.lodBias = ((FloatSetting)this).Value; } } public class OpaqueTextureSetting : EnumSetting<OpaqueTextureMode>, IExposedSetting { public string GetDisplayName() { return LocalizedText.GetText("HDPEAK_OPAQUE_TEXTURE", true); } public string GetCategory() { return HDPeakSettingsRegistry.GetPageId("HDPeak"); } public override List<LocalizedString> GetLocalizedChoices() { return null; } public override List<string> GetUnlocalizedChoices() { return new List<string> { LocalizedText.GetText("HDPEAK_OPAQUE_TEXTURE_DISABLED", true), LocalizedText.GetText("HDPEAK_OPAQUE_TEXTURE_ENABLED", true) }; } protected override OpaqueTextureMode GetDefaultValue() { return OpaqueTextureMode.Disabled; } public override void ApplyValue() { RenderPipelineAsset renderPipeline = QualitySettings.renderPipeline; UniversalRenderPipelineAsset val = (UniversalRenderPipelineAsset)(object)((renderPipeline is UniversalRenderPipelineAsset) ? renderPipeline : null); if ((Object)(object)val != (Object)null) { bool supportsCameraOpaqueTexture = base.Value == OpaqueTextureMode.Enabled; val.supportsCameraOpaqueTexture = supportsCameraOpaqueTexture; } } } public class MaxLightsSetting : EnumSetting<MaxLightsMode>, IExposedSetting { public string GetDisplayName() { return LocalizedText.GetText("HDPEAK_MAX_ADDITIONAL_LIGHTS", true); } public string GetCategory() { return HDPeakSettingsRegistry.GetPageId("HDPeak"); } public override List<LocalizedString> GetLocalizedChoices() { return null; } public override List<string> GetUnlocalizedChoices() { return new List<string> { LocalizedText.GetText("HDPEAK_MAX_ADDITIONAL_LIGHTS_VERY_LOW", true), LocalizedText.GetText("HDPEAK_MAX_ADDITIONAL_LIGHTS_LOW", true), LocalizedText.GetText("HDPEAK_MAX_ADDITIONAL_LIGHTS_MEDIUM", true), LocalizedText.GetText("HDPEAK_MAX_ADDITIONAL_LIGHTS_HIGH", true), LocalizedText.GetText("HDPEAK_MAX_ADDITIONAL_LIGHTS_VERY_HIGH", true) }; } protected override MaxLightsMode GetDefaultValue() { return MaxLightsMode.Medium; } public override void ApplyValue() { RenderPipelineAsset renderPipeline = QualitySettings.renderPipeline; UniversalRenderPipelineAsset val = (UniversalRenderPipelineAsset)(object)((renderPipeline is UniversalRenderPipelineAsset) ? renderPipeline : null); if ((Object)(object)val != (Object)null) { switch (base.Value) { case MaxLightsMode.VeryLow: val.maxAdditionalLightsCount = 1; break; case MaxLightsMode.Low: val.maxAdditionalLightsCount = 2; break; case MaxLightsMode.Medium: val.maxAdditionalLightsCount = 4; break; case MaxLightsMode.High: val.maxAdditionalLightsCount = 6; break; case MaxLightsMode.VeryHigh: val.maxAdditionalLightsCount = 8; break; default: val.maxAdditionalLightsCount = 4; break; } } } } public class DynamicBatchingSetting : EnumSetting<DynamicBatchingMode>, IExposedSetting { public string GetDisplayName() { return LocalizedText.GetText("HDPEAK_DYNAMIC_BATCHING", true); } public string GetCategory() { return HDPeakSettingsRegistry.GetPageId("HDPeak"); } public override List<LocalizedString> GetLocalizedChoices() { return null; } public override List<string> GetUnlocalizedChoices() { return new List<string> { LocalizedText.GetText("HDPEAK_DYNAMIC_BATCHING_DISABLED", true), LocalizedText.GetText("HDPEAK_DYNAMIC_BATCHING_ENABLED", true) }; } protected override DynamicBatchingMode GetDefaultValue() { return DynamicBatchingMode.Disabled; } public override void ApplyValue() { RenderPipelineAsset renderPipeline = QualitySettings.renderPipeline; UniversalRenderPipelineAsset val = (UniversalRenderPipelineAsset)(object)((renderPipeline is UniversalRenderPipelineAsset) ? renderPipeline : null); if ((Object)(object)val != (Object)null) { bool supportsDynamicBatching = base.Value == DynamicBatchingMode.Enabled; val.supportsDynamicBatching = supportsDynamicBatching; } } } }