Decompiled source of PRZ HDPeak v1.0.0

BepInEx/plugins/PRZ_HDPeak.dll

Decompiled 3 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using Microsoft.CodeAnalysis;
using SettingsExtender;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
using Zorro.Settings;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("PRZ_HDPeak")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("PRZ_HDPeak")]
[assembly: AssemblyTitle("PRZ_HDPeak")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[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 PRZ_HDPeak
{
	public enum AnisoMode
	{
		Disable,
		Enable,
		ForceEnable
	}
	public class AnisotropicSetting : EnumSetting<AnisoMode>, IExposedSetting
	{
		public string GetDisplayName()
		{
			return "各向异性过滤";
		}

		public string GetCategory()
		{
			return HDPeakPlugin.HDPeakCategory;
		}

		protected override AnisoMode GetDefaultValue()
		{
			return AnisoMode.Enable;
		}

		public override List<LocalizedString> GetLocalizedChoices()
		{
			return null;
		}

		public override void ApplyValue()
		{
			switch (base.Value)
			{
			case AnisoMode.Disable:
				QualitySettings.anisotropicFiltering = (AnisotropicFiltering)0;
				break;
			case AnisoMode.Enable:
				QualitySettings.anisotropicFiltering = (AnisotropicFiltering)1;
				break;
			case AnisoMode.ForceEnable:
				QualitySettings.anisotropicFiltering = (AnisotropicFiltering)2;
				break;
			}
		}
	}
	public class AntiAliasingSetting : EnumSetting<AntialiasingMode>, IExposedSetting
	{
		public string GetDisplayName()
		{
			return "抗锯齿";
		}

		public string GetCategory()
		{
			return HDPeakPlugin.HDPeakCategory;
		}

		protected override AntialiasingMode GetDefaultValue()
		{
			return (AntialiasingMode)2;
		}

		public override List<LocalizedString> GetLocalizedChoices()
		{
			return null;
		}

		public override void ApplyValue()
		{
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			Camera main = Camera.main;
			if (!((Object)(object)main == (Object)null))
			{
				UniversalAdditionalCameraData universalAdditionalCameraData = CameraExtensions.GetUniversalAdditionalCameraData(main);
				if (!((Object)(object)universalAdditionalCameraData == (Object)null))
				{
					universalAdditionalCameraData.antialiasing = base.Value;
				}
			}
		}
	}
	[BepInPlugin("com.prz.hdpeak", "PRZ - HDPeak", "1.0.0")]
	[BepInProcess("Peak.exe")]
	public class HDPeakPlugin : BaseUnityPlugin
	{
		public static string HDPeakCategory = "5";

		private void Awake()
		{
			((BaseUnityPlugin)this).Logger.LogInfo((object)"PRZ - HDPeak loaded!");
		}

		private void Start()
		{
			SettingsRegistry.Register("HDPEAK");
			HDPeakCategory = SettingsRegistry.GetPageId("HDPEAK");
			((BaseUnityPlugin)this).Logger.LogInfo((object)("HDPEAK category = " + HDPeakCategory));
			AddAll();
		}

		private void AddAll()
		{
			if (SettingsHandler.Instance == null)
			{
				((BaseUnityPlugin)this).Logger.LogWarning((object)"SettingsHandler 未初始化,延迟添加");
				((MonoBehaviour)this).StartCoroutine(AddLater());
			}
			else
			{
				DoAdd();
				((BaseUnityPlugin)this).Logger.LogInfo((object)"HDPeak 设置已注入");
			}
		}

		private IEnumerator AddLater()
		{
			yield return (object)new WaitForSeconds(1f);
			if (SettingsHandler.Instance == null)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)"SettingsHandler 仍未初始化,放弃");
				yield break;
			}
			DoAdd();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"HDPeak 设置已注入(延迟)");
		}

		private void DoAdd()
		{
			SettingsHandler.Instance.AddSetting((Setting)(object)new AntiAliasingSetting());
			SettingsHandler.Instance.AddSetting((Setting)(object)new AnisotropicSetting());
			SettingsHandler.Instance.AddSetting((Setting)(object)new LodBiasSetting());
			SettingsHandler.Instance.AddSetting((Setting)(object)new ViewDistanceSetting());
			SettingsHandler.Instance.AddSetting((Setting)(object)new OpaqueTextureSetting());
		}
	}
	public class LodBiasSetting : FloatSetting, IExposedSetting
	{
		public string GetDisplayName()
		{
			return "LOD 偏移";
		}

		public string GetCategory()
		{
			return HDPeakPlugin.HDPeakCategory;
		}

		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, 5f);
		}

		public override void ApplyValue()
		{
			QualitySettings.lodBias = ((FloatSetting)this).Value;
		}
	}
	public class OpaqueTextureSetting : BoolSetting, IExposedSetting
	{
		public override LocalizedString OffString => null;

		public override LocalizedString OnString => null;

		public string GetDisplayName()
		{
			return "不透明纹理";
		}

		public string GetCategory()
		{
			return HDPeakPlugin.HDPeakCategory;
		}

		protected override bool GetDefaultValue()
		{
			return false;
		}

		public override void ApplyValue()
		{
			RenderPipelineAsset renderPipeline = QualitySettings.renderPipeline;
			UniversalRenderPipelineAsset val = (UniversalRenderPipelineAsset)(object)((renderPipeline is UniversalRenderPipelineAsset) ? renderPipeline : null);
			if (!((Object)(object)val == (Object)null))
			{
				val.supportsCameraOpaqueTexture = ((BoolSetting)this).Value;
			}
		}
	}
	public class ViewDistanceSetting : FloatSetting, IExposedSetting
	{
		public string GetDisplayName()
		{
			return "视距";
		}

		public string GetCategory()
		{
			return HDPeakPlugin.HDPeakCategory;
		}

		protected override float GetDefaultValue()
		{
			return 1000f;
		}

		protected override float2 GetMinMaxValue()
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			return new float2(100f, 10000f);
		}

		public override void ApplyValue()
		{
			Camera main = Camera.main;
			if (!((Object)(object)main == (Object)null))
			{
				main.farClipPlane = ((FloatSetting)this).Value;
			}
		}
	}
}