using System; 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 BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.Rendering.PostProcessing; using UnityEngine.UI; [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: IgnoresAccessChecksTo("")] [assembly: AssemblyCompany("REPOJP")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("zabuMod")] [assembly: AssemblyTitle("zabuMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.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 BetterView { [BepInPlugin("REPOJP.BetterView", "BetterView", "2.0.0")] public class BetterViewPlugin : BaseUnityPlugin { internal class BetterViewRuntime : MonoBehaviour { private const float ZoomHoldSeconds = 0.15f; private const int ZoomPriority = 0; private const int ZoomDisplayFontSize = 28; private float visualApplyTimer; private float glowApplyTimer; private bool zoomKeyWasDown; private CameraZoom boundedCameraZoom; private bool hasOriginalMinimumZoom; private float originalMinimumZoom; private float zoomBoundsRestoreTimer; private Canvas zoomDisplayCanvas; private Text zoomDisplayText; private float zoomDisplayTimer; private void Update() { try { HandleDebugToggleKey(); UpdatePeriodicApply(); UpdateZoom(); } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: Runtime Update\n" + ex)); } } } private void UpdatePeriodicApply() { visualApplyTimer -= Time.deltaTime; if (visualApplyTimer <= 0f) { visualApplyTimer = 0.5f; ApplyDistanceSettings(force: false); ApplyPostProcessingSettings(PostProcessing.Instance, beforeUpdate: false); ApplyRenderTextureSettings(force: false); } glowApplyTimer -= Time.deltaTime; if (glowApplyTimer <= 0f) { glowApplyTimer = 2f; ApplyGlowSettings(force: false); } } private void UpdateZoom() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) UpdateZoomBoundsRestoreTimer(); bool key = Input.GetKey(GetKeyCode(ZoomKey, (KeyCode)122)); if (!key && !zoomKeyWasDown) { HideZoomRateDisplay(); return; } if (!CanApplyNow()) { ResetZoomStateOnly(); return; } if (!key) { StartZoomRelease(); return; } if (ApplyWheelZoomAdjustment()) { ShowZoomRateDisplay(Clamp(GetFloat(ZoomRate, 5f), 1f, 20f)); } UpdateZoomRateDisplayTimer(); CameraZoom instance = CameraZoom.Instance; if ((Object)(object)instance == (Object)null) { RestoreCameraZoomBounds(); zoomKeyWasDown = true; return; } float num = ((instance.playerZoomDefault > 0f) ? instance.playerZoomDefault : 60f); float num2 = Clamp(GetFloat(ZoomRate, 5f), 1f, 20f); float num3 = Clamp(GetFloat(ZoomMinimumFov, 0.1f), 0.1f, 30f); float num4 = Mathf.Clamp(num / num2, num3, instance.MaximumZoom); EnsureCameraZoomBounds(instance, num4, num3); instance.OverrideZoomSet(num4, 0.15f, Clamp(GetFloat(ZoomSmoothInSpeed, 6f), 0.1f, 60f), Clamp(GetFloat(ZoomSmoothOutSpeed, 5f), 0.1f, 60f), ((Component)this).gameObject, 0); zoomKeyWasDown = true; } internal void ResetZoomStateOnly() { zoomKeyWasDown = false; zoomBoundsRestoreTimer = 0f; RestoreCameraZoomBounds(); HideZoomRateDisplay(); } private void StartZoomRelease() { zoomKeyWasDown = false; HideZoomRateDisplay(); if (hasOriginalMinimumZoom) { zoomBoundsRestoreTimer = Mathf.Max(0.25f, 1f / Mathf.Max(Clamp(GetFloat(ZoomSmoothOutSpeed, 5f), 0.1f, 60f), 0.1f) + 0.2f); } } private void UpdateZoomBoundsRestoreTimer() { if (!(zoomBoundsRestoreTimer <= 0f)) { zoomBoundsRestoreTimer -= Time.deltaTime; if (zoomBoundsRestoreTimer <= 0f) { RestoreCameraZoomBounds(); } } } private bool ApplyWheelZoomAdjustment() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) float y = Input.mouseScrollDelta.y; if (Mathf.Abs(y) <= 0.001f) { return false; } float num = Clamp(GetFloat(ZoomRate, 5f), 1f, 20f); float num2 = Clamp(GetFloat(ZoomWheelStep, 0.1f), 0.1f, 5f); float num3 = num + ((y > 0f) ? num2 : (0f - num2)); num3 = Mathf.Round(num3 * 10f) / 10f; num3 = Clamp(num3, 1f, 20f); if (NearlyEqual(num, num3)) { return false; } if (ZoomRate != null) { ZoomRate.Value = num3; if (GetBool(SaveWheelZoomToConfig, fallback: true) && configFile != null) { configFile.Save(); } } return true; } private void EnsureCameraZoomBounds(CameraZoom cameraZoom, float targetZoom, float minFov) { if ((Object)(object)cameraZoom == (Object)null) { RestoreCameraZoomBounds(); return; } if ((Object)(object)boundedCameraZoom != (Object)null && (Object)(object)boundedCameraZoom != (Object)(object)cameraZoom) { RestoreCameraZoomBounds(); } if (!hasOriginalMinimumZoom) { boundedCameraZoom = cameraZoom; originalMinimumZoom = cameraZoom.MinimumZoom; hasOriginalMinimumZoom = true; } float num = Mathf.Max(minFov, targetZoom - 0.1f); if (cameraZoom.MinimumZoom > num) { cameraZoom.MinimumZoom = num; } } private void RestoreCameraZoomBounds() { if (hasOriginalMinimumZoom && (Object)(object)boundedCameraZoom != (Object)null) { boundedCameraZoom.MinimumZoom = originalMinimumZoom; } zoomBoundsRestoreTimer = 0f; boundedCameraZoom = null; hasOriginalMinimumZoom = false; originalMinimumZoom = 0f; } private void EnsureZoomRateDisplay() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Expected O, but got Unknown //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)zoomDisplayCanvas != (Object)null) || !((Object)(object)zoomDisplayText != (Object)null)) { GameObject val = new GameObject("BetterViewZoomDisplayCanvas"); val.transform.parent = null; ((Object)val).hideFlags = (HideFlags)61; Object.DontDestroyOnLoad((Object)(object)val); zoomDisplayCanvas = val.AddComponent(); zoomDisplayCanvas.renderMode = (RenderMode)0; zoomDisplayCanvas.sortingOrder = 32767; CanvasScaler val2 = val.AddComponent(); val2.uiScaleMode = (ScaleMode)1; val2.referenceResolution = new Vector2(1920f, 1080f); val2.matchWidthOrHeight = 0.5f; GameObject val3 = new GameObject("BetterViewZoomDisplayText"); val3.transform.SetParent(val.transform, false); RectTransform val4 = val3.AddComponent(); val4.anchorMin = new Vector2(0.5f, 0f); val4.anchorMax = new Vector2(0.5f, 0f); val4.pivot = new Vector2(0.5f, 0f); val4.anchoredPosition = new Vector2(0f, 120f); val4.sizeDelta = new Vector2(640f, 64f); zoomDisplayText = val3.AddComponent(); zoomDisplayText.font = Resources.GetBuiltinResource("Arial.ttf"); zoomDisplayText.fontSize = 28; zoomDisplayText.alignment = (TextAnchor)4; ((Graphic)zoomDisplayText).color = Color.white; ((Graphic)zoomDisplayText).raycastTarget = false; Shadow val5 = val3.AddComponent(); val5.effectColor = new Color(0f, 0f, 0f, 0.85f); val5.effectDistance = new Vector2(2f, -2f); ((Behaviour)zoomDisplayCanvas).enabled = false; } } private void ShowZoomRateDisplay(float zoomRate) { EnsureZoomRateDisplay(); if (!((Object)(object)zoomDisplayCanvas == (Object)null) && !((Object)(object)zoomDisplayText == (Object)null)) { zoomDisplayText.text = "Zoom x" + zoomRate.ToString("0.0"); zoomDisplayTimer = Clamp(GetFloat(ZoomDisplaySeconds, 1.25f), 0f, 10f); ((Behaviour)zoomDisplayCanvas).enabled = zoomDisplayTimer > 0f; } } private void UpdateZoomRateDisplayTimer() { if (!((Object)(object)zoomDisplayCanvas == (Object)null) && ((Behaviour)zoomDisplayCanvas).enabled) { zoomDisplayTimer -= Time.deltaTime; if (zoomDisplayTimer <= 0f) { HideZoomRateDisplay(); } } } private void HideZoomRateDisplay() { zoomDisplayTimer = 0f; if ((Object)(object)zoomDisplayCanvas != (Object)null) { ((Behaviour)zoomDisplayCanvas).enabled = false; } } } private struct PostProcessingState { internal int LevelId; internal float BloomIntensity; internal float BloomThreshold; internal float LensDistortionIntensity; internal Color VignetteColor; internal float VignetteIntensity; internal float VignetteSmoothness; internal float ColorTemperature; internal Color ColorFilter; internal float Saturation; internal float Contrast; internal float GrainIntensity; internal float GrainSize; internal float MotionBlurShutter; internal float ChromaticAberrationIntensity; } private struct PropLightState { internal float OriginalIntensity; internal float CurrentIntensity; internal float OriginalRange; } private struct PropEmissionState { internal Color OriginalEmission; internal Color CurrentEmission; } private struct ItemLightState { internal float OriginalIntensity; internal float OriginalRange; internal float OriginalFresnel; internal float CurrentIntensity; internal float CurrentRange; } [HarmonyPatch(typeof(EnvironmentDirector), "Setup")] internal static class EnvironmentDirectorSetupPatch { private static void Postfix() { ApplyDistanceSettings(force: true); } } [HarmonyPatch(typeof(EnvironmentDirector), "Update")] internal static class EnvironmentDirectorUpdatePatch { private static void Postfix() { ApplyDistanceSettings(force: false); } } [HarmonyPatch(typeof(SpectateCamera), "StateNormal")] internal static class SpectateCameraStateNormalPatch { private static void Postfix() { ApplyDistanceSettings(force: false); } } [HarmonyPatch(typeof(SpectateCamera), "StopSpectate")] internal static class SpectateCameraStopSpectatePatch { private static void Postfix() { ApplyDistanceSettings(force: true); } } [HarmonyPatch(typeof(PostProcessing), "Setup")] internal static class PostProcessingSetupPatch { private static void Postfix(PostProcessing __instance) { CapturePostProcessingState(__instance, force: true); ApplyPostProcessingSettings(__instance, beforeUpdate: false); } } [HarmonyPatch(typeof(PostProcessing), "Update")] internal static class PostProcessingUpdatePatch { private static void Prefix(PostProcessing __instance) { ApplyPostProcessingSettings(__instance, beforeUpdate: true); } private static void Postfix(PostProcessing __instance) { ApplyPostProcessingSettings(__instance, beforeUpdate: false); } } [HarmonyPatch(typeof(PostProcessing), "LensDistortionOverride")] internal static class PostProcessingLensDistortionOverridePatch { private static void Prefix(ref float _intensity) { if (CanApplyNow()) { _intensity *= Clamp(GetFloat(DynamicLensDistortionMultiplier, 0.25f), 0f, 10f); } } } [HarmonyPatch(typeof(PostProcessing), "VignetteOverride")] internal static class PostProcessingVignetteOverridePatch { private static void Prefix(ref float _intensity, ref float _smoothness) { if (CanApplyNow()) { _intensity *= Clamp(GetFloat(DynamicVignetteIntensityMultiplier, 0.4f), 0f, 10f); _smoothness *= Clamp(GetFloat(DynamicVignetteSmoothnessMultiplier, 1f), 0f, 10f); } } } [HarmonyPatch(typeof(PostProcessing), "BloomOverride")] internal static class PostProcessingBloomOverridePatch { private static void Prefix(ref float _intensity, ref float _threshold) { if (CanApplyNow()) { _intensity *= Clamp(GetFloat(DynamicBloomIntensityMultiplier, 0.75f), 0f, 10f); _threshold *= Clamp(GetFloat(DynamicBloomThresholdMultiplier, 1.2f), 0f, 10f); } } } [HarmonyPatch(typeof(PostProcessing), "SaturationOverride")] internal static class PostProcessingSaturationOverridePatch { private static void Prefix(ref float _amount) { if (CanApplyNow()) { _amount *= Clamp(GetFloat(DynamicSaturationAmountMultiplier, 0.5f), 0f, 10f); } } } [HarmonyPatch(typeof(PostProcessing), "ContrastOverride")] internal static class PostProcessingContrastOverridePatch { private static void Prefix(ref float _amount) { if (CanApplyNow()) { _amount *= Clamp(GetFloat(DynamicContrastAmountMultiplier, 0.5f), 0f, 10f); } } } [HarmonyPatch(typeof(PostProcessing), "GrainIntensityOverride")] internal static class PostProcessingGrainIntensityOverridePatch { private static void Prefix(ref float _amount) { if (CanApplyNow()) { _amount *= Clamp(GetFloat(DynamicGrainIntensityMultiplier, 0.35f), 0f, 10f); } } } [HarmonyPatch(typeof(GraphicsManager), "UpdateAll")] internal static class GraphicsManagerUpdateAllPatch { private static void Postfix() { ApplyPostProcessingSettings(PostProcessing.Instance, beforeUpdate: false); ApplyRenderTextureSettings(force: true); } } [HarmonyPatch(typeof(GraphicsManager), "UpdateRenderSize")] internal static class GraphicsManagerUpdateRenderSizePatch { private static void Postfix() { ApplyRenderTextureSettings(force: true); } } [HarmonyPatch(typeof(GraphicsManager), "UpdateGlitchLoop")] internal static class GraphicsManagerUpdateGlitchLoopPatch { private static void Postfix() { if (CanApplyNow() && graphicsGlitchLoopField != null && (Object)(object)GraphicsManager.instance != (Object)null && Clamp(GetFloat(CameraGlitchChanceMultiplier, 0.15f), 0f, 1f) <= 0f) { graphicsGlitchLoopField.SetValue(GraphicsManager.instance, false); } } } [HarmonyPatch(typeof(RenderTextureMain), "Start")] internal static class RenderTextureMainStartPatch { private static void Postfix() { ApplyRenderTextureSettings(force: true); } } [HarmonyPatch(typeof(RenderTextureMain), "Update")] internal static class RenderTextureMainUpdatePatch { private static void Postfix() { ApplyRenderTextureSettings(force: false); } } [HarmonyPatch(typeof(RenderTextureMain), "ChangeResolution")] internal static class RenderTextureMainChangeResolutionPatch { private static bool Prefix() { if (!CanApplyNow()) { return true; } return !GetBool(BlockTemporaryResolutionDrop, fallback: true); } } [HarmonyPatch(typeof(RenderTextureMain), "ChangeSize")] internal static class RenderTextureMainChangeSizePatch { private static bool Prefix() { if (!CanApplyNow()) { return true; } return !GetBool(BlockRenderTextureSizeChange, fallback: true); } } [HarmonyPatch(typeof(RenderTextureMain), "Shake")] internal static class RenderTextureMainShakePatch { private static bool Prefix() { if (!CanApplyNow()) { return true; } return !GetBool(BlockRenderTextureShake, fallback: true); } } [HarmonyPatch(typeof(VideoOverlay), "Override")] internal static class VideoOverlayOverridePatch { private static void Prefix(ref float amount) { if (CanApplyNow()) { amount *= Clamp(GetFloat(VideoOverlayAmountMultiplier, 0.3f), 0f, 10f); } } } [HarmonyPatch(typeof(CameraGlitch), "PlayLong")] internal static class CameraGlitchPlayLongPatch { private static bool Prefix() { return AllowCameraGlitch(doNotLook: false); } } [HarmonyPatch(typeof(CameraGlitch), "PlayShort")] internal static class CameraGlitchPlayShortPatch { private static bool Prefix() { return AllowCameraGlitch(doNotLook: false); } } [HarmonyPatch(typeof(CameraGlitch), "PlayTiny")] internal static class CameraGlitchPlayTinyPatch { private static bool Prefix() { return AllowCameraGlitch(doNotLook: false); } } [HarmonyPatch(typeof(CameraGlitch), "DoNotLookEffectSet")] internal static class CameraGlitchDoNotLookEffectSetPatch { private static bool Prefix() { return AllowCameraGlitch(doNotLook: true); } } [HarmonyPatch(typeof(PropLight), "Awake")] internal static class PropLightAwakePatch { private static void Postfix(PropLight __instance) { ApplyPropLight(__instance); } } [HarmonyPatch(typeof(PropLight), "Start")] internal static class PropLightStartPatch { private static void Postfix(PropLight __instance) { ApplyPropLight(__instance); } } [HarmonyPatch(typeof(PropLightEmission), "Awake")] internal static class PropLightEmissionAwakePatch { private static void Postfix(PropLightEmission __instance) { ApplyPropEmission(__instance); } } [HarmonyPatch(typeof(ItemLight), "Start")] internal static class ItemLightStartPatch { private static void Postfix(ItemLight __instance) { ApplyItemLight(__instance); } } [HarmonyPatch(typeof(LightManager), "Setup")] internal static class LightManagerSetupPatch { private static void Postfix() { ApplyGlowSettings(force: true); } } public const string PluginGuid = "REPOJP.BetterView"; public const string PluginName = "BetterView"; public const string PluginVersion = "2.0.0"; internal static ManualLogSource Log; private static Harmony harmony; private static BetterViewRuntime runtime; private static ConfigFile configFile; private static FieldInfo environmentMainCameraField; private static FieldInfo postBloomIntensityField; private static FieldInfo postBloomThresholdField; private static FieldInfo postLensDistortionIntensityField; private static FieldInfo postColorGradingSaturationField; private static FieldInfo postColorGradingContrastField; private static FieldInfo postVignetteColorField; private static FieldInfo postVignetteIntensityField; private static FieldInfo postVignetteSmoothnessField; private static FieldInfo postGrainIntensityDefaultField; private static FieldInfo postGrainSizeDefaultField; private static FieldInfo postMotionBlurDefaultField; private static FieldInfo graphicsGlitchLoopField; private static FieldInfo renderTextureWidthOriginalField; private static FieldInfo renderTextureHeightOriginalField; private static FieldInfo renderTextureShakeActiveField; private static FieldInfo renderTextureShakeTimerField; private static FieldInfo renderTextureSizeResetTimerField; private static FieldInfo renderTextureOriginalSizeField; private static FieldInfo propLightComponentField; private static FieldInfo propLightOriginalIntensityField; private static FieldInfo propEmissionMaterialField; private static FieldInfo propEmissionOriginalEmissionField; private static FieldInfo itemLightIntensityOriginalField; private static FieldInfo itemLightRangeOriginalField; private static FieldInfo itemLightFresnelScaleOriginalField; private static FieldInfo levelFogStartDistanceField; private static FieldInfo levelFogEndDistanceField; private static FieldInfo levelFogColorField; private static FieldInfo levelAmbientColorField; private static FieldInfo levelAmbientColorAdaptationField; private static FieldInfo levelColorTemperatureField; private static FieldInfo levelColorFilterField; private static FieldInfo levelBloomIntensityField; private static FieldInfo levelBloomThresholdField; private static FieldInfo levelLensDistortionIntensityField; private static FieldInfo levelVignetteColorField; private static FieldInfo levelVignetteIntensityField; private static FieldInfo levelVignetteSmoothnessField; private static readonly Dictionary postProcessingStates = new Dictionary(); private static readonly Dictionary propLightStates = new Dictionary(); private static readonly Dictionary propEmissionStates = new Dictionary(); private static readonly Dictionary itemLightStates = new Dictionary(); private static bool debugForceVanillaView; private static bool hasDistanceState; private static int distanceCameraId = -1; private static float distanceOriginalFarClip = -1f; private static float originalFogStart = -1f; private static float originalFogEnd = -1f; private static Color originalFogColor = Color.black; private static bool originalFogEnabled; private static float originalShadowDistance = -1f; private static bool hasRenderTextureState; private static float originalTextureWidthOriginal; private static float originalTextureHeightOriginal; private static Vector3 originalRenderTextureSize; internal static ConfigEntry EnableMod; internal static ConfigEntry ApplyToLevel; internal static ConfigEntry ApplyToArena; internal static ConfigEntry ApplyToSpectateCamera; internal static ConfigEntry EnableDebugToggleKey; internal static ConfigEntry DebugToggleKey; internal static ConfigEntry FogStartDistance; internal static ConfigEntry FogEndDistance; internal static ConfigEntry CameraFarClipDistance; internal static ConfigEntry ShadowDistance; internal static ConfigEntry DisableFogCompletely; internal static ConfigEntry FogColorBlendToBlack; internal static ConfigEntry AmbientLightMultiplier; internal static ConfigEntry AmbientLightMaxValue; internal static ConfigEntry ColorTemperatureOffset; internal static ConfigEntry ColorFilterBlendToWhite; internal static ConfigEntry SaturationOffset; internal static ConfigEntry ContrastOffset; internal static ConfigEntry BloomIntensityMultiplier; internal static ConfigEntry BloomThresholdMultiplier; internal static ConfigEntry LensDistortionMultiplier; internal static ConfigEntry VignetteIntensityMultiplier; internal static ConfigEntry VignetteSmoothnessMultiplier; internal static ConfigEntry MotionBlurShutterMultiplier; internal static ConfigEntry ChromaticAberrationMultiplier; internal static ConfigEntry GrainIntensityMultiplier; internal static ConfigEntry GrainSizeMultiplier; internal static ConfigEntry DynamicLensDistortionMultiplier; internal static ConfigEntry DynamicVignetteIntensityMultiplier; internal static ConfigEntry DynamicVignetteSmoothnessMultiplier; internal static ConfigEntry DynamicBloomIntensityMultiplier; internal static ConfigEntry DynamicBloomThresholdMultiplier; internal static ConfigEntry DynamicSaturationAmountMultiplier; internal static ConfigEntry DynamicContrastAmountMultiplier; internal static ConfigEntry DynamicGrainIntensityMultiplier; internal static ConfigEntry VideoOverlayAmountMultiplier; internal static ConfigEntry CameraGlitchChanceMultiplier; internal static ConfigEntry DoNotLookGlitchChanceMultiplier; internal static ConfigEntry RenderResolutionScale; internal static ConfigEntry BlockTemporaryResolutionDrop; internal static ConfigEntry BlockRenderTextureShake; internal static ConfigEntry BlockRenderTextureSizeChange; internal static ConfigEntry EnhancePropLights; internal static ConfigEntry PropLightIntensityMultiplier; internal static ConfigEntry PropLightRangeMultiplier; internal static ConfigEntry EnhancePropEmissions; internal static ConfigEntry PropEmissionMultiplier; internal static ConfigEntry PropEmissionMaxValue; internal static ConfigEntry EnhanceItemLights; internal static ConfigEntry ItemLightIntensityMultiplier; internal static ConfigEntry ItemLightRangeMultiplier; internal static ConfigEntry ItemFresnelMultiplier; internal static ConfigEntry ItemFresnelMaxValue; internal static ConfigEntry ZoomKey; internal static ConfigEntry ZoomRate; internal static ConfigEntry SaveWheelZoomToConfig; internal static ConfigEntry ZoomWheelStep; internal static ConfigEntry ZoomSmoothInSpeed; internal static ConfigEntry ZoomSmoothOutSpeed; internal static ConfigEntry ZoomMinimumFov; internal static ConfigEntry ZoomDisplaySeconds; private void Awake() { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown try { Log = ((BaseUnityPlugin)this).Logger; configFile = ((BaseUnityPlugin)this).Config; ((Component)this).transform.parent = null; ((Object)this).hideFlags = (HideFlags)61; Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); BindConfigEntries(); CacheReflectionFields(); harmony = new Harmony("REPOJP.BetterView"); harmony.PatchAll(typeof(EnvironmentDirectorSetupPatch)); harmony.PatchAll(typeof(EnvironmentDirectorUpdatePatch)); harmony.PatchAll(typeof(SpectateCameraStateNormalPatch)); harmony.PatchAll(typeof(SpectateCameraStopSpectatePatch)); harmony.PatchAll(typeof(PostProcessingSetupPatch)); harmony.PatchAll(typeof(PostProcessingUpdatePatch)); harmony.PatchAll(typeof(PostProcessingLensDistortionOverridePatch)); harmony.PatchAll(typeof(PostProcessingVignetteOverridePatch)); harmony.PatchAll(typeof(PostProcessingBloomOverridePatch)); harmony.PatchAll(typeof(PostProcessingSaturationOverridePatch)); harmony.PatchAll(typeof(PostProcessingContrastOverridePatch)); harmony.PatchAll(typeof(PostProcessingGrainIntensityOverridePatch)); harmony.PatchAll(typeof(GraphicsManagerUpdateAllPatch)); harmony.PatchAll(typeof(GraphicsManagerUpdateRenderSizePatch)); harmony.PatchAll(typeof(GraphicsManagerUpdateGlitchLoopPatch)); harmony.PatchAll(typeof(RenderTextureMainStartPatch)); harmony.PatchAll(typeof(RenderTextureMainUpdatePatch)); harmony.PatchAll(typeof(RenderTextureMainChangeResolutionPatch)); harmony.PatchAll(typeof(RenderTextureMainChangeSizePatch)); harmony.PatchAll(typeof(RenderTextureMainShakePatch)); harmony.PatchAll(typeof(VideoOverlayOverridePatch)); harmony.PatchAll(typeof(CameraGlitchPlayLongPatch)); harmony.PatchAll(typeof(CameraGlitchPlayShortPatch)); harmony.PatchAll(typeof(CameraGlitchPlayTinyPatch)); harmony.PatchAll(typeof(CameraGlitchDoNotLookEffectSetPatch)); harmony.PatchAll(typeof(PropLightAwakePatch)); harmony.PatchAll(typeof(PropLightStartPatch)); harmony.PatchAll(typeof(PropLightEmissionAwakePatch)); harmony.PatchAll(typeof(ItemLightStartPatch)); harmony.PatchAll(typeof(LightManagerSetupPatch)); CreateRuntimeController(); Log.LogInfo((object)"Success: BetterView loaded. Version 2.0.0"); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Failure: Awake\n" + ex)); } } private void OnDestroy() { try { if (harmony != null) { harmony.UnpatchSelf(); } } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("Failure: OnDestroy\n" + ex)); } } private void BindConfigEntries() { //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Expected O, but got Unknown //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Expected O, but got Unknown //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Expected O, but got Unknown //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Expected O, but got Unknown //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Expected O, but got Unknown //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Expected O, but got Unknown //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Expected O, but got Unknown //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Expected O, but got Unknown //IL_02f8: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Expected O, but got Unknown //IL_0335: Unknown result type (might be due to invalid IL or missing references) //IL_033f: Expected O, but got Unknown //IL_0372: Unknown result type (might be due to invalid IL or missing references) //IL_037c: Expected O, but got Unknown //IL_03af: Unknown result type (might be due to invalid IL or missing references) //IL_03b9: Expected O, but got Unknown //IL_03ec: Unknown result type (might be due to invalid IL or missing references) //IL_03f6: Expected O, but got Unknown //IL_0429: Unknown result type (might be due to invalid IL or missing references) //IL_0433: Expected O, but got Unknown //IL_0466: Unknown result type (might be due to invalid IL or missing references) //IL_0470: Expected O, but got Unknown //IL_04a3: Unknown result type (might be due to invalid IL or missing references) //IL_04ad: Expected O, but got Unknown //IL_04e0: Unknown result type (might be due to invalid IL or missing references) //IL_04ea: Expected O, but got Unknown //IL_051d: Unknown result type (might be due to invalid IL or missing references) //IL_0527: Expected O, but got Unknown //IL_055a: Unknown result type (might be due to invalid IL or missing references) //IL_0564: Expected O, but got Unknown //IL_0597: Unknown result type (might be due to invalid IL or missing references) //IL_05a1: Expected O, but got Unknown //IL_05d4: Unknown result type (might be due to invalid IL or missing references) //IL_05de: Expected O, but got Unknown //IL_0611: Unknown result type (might be due to invalid IL or missing references) //IL_061b: Expected O, but got Unknown //IL_064e: Unknown result type (might be due to invalid IL or missing references) //IL_0658: Expected O, but got Unknown //IL_068b: Unknown result type (might be due to invalid IL or missing references) //IL_0695: Expected O, but got Unknown //IL_06c8: Unknown result type (might be due to invalid IL or missing references) //IL_06d2: Expected O, but got Unknown //IL_0705: Unknown result type (might be due to invalid IL or missing references) //IL_070f: Expected O, but got Unknown //IL_0742: Unknown result type (might be due to invalid IL or missing references) //IL_074c: Expected O, but got Unknown //IL_077f: Unknown result type (might be due to invalid IL or missing references) //IL_0789: Expected O, but got Unknown //IL_07bc: Unknown result type (might be due to invalid IL or missing references) //IL_07c6: Expected O, but got Unknown //IL_07f9: Unknown result type (might be due to invalid IL or missing references) //IL_0803: Expected O, but got Unknown //IL_0836: Unknown result type (might be due to invalid IL or missing references) //IL_0840: Expected O, but got Unknown //IL_0873: Unknown result type (might be due to invalid IL or missing references) //IL_087d: Expected O, but got Unknown //IL_0930: Unknown result type (might be due to invalid IL or missing references) //IL_093a: Expected O, but got Unknown //IL_096d: Unknown result type (might be due to invalid IL or missing references) //IL_0977: Expected O, but got Unknown //IL_09ca: Unknown result type (might be due to invalid IL or missing references) //IL_09d4: Expected O, but got Unknown //IL_0a07: Unknown result type (might be due to invalid IL or missing references) //IL_0a11: Expected O, but got Unknown //IL_0a64: Unknown result type (might be due to invalid IL or missing references) //IL_0a6e: Expected O, but got Unknown //IL_0aa1: Unknown result type (might be due to invalid IL or missing references) //IL_0aab: Expected O, but got Unknown //IL_0ade: Unknown result type (might be due to invalid IL or missing references) //IL_0ae8: Expected O, but got Unknown //IL_0b1b: Unknown result type (might be due to invalid IL or missing references) //IL_0b25: Expected O, but got Unknown //IL_0b79: Unknown result type (might be due to invalid IL or missing references) //IL_0b83: Expected O, but got Unknown //IL_0bd6: Unknown result type (might be due to invalid IL or missing references) //IL_0be0: Expected O, but got Unknown //IL_0c13: Unknown result type (might be due to invalid IL or missing references) //IL_0c1d: Expected O, but got Unknown //IL_0c50: Unknown result type (might be due to invalid IL or missing references) //IL_0c5a: Expected O, but got Unknown //IL_0c8d: Unknown result type (might be due to invalid IL or missing references) //IL_0c97: Expected O, but got Unknown //IL_0cca: Unknown result type (might be due to invalid IL or missing references) //IL_0cd4: Expected O, but got Unknown EnableMod = ((BaseUnityPlugin)this).Config.Bind("General", "EnableMod", true, "Enable this mod.このMODを有効化"); ApplyToLevel = ((BaseUnityPlugin)this).Config.Bind("General", "ApplyToLevel", true, "Apply settings in normal levels.通常レベルで設定を適用"); ApplyToArena = ((BaseUnityPlugin)this).Config.Bind("General", "ApplyToArena", true, "Apply settings in arenas.アリーナで設定を適用"); ApplyToSpectateCamera = ((BaseUnityPlugin)this).Config.Bind("General", "ApplyToSpectateCamera", true, "Apply view settings while spectating.観戦カメラにも視界設定を適用"); EnableDebugToggleKey = ((BaseUnityPlugin)this).Config.Bind("General", "EnableDebugToggleKey", false, "Enable a temporary vanilla-view toggle key.一時的なバニラ表示切替キーを有効化"); DebugToggleKey = ((BaseUnityPlugin)this).Config.Bind("General", "DebugToggleKey", (KeyCode)102, "Toggle key used with Shift when EnableDebugToggleKey is true.EnableDebugToggleKey有効時にShiftと同時押しする切替キー"); FogStartDistance = ((BaseUnityPlugin)this).Config.Bind("ClearDistance", "FogStartDistance", 180f, new ConfigDescription("Linear fog start distance.線形Fog開始距離", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 1000f), Array.Empty())); FogEndDistance = ((BaseUnityPlugin)this).Config.Bind("ClearDistance", "FogEndDistance", 300f, new ConfigDescription("Linear fog end distance.線形Fog終了距離", (AcceptableValueBase)(object)new AcceptableValueRange(1f, 1500f), Array.Empty())); CameraFarClipDistance = ((BaseUnityPlugin)this).Config.Bind("ClearDistance", "CameraFarClipDistance", 350f, new ConfigDescription("Camera far clip distance.カメラ描画距離", (AcceptableValueBase)(object)new AcceptableValueRange(1f, 2000f), Array.Empty())); ShadowDistance = ((BaseUnityPlugin)this).Config.Bind("ClearDistance", "ShadowDistance", 100f, new ConfigDescription("Unity shadow distance.影の描画距離", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 500f), Array.Empty())); DisableFogCompletely = ((BaseUnityPlugin)this).Config.Bind("ClearDistance", "DisableFogCompletely", false, "Disable RenderSettings fog completely.REPOのFog自体を完全無効化"); FogColorBlendToBlack = ((BaseUnityPlugin)this).Config.Bind("ClearDistance", "FogColorBlendToBlack", 0f, new ConfigDescription("Blend fog color to black. 0 keeps vanilla. Fog色を黒へ寄せる割合。0でバニラ", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 1f), Array.Empty())); AmbientLightMultiplier = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "AmbientLightMultiplier", 1.35f, new ConfigDescription("Ambient light brightness multiplier.環境光の明るさ倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); AmbientLightMaxValue = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "AmbientLightMaxValue", 1f, new ConfigDescription("Maximum RGB value after ambient multiplier.環境光補正後のRGB最大値", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 5f), Array.Empty())); ColorTemperatureOffset = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "ColorTemperatureOffset", 0f, new ConfigDescription("Color temperature offset.色温度の加算値", (AcceptableValueBase)(object)new AcceptableValueRange(-100f, 100f), Array.Empty())); ColorFilterBlendToWhite = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "ColorFilterBlendToWhite", 0.08f, new ConfigDescription("Blend level color filter toward white.レベル色フィルターを白へ寄せる割合", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 1f), Array.Empty())); SaturationOffset = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "SaturationOffset", 0f, new ConfigDescription("Color grading saturation offset.彩度の加算値", (AcceptableValueBase)(object)new AcceptableValueRange(-100f, 100f), Array.Empty())); ContrastOffset = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "ContrastOffset", 5f, new ConfigDescription("Color grading contrast offset.コントラストの加算値", (AcceptableValueBase)(object)new AcceptableValueRange(-100f, 100f), Array.Empty())); BloomIntensityMultiplier = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "BloomIntensityMultiplier", 0.75f, new ConfigDescription("Bloom intensity multiplier. Bloom強度倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); BloomThresholdMultiplier = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "BloomThresholdMultiplier", 1.2f, new ConfigDescription("Bloom threshold multiplier. Bloomしきい値倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); LensDistortionMultiplier = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "LensDistortionMultiplier", 0f, new ConfigDescription("Lens distortion multiplier. 0 disables it.レンズ歪み倍率。0で無効化", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); VignetteIntensityMultiplier = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "VignetteIntensityMultiplier", 0.25f, new ConfigDescription("Vignette intensity multiplier.ビネット強度倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); VignetteSmoothnessMultiplier = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "VignetteSmoothnessMultiplier", 1f, new ConfigDescription("Vignette smoothness multiplier.ビネット滑らかさ倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); MotionBlurShutterMultiplier = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "MotionBlurShutterMultiplier", 0f, new ConfigDescription("Motion blur shutter multiplier. 0 disables it.モーションブラー倍率。0で無効化", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); ChromaticAberrationMultiplier = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "ChromaticAberrationMultiplier", 0f, new ConfigDescription("Chromatic aberration multiplier. 0 disables it.色収差倍率。0で無効化", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); GrainIntensityMultiplier = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "GrainIntensityMultiplier", 0.25f, new ConfigDescription("Grain intensity multiplier.粒状ノイズ強度倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); GrainSizeMultiplier = ((BaseUnityPlugin)this).Config.Bind("CleanVisual", "GrainSizeMultiplier", 1f, new ConfigDescription("Grain size multiplier.粒状ノイズサイズ倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); DynamicLensDistortionMultiplier = ((BaseUnityPlugin)this).Config.Bind("DynamicEffects", "DynamicLensDistortionMultiplier", 0.25f, new ConfigDescription("Temporary lens distortion override multiplier.一時レンズ歪み演出倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); DynamicVignetteIntensityMultiplier = ((BaseUnityPlugin)this).Config.Bind("DynamicEffects", "DynamicVignetteIntensityMultiplier", 0.4f, new ConfigDescription("Temporary vignette intensity override multiplier.一時ビネット強度倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); DynamicVignetteSmoothnessMultiplier = ((BaseUnityPlugin)this).Config.Bind("DynamicEffects", "DynamicVignetteSmoothnessMultiplier", 1f, new ConfigDescription("Temporary vignette smoothness override multiplier.一時ビネット滑らかさ倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); DynamicBloomIntensityMultiplier = ((BaseUnityPlugin)this).Config.Bind("DynamicEffects", "DynamicBloomIntensityMultiplier", 0.75f, new ConfigDescription("Temporary bloom intensity override multiplier.一時Bloom強度倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); DynamicBloomThresholdMultiplier = ((BaseUnityPlugin)this).Config.Bind("DynamicEffects", "DynamicBloomThresholdMultiplier", 1.2f, new ConfigDescription("Temporary bloom threshold override multiplier.一時Bloomしきい値倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); DynamicSaturationAmountMultiplier = ((BaseUnityPlugin)this).Config.Bind("DynamicEffects", "DynamicSaturationAmountMultiplier", 0.5f, new ConfigDescription("Temporary saturation override amount multiplier.一時彩度演出倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); DynamicContrastAmountMultiplier = ((BaseUnityPlugin)this).Config.Bind("DynamicEffects", "DynamicContrastAmountMultiplier", 0.5f, new ConfigDescription("Temporary contrast override amount multiplier.一時コントラスト演出倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); DynamicGrainIntensityMultiplier = ((BaseUnityPlugin)this).Config.Bind("DynamicEffects", "DynamicGrainIntensityMultiplier", 0.35f, new ConfigDescription("Temporary grain intensity override amount multiplier.一時粒状ノイズ演出倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); VideoOverlayAmountMultiplier = ((BaseUnityPlugin)this).Config.Bind("DynamicEffects", "VideoOverlayAmountMultiplier", 0.3f, new ConfigDescription("Video overlay override amount multiplier.映像オーバーレイ演出倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); CameraGlitchChanceMultiplier = ((BaseUnityPlugin)this).Config.Bind("DynamicEffects", "CameraGlitchChanceMultiplier", 0.15f, new ConfigDescription("Non-hurt camera glitch chance multiplier.被弾以外のカメラグリッチ発生倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 1f), Array.Empty())); DoNotLookGlitchChanceMultiplier = ((BaseUnityPlugin)this).Config.Bind("DynamicEffects", "DoNotLookGlitchChanceMultiplier", 0.15f, new ConfigDescription("Do-not-look glitch chance multiplier.見てはいけない系グリッチ発生倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 1f), Array.Empty())); RenderResolutionScale = ((BaseUnityPlugin)this).Config.Bind("RenderTexture", "RenderResolutionScale", 1f, new ConfigDescription("Render texture scale based on the game's large resolution.ゲーム内Large解像度基準の描画テクスチャ倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0.25f, 2f), Array.Empty())); BlockTemporaryResolutionDrop = ((BaseUnityPlugin)this).Config.Bind("RenderTexture", "BlockTemporaryResolutionDrop", true, "Block temporary low-resolution effects.一時的な低解像度化を防止"); BlockRenderTextureShake = ((BaseUnityPlugin)this).Config.Bind("RenderTexture", "BlockRenderTextureShake", true, "Block render texture shake effects.描画テクスチャ揺れを防止"); BlockRenderTextureSizeChange = ((BaseUnityPlugin)this).Config.Bind("RenderTexture", "BlockRenderTextureSizeChange", true, "Block render texture size changes.描画テクスチャ拡縮を防止"); EnhancePropLights = ((BaseUnityPlugin)this).Config.Bind("Glow", "EnhancePropLights", true, "Enhance map prop lights.マップ設置ライトを強化"); PropLightIntensityMultiplier = ((BaseUnityPlugin)this).Config.Bind("Glow", "PropLightIntensityMultiplier", 1.25f, new ConfigDescription("Prop light intensity multiplier.マップ設置ライト強度倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); PropLightRangeMultiplier = ((BaseUnityPlugin)this).Config.Bind("Glow", "PropLightRangeMultiplier", 1.1f, new ConfigDescription("Prop light range multiplier.マップ設置ライト範囲倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 5f), Array.Empty())); EnhancePropEmissions = ((BaseUnityPlugin)this).Config.Bind("Glow", "EnhancePropEmissions", true, "Enhance emissive map objects.発光マップオブジェクトを強化"); PropEmissionMultiplier = ((BaseUnityPlugin)this).Config.Bind("Glow", "PropEmissionMultiplier", 1.25f, new ConfigDescription("Prop emission color multiplier.マップオブジェクト発光色倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); PropEmissionMaxValue = ((BaseUnityPlugin)this).Config.Bind("Glow", "PropEmissionMaxValue", 3f, new ConfigDescription("Maximum HDR emission RGB value.発光HDR RGB最大値", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 20f), Array.Empty())); EnhanceItemLights = ((BaseUnityPlugin)this).Config.Bind("Glow", "EnhanceItemLights", true, "Enhance item lights and fresnel glow.アイテムライトとフレネル発光を強化"); ItemLightIntensityMultiplier = ((BaseUnityPlugin)this).Config.Bind("Glow", "ItemLightIntensityMultiplier", 1.35f, new ConfigDescription("Item light intensity multiplier.アイテムライト強度倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); ItemLightRangeMultiplier = ((BaseUnityPlugin)this).Config.Bind("Glow", "ItemLightRangeMultiplier", 1.1f, new ConfigDescription("Item light range multiplier.アイテムライト範囲倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 5f), Array.Empty())); ItemFresnelMultiplier = ((BaseUnityPlugin)this).Config.Bind("Glow", "ItemFresnelMultiplier", 1.25f, new ConfigDescription("Item fresnel glow multiplier.アイテムフレネル発光倍率", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); ItemFresnelMaxValue = ((BaseUnityPlugin)this).Config.Bind("Glow", "ItemFresnelMaxValue", 3f, new ConfigDescription("Maximum item fresnel value.アイテムフレネル最大値", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 20f), Array.Empty())); ZoomKey = ((BaseUnityPlugin)this).Config.Bind("Zoom", "ZoomKey", (KeyCode)122, "Key used for zoom.ズームに使用するキー"); ZoomRate = ((BaseUnityPlugin)this).Config.Bind("Zoom", "ZoomRate", 5f, new ConfigDescription("Zoom multiplier.ズーム倍率", (AcceptableValueBase)(object)new AcceptableValueRange(1f, 20f), Array.Empty())); SaveWheelZoomToConfig = ((BaseUnityPlugin)this).Config.Bind("Zoom", "SaveWheelZoomToConfig", true, "Save mouse wheel zoom changes to config.ホイールで変更したZoom倍率をConfigへ保存"); ZoomWheelStep = ((BaseUnityPlugin)this).Config.Bind("Zoom", "ZoomWheelStep", 0.1f, new ConfigDescription("Zoom multiplier step for mouse wheel.ホイール操作時のZoom倍率増減値", (AcceptableValueBase)(object)new AcceptableValueRange(0.1f, 5f), Array.Empty())); ZoomSmoothInSpeed = ((BaseUnityPlugin)this).Config.Bind("Zoom", "ZoomSmoothInSpeed", 6f, new ConfigDescription("Zoom-in smoothing speed.ズームイン補間速度", (AcceptableValueBase)(object)new AcceptableValueRange(0.1f, 60f), Array.Empty())); ZoomSmoothOutSpeed = ((BaseUnityPlugin)this).Config.Bind("Zoom", "ZoomSmoothOutSpeed", 5f, new ConfigDescription("Zoom-out smoothing speed.ズームアウト補間速度", (AcceptableValueBase)(object)new AcceptableValueRange(0.1f, 60f), Array.Empty())); ZoomMinimumFov = ((BaseUnityPlugin)this).Config.Bind("Zoom", "ZoomMinimumFov", 0.1f, new ConfigDescription("Minimum FOV allowed by the zoom unlock.ズーム下限解除時の最小FOV", (AcceptableValueBase)(object)new AcceptableValueRange(0.1f, 30f), Array.Empty())); ZoomDisplaySeconds = ((BaseUnityPlugin)this).Config.Bind("Zoom", "ZoomDisplaySeconds", 1.25f, new ConfigDescription("Seconds to show the zoom rate text after wheel adjustment.ホイール調整後にZoom倍率を表示する秒数", (AcceptableValueBase)(object)new AcceptableValueRange(0f, 10f), Array.Empty())); } private static void CacheReflectionFields() { environmentMainCameraField = AccessTools.Field(typeof(EnvironmentDirector), "MainCamera"); postBloomIntensityField = AccessTools.Field(typeof(PostProcessing), "bloomIntensity"); postBloomThresholdField = AccessTools.Field(typeof(PostProcessing), "bloomThreshold"); postLensDistortionIntensityField = AccessTools.Field(typeof(PostProcessing), "lensDistortionIntensity"); postColorGradingSaturationField = AccessTools.Field(typeof(PostProcessing), "colorGradingSaturation"); postColorGradingContrastField = AccessTools.Field(typeof(PostProcessing), "colorGradingContrast"); postVignetteColorField = AccessTools.Field(typeof(PostProcessing), "vignetteColor"); postVignetteIntensityField = AccessTools.Field(typeof(PostProcessing), "vignetteIntensity"); postVignetteSmoothnessField = AccessTools.Field(typeof(PostProcessing), "vignetteSmoothness"); postGrainIntensityDefaultField = AccessTools.Field(typeof(PostProcessing), "grainIntensityDefault"); postGrainSizeDefaultField = AccessTools.Field(typeof(PostProcessing), "grainSizeDefault"); postMotionBlurDefaultField = AccessTools.Field(typeof(PostProcessing), "motionBlurDefault"); graphicsGlitchLoopField = AccessTools.Field(typeof(GraphicsManager), "glitchLoop"); renderTextureWidthOriginalField = AccessTools.Field(typeof(RenderTextureMain), "textureWidthOriginal"); renderTextureHeightOriginalField = AccessTools.Field(typeof(RenderTextureMain), "textureHeightOriginal"); renderTextureShakeActiveField = AccessTools.Field(typeof(RenderTextureMain), "shakeActive"); renderTextureShakeTimerField = AccessTools.Field(typeof(RenderTextureMain), "shakeTimer"); renderTextureSizeResetTimerField = AccessTools.Field(typeof(RenderTextureMain), "sizeResetTimer"); renderTextureOriginalSizeField = AccessTools.Field(typeof(RenderTextureMain), "originalSize"); propLightComponentField = AccessTools.Field(typeof(PropLight), "lightComponent"); propLightOriginalIntensityField = AccessTools.Field(typeof(PropLight), "originalIntensity"); propEmissionMaterialField = AccessTools.Field(typeof(PropLightEmission), "material"); propEmissionOriginalEmissionField = AccessTools.Field(typeof(PropLightEmission), "originalEmission"); itemLightIntensityOriginalField = AccessTools.Field(typeof(ItemLight), "lightIntensityOriginal"); itemLightRangeOriginalField = AccessTools.Field(typeof(ItemLight), "lightRangeOriginal"); itemLightFresnelScaleOriginalField = AccessTools.Field(typeof(ItemLight), "fresnelScaleOriginal"); levelFogStartDistanceField = AccessTools.Field(typeof(Level), "FogStartDistance"); levelFogEndDistanceField = AccessTools.Field(typeof(Level), "FogEndDistance"); levelFogColorField = AccessTools.Field(typeof(Level), "FogColor"); levelAmbientColorField = AccessTools.Field(typeof(Level), "AmbientColor"); levelAmbientColorAdaptationField = AccessTools.Field(typeof(Level), "AmbientColorAdaptation"); levelColorTemperatureField = AccessTools.Field(typeof(Level), "ColorTemperature"); levelColorFilterField = AccessTools.Field(typeof(Level), "ColorFilter"); levelBloomIntensityField = AccessTools.Field(typeof(Level), "BloomIntensity"); levelBloomThresholdField = AccessTools.Field(typeof(Level), "BloomThreshold"); levelLensDistortionIntensityField = AccessTools.Field(typeof(Level), "LensDistortionIntensity"); levelVignetteColorField = AccessTools.Field(typeof(Level), "VignetteColor"); levelVignetteIntensityField = AccessTools.Field(typeof(Level), "VignetteIntensity"); levelVignetteSmoothnessField = AccessTools.Field(typeof(Level), "VignetteSmoothness"); } private static void CreateRuntimeController() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown if (!((Object)(object)runtime != (Object)null)) { GameObject val = new GameObject("BetterViewRuntime"); val.transform.parent = null; ((Object)val).hideFlags = (HideFlags)61; Object.DontDestroyOnLoad((Object)(object)val); runtime = val.AddComponent(); } } internal static bool IsModEnabled() { return EnableMod != null && EnableMod.Value && !debugForceVanillaView; } internal static bool CanApplyNow() { try { if (!IsModEnabled()) { return false; } if ((Object)(object)LevelGenerator.Instance == (Object)null || !LevelGenerator.Instance.Generated) { return false; } if (!GetBool(ApplyToSpectateCamera, fallback: true) && IsPlayerSpectating()) { return false; } bool flag = false; bool flag2 = false; try { flag = SemiFunc.RunIsLevel(); } catch { flag = false; } try { flag2 = SemiFunc.RunIsArena(); } catch { flag2 = false; } return (flag && GetBool(ApplyToLevel, fallback: true)) || (flag2 && GetBool(ApplyToArena, fallback: true)); } catch { return false; } } private static bool IsPlayerSpectating() { try { if ((Object)(object)PlayerAvatar.instance != (Object)null) { return PlayerAvatar.instance.spectating; } if ((Object)(object)PlayerController.instance != (Object)null && (Object)(object)PlayerController.instance.playerAvatarScript != (Object)null) { return PlayerController.instance.playerAvatarScript.spectating; } } catch { return false; } return false; } internal static void HandleDebugToggleKey() { //IL_0058: Unknown result type (might be due to invalid IL or missing references) try { if (!GetBool(EnableDebugToggleKey, fallback: false)) { if (debugForceVanillaView) { debugForceVanillaView = false; } } else if ((Input.GetKey((KeyCode)304) || Input.GetKey((KeyCode)303)) && Input.GetKeyDown(GetKeyCode(DebugToggleKey, (KeyCode)102))) { debugForceVanillaView = !debugForceVanillaView; if (debugForceVanillaView) { RestoreDistanceSettings(); RestoreRenderTextureSettings(); RestoreGlowSettings(); RestorePostProcessingState(PostProcessing.Instance); } else { ApplyEverything(force: true); } if (Log != null) { Log.LogInfo((object)("Success: Debug view toggle " + (debugForceVanillaView ? "Vanilla" : "Modded"))); } } } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: HandleDebugToggleKey\n" + ex)); } } } internal static void ApplyEverything(bool force) { ApplyDistanceSettings(force); ApplyPostProcessingSettings(PostProcessing.Instance, beforeUpdate: false); ApplyRenderTextureSettings(force); ApplyGlowSettings(force); } internal static void ApplyDistanceSettings(bool force) { //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Invalid comparison between Unknown and I4 //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) try { if (!CanApplyNow()) { RestoreDistanceSettings(); return; } Camera mainGameplayCamera = GetMainGameplayCamera(); if ((Object)(object)mainGameplayCamera == (Object)null || !((Behaviour)mainGameplayCamera).isActiveAndEnabled) { return; } if (!hasDistanceState || distanceCameraId != ((Object)mainGameplayCamera).GetInstanceID()) { CaptureDistanceState(mainGameplayCamera); } float num = Clamp(GetFloat(FogStartDistance, 180f), 0f, 1000f); float num2 = Clamp(GetFloat(FogEndDistance, 300f), 1f, 1500f); if (num >= num2) { num = Mathf.Max(0f, num2 - 1f); } float num3 = Clamp(GetFloat(CameraFarClipDistance, 350f), 1f, 2000f); if (num3 <= mainGameplayCamera.nearClipPlane + 0.01f) { num3 = mainGameplayCamera.nearClipPlane + 0.01f; } bool @bool = GetBool(DisableFogCompletely, fallback: false); RenderSettings.fog = !@bool; if (!@bool) { if ((int)RenderSettings.fogMode != 1) { RenderSettings.fogMode = (FogMode)1; } RenderSettings.fogStartDistance = num; RenderSettings.fogEndDistance = num2; RenderSettings.fogColor = Color.Lerp(originalFogColor, Color.black, Clamp01(GetFloat(FogColorBlendToBlack, 0f))); } mainGameplayCamera.farClipPlane = num3; QualitySettings.shadowDistance = Clamp(GetFloat(ShadowDistance, 100f), 0f, 500f); } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: ApplyDistanceSettings\n" + ex)); } } } private static void CaptureDistanceState(Camera targetCamera) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) hasDistanceState = true; distanceCameraId = ((Object)targetCamera).GetInstanceID(); distanceOriginalFarClip = targetCamera.farClipPlane; originalFogStart = RenderSettings.fogStartDistance; originalFogEnd = RenderSettings.fogEndDistance; originalFogColor = RenderSettings.fogColor; originalFogEnabled = RenderSettings.fog; originalShadowDistance = QualitySettings.shadowDistance; } internal static void RestoreDistanceSettings() { //IL_0065: Unknown result type (might be due to invalid IL or missing references) try { if (hasDistanceState) { Camera mainGameplayCamera = GetMainGameplayCamera(); if ((Object)(object)mainGameplayCamera != (Object)null && distanceOriginalFarClip > 0f) { mainGameplayCamera.farClipPlane = distanceOriginalFarClip; } RenderSettings.fog = originalFogEnabled; RenderSettings.fogStartDistance = originalFogStart; RenderSettings.fogEndDistance = originalFogEnd; RenderSettings.fogColor = originalFogColor; if (originalShadowDistance >= 0f) { QualitySettings.shadowDistance = originalShadowDistance; } hasDistanceState = false; distanceCameraId = -1; distanceOriginalFarClip = -1f; } } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: RestoreDistanceSettings\n" + ex)); } } } private static Camera GetMainGameplayCamera() { try { if ((Object)(object)EnvironmentDirector.Instance != (Object)null && environmentMainCameraField != null) { object? value = environmentMainCameraField.GetValue(EnvironmentDirector.Instance); Camera val = (Camera)((value is Camera) ? value : null); if ((Object)(object)val != (Object)null) { return val; } } if ((Object)(object)GameDirector.instance != (Object)null && (Object)(object)GameDirector.instance.MainCamera != (Object)null) { return GameDirector.instance.MainCamera; } } catch { } return Camera.main; } internal static void CapturePostProcessingState(PostProcessing postProcessing, bool force) { //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) try { if (!((Object)(object)postProcessing == (Object)null)) { int instanceID = ((Object)postProcessing).GetInstanceID(); Level currentLevel = GetCurrentLevel(); int num = ((!((Object)(object)currentLevel == (Object)null)) ? ((Object)currentLevel).GetInstanceID() : 0); if (force || !postProcessingStates.TryGetValue(instanceID, out var value) || value.LevelId != num) { EnsurePostProcessingComponents(postProcessing); PostProcessingState value2 = default(PostProcessingState); value2.LevelId = num; value2.BloomIntensity = GetLevelFloat(levelBloomIntensityField, currentLevel, GetPrivateFloat(postBloomIntensityField, postProcessing, GetBloomIntensity(postProcessing))); value2.BloomThreshold = GetLevelFloat(levelBloomThresholdField, currentLevel, GetPrivateFloat(postBloomThresholdField, postProcessing, GetBloomThreshold(postProcessing))); value2.LensDistortionIntensity = GetLevelFloat(levelLensDistortionIntensityField, currentLevel, GetPrivateFloat(postLensDistortionIntensityField, postProcessing, GetLensDistortionIntensity(postProcessing))); value2.VignetteColor = GetLevelColor(levelVignetteColorField, currentLevel, GetPrivateColor(postVignetteColorField, postProcessing, GetVignetteColor(postProcessing))); value2.VignetteIntensity = GetLevelFloat(levelVignetteIntensityField, currentLevel, GetPrivateFloat(postVignetteIntensityField, postProcessing, GetVignetteIntensity(postProcessing))); value2.VignetteSmoothness = GetLevelFloat(levelVignetteSmoothnessField, currentLevel, GetPrivateFloat(postVignetteSmoothnessField, postProcessing, GetVignetteSmoothness(postProcessing))); value2.ColorTemperature = GetLevelFloat(levelColorTemperatureField, currentLevel, GetColorTemperature(postProcessing)); value2.ColorFilter = GetLevelColor(levelColorFilterField, currentLevel, GetColorFilter(postProcessing)); value2.Saturation = GetPrivateFloat(postColorGradingSaturationField, postProcessing, GetSaturation(postProcessing)); value2.Contrast = GetPrivateFloat(postColorGradingContrastField, postProcessing, GetContrast(postProcessing)); value2.GrainIntensity = GetPrivateFloat(postGrainIntensityDefaultField, postProcessing, GetGrainIntensity(postProcessing)); value2.GrainSize = GetPrivateFloat(postGrainSizeDefaultField, postProcessing, GetGrainSize(postProcessing)); value2.MotionBlurShutter = GetPrivateFloat(postMotionBlurDefaultField, postProcessing, GetMotionBlurShutter(postProcessing)); value2.ChromaticAberrationIntensity = GetChromaticAberrationIntensity(postProcessing); postProcessingStates[instanceID] = value2; } } } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: CapturePostProcessingState\n" + ex)); } } } internal static void ApplyPostProcessingSettings(PostProcessing postProcessing, bool beforeUpdate) { //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_034d: Unknown result type (might be due to invalid IL or missing references) //IL_034f: Unknown result type (might be due to invalid IL or missing references) //IL_03f2: Unknown result type (might be due to invalid IL or missing references) //IL_03f7: Unknown result type (might be due to invalid IL or missing references) try { if ((Object)(object)postProcessing == (Object)null) { return; } if (!CanApplyNow()) { RestorePostProcessingState(postProcessing); return; } CapturePostProcessingState(postProcessing, force: false); if (postProcessingStates.TryGetValue(((Object)postProcessing).GetInstanceID(), out var value)) { EnsurePostProcessingComponents(postProcessing); float num = value.BloomIntensity * Clamp(GetFloat(BloomIntensityMultiplier, 0.75f), 0f, 10f); float num2 = value.BloomThreshold * Clamp(GetFloat(BloomThresholdMultiplier, 1.2f), 0f, 10f); float num3 = value.LensDistortionIntensity * Clamp(GetFloat(LensDistortionMultiplier, 0f), 0f, 10f); float num4 = value.VignetteIntensity * Clamp(GetFloat(VignetteIntensityMultiplier, 0.25f), 0f, 10f); float num5 = value.VignetteSmoothness * Clamp(GetFloat(VignetteSmoothnessMultiplier, 1f), 0f, 10f); float num6 = value.Saturation + Clamp(GetFloat(SaturationOffset, 0f), -100f, 100f); float num7 = value.Contrast + Clamp(GetFloat(ContrastOffset, 5f), -100f, 100f); float value2 = value.ColorTemperature + Clamp(GetFloat(ColorTemperatureOffset, 0f), -100f, 100f); Color value3 = Color.Lerp(value.ColorFilter, Color.white, Clamp01(GetFloat(ColorFilterBlendToWhite, 0.08f))); float num8 = value.GrainIntensity * Clamp(GetFloat(GrainIntensityMultiplier, 0.25f), 0f, 10f); float num9 = value.GrainSize * Clamp(GetFloat(GrainSizeMultiplier, 1f), 0f, 10f); float num10 = value.MotionBlurShutter * Clamp(GetFloat(MotionBlurShutterMultiplier, 0f), 0f, 10f); float num11 = value.ChromaticAberrationIntensity * Clamp(GetFloat(ChromaticAberrationMultiplier, 0f), 0f, 10f); SetPrivateField(postBloomIntensityField, postProcessing, num); SetPrivateField(postBloomThresholdField, postProcessing, num2); SetPrivateField(postLensDistortionIntensityField, postProcessing, num3); SetPrivateField(postVignetteColorField, postProcessing, value.VignetteColor); SetPrivateField(postVignetteIntensityField, postProcessing, num4); SetPrivateField(postVignetteSmoothnessField, postProcessing, num5); SetPrivateField(postColorGradingSaturationField, postProcessing, num6); SetPrivateField(postColorGradingContrastField, postProcessing, num7); SetPrivateField(postGrainIntensityDefaultField, postProcessing, num8); SetPrivateField(postGrainSizeDefaultField, postProcessing, num9); SetPrivateField(postMotionBlurDefaultField, postProcessing, num10); if (TryGetPostSetting(postProcessing, out ColorGrading setting)) { ((ParameterOverride)(object)setting.temperature).value = value2; ((ParameterOverride)(object)setting.colorFilter).value = value3; ((ParameterOverride)(object)setting.saturation).value = num6; ((ParameterOverride)(object)setting.contrast).value = num7; } if (TryGetPostSetting(postProcessing, out Bloom setting2)) { ((PostProcessEffectSettings)setting2).active = num > 0.001f; ((ParameterOverride)(object)setting2.intensity).value = num; ((ParameterOverride)(object)setting2.threshold).value = num2; } if (TryGetPostSetting(postProcessing, out LensDistortion setting3)) { ((PostProcessEffectSettings)setting3).active = Mathf.Abs(num3) > 0.001f; ((ParameterOverride)(object)setting3.intensity).value = num3; } if (TryGetPostSetting(postProcessing, out Vignette setting4)) { ((ParameterOverride)(object)setting4.color).value = value.VignetteColor; ((ParameterOverride)(object)setting4.intensity).value = num4; ((ParameterOverride)(object)setting4.smoothness).value = Mathf.Clamp01(num5); } if (TryGetPostSetting(postProcessing, out MotionBlur setting5)) { ((PostProcessEffectSettings)setting5).active = num10 > 0.001f; ((ParameterOverride)(object)setting5.shutterAngle).value = num10; } if (TryGetPostSetting(postProcessing, out ChromaticAberration setting6)) { ((PostProcessEffectSettings)setting6).active = num11 > 0.001f; ((ParameterOverride)(object)setting6.intensity).value = num11; } if (TryGetPostSetting(postProcessing, out Grain setting7)) { ((PostProcessEffectSettings)setting7).active = num8 > 0.001f; ((ParameterOverride)(object)setting7.intensity).value = num8; ((ParameterOverride)(object)setting7.size).value = num9; } ApplyAmbientLight(value); } } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: ApplyPostProcessingSettings\n" + ex)); } } } private static void ApplyAmbientLight(PostProcessingState state) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: 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_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) try { Level currentLevel = GetCurrentLevel(); Color levelColor = GetLevelColor(levelAmbientColorField, currentLevel, RenderSettings.ambientLight); Color levelColor2 = GetLevelColor(levelAmbientColorAdaptationField, currentLevel, levelColor); Color source = Color.Lerp(levelColor, levelColor2, 0.5f); float multiplier = Clamp(GetFloat(AmbientLightMultiplier, 1.35f), 0f, 10f); float maxValue = Clamp(GetFloat(AmbientLightMaxValue, 1f), 0f, 5f); RenderSettings.ambientLight = MultiplyColorClamped(source, multiplier, maxValue); } catch { } } internal static void RestorePostProcessingState(PostProcessing postProcessing) { //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) try { if (!((Object)(object)postProcessing == (Object)null) && postProcessingStates.TryGetValue(((Object)postProcessing).GetInstanceID(), out var value)) { EnsurePostProcessingComponents(postProcessing); SetPrivateField(postBloomIntensityField, postProcessing, value.BloomIntensity); SetPrivateField(postBloomThresholdField, postProcessing, value.BloomThreshold); SetPrivateField(postLensDistortionIntensityField, postProcessing, value.LensDistortionIntensity); SetPrivateField(postVignetteColorField, postProcessing, value.VignetteColor); SetPrivateField(postVignetteIntensityField, postProcessing, value.VignetteIntensity); SetPrivateField(postVignetteSmoothnessField, postProcessing, value.VignetteSmoothness); SetPrivateField(postColorGradingSaturationField, postProcessing, value.Saturation); SetPrivateField(postColorGradingContrastField, postProcessing, value.Contrast); SetPrivateField(postGrainIntensityDefaultField, postProcessing, value.GrainIntensity); SetPrivateField(postGrainSizeDefaultField, postProcessing, value.GrainSize); SetPrivateField(postMotionBlurDefaultField, postProcessing, value.MotionBlurShutter); if (TryGetPostSetting(postProcessing, out ColorGrading setting)) { ((ParameterOverride)(object)setting.temperature).value = value.ColorTemperature; ((ParameterOverride)(object)setting.colorFilter).value = value.ColorFilter; ((ParameterOverride)(object)setting.saturation).value = value.Saturation; ((ParameterOverride)(object)setting.contrast).value = value.Contrast; } if (TryGetPostSetting(postProcessing, out Bloom setting2)) { ((ParameterOverride)(object)setting2.intensity).value = value.BloomIntensity; ((ParameterOverride)(object)setting2.threshold).value = value.BloomThreshold; } if (TryGetPostSetting(postProcessing, out LensDistortion setting3)) { ((ParameterOverride)(object)setting3.intensity).value = value.LensDistortionIntensity; } if (TryGetPostSetting(postProcessing, out Vignette setting4)) { ((ParameterOverride)(object)setting4.color).value = value.VignetteColor; ((ParameterOverride)(object)setting4.intensity).value = value.VignetteIntensity; ((ParameterOverride)(object)setting4.smoothness).value = value.VignetteSmoothness; } if (TryGetPostSetting(postProcessing, out MotionBlur setting5)) { ((ParameterOverride)(object)setting5.shutterAngle).value = value.MotionBlurShutter; } if (TryGetPostSetting(postProcessing, out ChromaticAberration setting6)) { ((ParameterOverride)(object)setting6.intensity).value = value.ChromaticAberrationIntensity; } if (TryGetPostSetting(postProcessing, out Grain setting7)) { ((ParameterOverride)(object)setting7.intensity).value = value.GrainIntensity; ((ParameterOverride)(object)setting7.size).value = value.GrainSize; } } } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: RestorePostProcessingState\n" + ex)); } } } internal static void ApplyRenderTextureSettings(bool force) { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) try { if (!CanApplyNow()) { RestoreRenderTextureSettings(); return; } RenderTextureMain instance = RenderTextureMain.instance; if ((Object)(object)instance == (Object)null || (Object)(object)instance.renderTexture == (Object)null) { return; } if (!hasRenderTextureState) { hasRenderTextureState = true; originalTextureWidthOriginal = GetPrivateFloat(renderTextureWidthOriginalField, instance, instance.textureWidthLarge); originalTextureHeightOriginal = GetPrivateFloat(renderTextureHeightOriginalField, instance, instance.textureHeightLarge); originalRenderTextureSize = ((Component)instance).transform.localScale; if (renderTextureOriginalSizeField != null) { object value = renderTextureOriginalSizeField.GetValue(instance); if (value is Vector3) { originalRenderTextureSize = (Vector3)value; } } } float num = Clamp(GetFloat(RenderResolutionScale, 1f), 0.25f, 2f); float num2 = ((instance.textureWidthLarge > 0f) ? instance.textureWidthLarge : originalTextureWidthOriginal); float num3 = ((instance.textureHeightLarge > 0f) ? instance.textureHeightLarge : originalTextureHeightOriginal); float num4 = Mathf.Max(1f, num2 * num); float num5 = Mathf.Max(1f, num3 * num); float privateFloat = GetPrivateFloat(renderTextureWidthOriginalField, instance, originalTextureWidthOriginal); float privateFloat2 = GetPrivateFloat(renderTextureHeightOriginalField, instance, originalTextureHeightOriginal); bool flag = !NearlyEqual(privateFloat, num4) || !NearlyEqual(privateFloat2, num5) || ((Texture)instance.renderTexture).width != (int)num4 || ((Texture)instance.renderTexture).height != (int)num5; SetPrivateField(renderTextureWidthOriginalField, instance, num4); SetPrivateField(renderTextureHeightOriginalField, instance, num5); if (flag || force) { instance.ResetResolution(); } if (GetBool(BlockRenderTextureShake, fallback: true)) { SetPrivateField(renderTextureShakeActiveField, instance, false); SetPrivateField(renderTextureShakeTimerField, instance, 0f); ((Component)instance).transform.localPosition = Vector3.zero; } if (GetBool(BlockRenderTextureSizeChange, fallback: true)) { ((Component)instance).transform.localScale = originalRenderTextureSize; SetPrivateField(renderTextureSizeResetTimerField, instance, 0f); } } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: ApplyRenderTextureSettings\n" + ex)); } } } internal static void RestoreRenderTextureSettings() { //IL_0059: Unknown result type (might be due to invalid IL or missing references) try { if (hasRenderTextureState && !((Object)(object)RenderTextureMain.instance == (Object)null)) { RenderTextureMain instance = RenderTextureMain.instance; SetPrivateField(renderTextureWidthOriginalField, instance, originalTextureWidthOriginal); SetPrivateField(renderTextureHeightOriginalField, instance, originalTextureHeightOriginal); ((Component)instance).transform.localScale = originalRenderTextureSize; instance.ResetResolution(); hasRenderTextureState = false; } } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: RestoreRenderTextureSettings\n" + ex)); } } } internal static void ApplyGlowSettings(bool force) { try { if (!CanApplyNow()) { RestoreGlowSettings(); return; } PropLight[] array = Object.FindObjectsOfType(); for (int i = 0; i < array.Length; i++) { ApplyPropLight(array[i]); } PropLightEmission[] array2 = Object.FindObjectsOfType(); for (int j = 0; j < array2.Length; j++) { ApplyPropEmission(array2[j]); } ItemLight[] array3 = Object.FindObjectsOfType(); for (int k = 0; k < array3.Length; k++) { ApplyItemLight(array3[k]); } } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: ApplyGlowSettings\n" + ex)); } } } internal static void ApplyPropLight(PropLight propLight) { try { if ((Object)(object)propLight == (Object)null || !CanApplyNow()) { return; } if (!GetBool(EnhancePropLights, fallback: true)) { RestoreOnePropLight(propLight); return; } Light val = null; if (propLightComponentField != null) { object? value = propLightComponentField.GetValue(propLight); val = (Light)((value is Light) ? value : null); } if ((Object)(object)val == (Object)null) { val = ((Component)propLight).GetComponent(); } if (!((Object)(object)val == (Object)null)) { if (!propLightStates.TryGetValue(propLight, out var value2)) { value2 = default(PropLightState); value2.OriginalIntensity = GetPrivateFloat(propLightOriginalIntensityField, propLight, val.intensity); value2.CurrentIntensity = val.intensity; value2.OriginalRange = val.range; propLightStates[propLight] = value2; } float num = Clamp(GetFloat(PropLightIntensityMultiplier, 1.25f), 0f, 10f); float num2 = Clamp(GetFloat(PropLightRangeMultiplier, 1.1f), 0f, 5f); float num3 = value2.OriginalIntensity * num; float range = value2.OriginalRange * num2; SetPrivateField(propLightOriginalIntensityField, propLight, num3); if (((Behaviour)val).enabled && val.intensity > 0f) { val.intensity = Mathf.Max(val.intensity, num3); } val.range = range; } } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: ApplyPropLight\n" + ex)); } } } internal static void ApplyPropEmission(PropLightEmission propEmission) { //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) try { if ((Object)(object)propEmission == (Object)null || !CanApplyNow()) { return; } if (!GetBool(EnhancePropEmissions, fallback: true)) { RestoreOnePropEmission(propEmission); return; } Material val = null; if (propEmissionMaterialField != null) { object? value = propEmissionMaterialField.GetValue(propEmission); val = (Material)((value is Material) ? value : null); } if ((Object)(object)val == (Object)null) { Renderer component = ((Component)propEmission).GetComponent(); if ((Object)(object)component != (Object)null) { val = component.material; } } if (!((Object)(object)val == (Object)null) && val.HasProperty("_EmissionColor")) { if (!propEmissionStates.TryGetValue(propEmission, out var value2)) { value2 = default(PropEmissionState); value2.OriginalEmission = GetPrivateColor(propEmissionOriginalEmissionField, propEmission, val.GetColor("_EmissionColor")); value2.CurrentEmission = val.GetColor("_EmissionColor"); propEmissionStates[propEmission] = value2; } float multiplier = Clamp(GetFloat(PropEmissionMultiplier, 1.25f), 0f, 10f); float maxValue = Clamp(GetFloat(PropEmissionMaxValue, 3f), 0f, 20f); Color val2 = MultiplyColorClamped(value2.OriginalEmission, multiplier, maxValue); SetPrivateField(propEmissionOriginalEmissionField, propEmission, val2); val.EnableKeyword("_EMISSION"); val.SetColor("_EmissionColor", val2); } } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: ApplyPropEmission\n" + ex)); } } } internal static void ApplyItemLight(ItemLight itemLight) { try { if ((Object)(object)itemLight == (Object)null || (Object)(object)itemLight.itemLight == (Object)null || !CanApplyNow()) { return; } if (!GetBool(EnhanceItemLights, fallback: true)) { RestoreOneItemLight(itemLight); return; } if (!itemLightStates.TryGetValue(itemLight, out var value)) { value = default(ItemLightState); value.OriginalIntensity = GetPrivateFloat(itemLightIntensityOriginalField, itemLight, itemLight.itemLight.intensity); value.OriginalRange = GetPrivateFloat(itemLightRangeOriginalField, itemLight, itemLight.itemLight.range); value.OriginalFresnel = GetPrivateFloat(itemLightFresnelScaleOriginalField, itemLight, 0f); value.CurrentIntensity = itemLight.itemLight.intensity; value.CurrentRange = itemLight.itemLight.range; itemLightStates[itemLight] = value; } float num = Clamp(GetFloat(ItemLightIntensityMultiplier, 1.35f), 0f, 10f); float num2 = Clamp(GetFloat(ItemLightRangeMultiplier, 1.1f), 0f, 5f); float num3 = Clamp(GetFloat(ItemFresnelMultiplier, 1.25f), 0f, 10f); float num4 = Clamp(GetFloat(ItemFresnelMaxValue, 3f), 0f, 20f); float num5 = value.OriginalIntensity * num; float num6 = value.OriginalRange * num2; float num7 = Mathf.Clamp(value.OriginalFresnel * num3, 0f, num4); SetPrivateField(itemLightIntensityOriginalField, itemLight, num5); SetPrivateField(itemLightRangeOriginalField, itemLight, num6); SetPrivateField(itemLightFresnelScaleOriginalField, itemLight, num7); if (((Behaviour)itemLight.itemLight).enabled || itemLight.itemLight.intensity > 0f) { itemLight.itemLight.intensity = Mathf.Max(itemLight.itemLight.intensity, num5); itemLight.itemLight.range = Mathf.Max(itemLight.itemLight.range, num6); } ApplyItemFresnel(itemLight, num7); } catch (Exception ex) { if (Log != null) { Log.LogError((object)("Failure: ApplyItemLight\n" + ex)); } } } private static void ApplyItemFresnel(ItemLight itemLight, float value) { if ((Object)(object)itemLight == (Object)null || itemLight.meshRenderers == null) { return; } foreach (MeshRenderer meshRenderer in itemLight.meshRenderers) { if ((Object)(object)meshRenderer != (Object)null && ((Component)meshRenderer).gameObject.activeSelf && (Object)(object)((Renderer)meshRenderer).material != (Object)null && ((Renderer)meshRenderer).material.HasProperty("_FresnelScale")) { ((Renderer)meshRenderer).material.SetFloat("_FresnelScale", value); } } } internal static void RestoreGlowSettings() { foreach (KeyValuePair item in new List>(propLightStates)) { RestoreOnePropLight(item.Key); } propLightStates.Clear(); foreach (KeyValuePair item2 in new List>(propEmissionStates)) { RestoreOnePropEmission(item2.Key); } propEmissionStates.Clear(); foreach (KeyValuePair item3 in new List>(itemLightStates)) { RestoreOneItemLight(item3.Key); } itemLightStates.Clear(); } private static void RestoreOnePropLight(PropLight propLight) { try { if (!((Object)(object)propLight == (Object)null) && propLightStates.TryGetValue(propLight, out var value)) { Light val = null; if (propLightComponentField != null) { object? value2 = propLightComponentField.GetValue(propLight); val = (Light)((value2 is Light) ? value2 : null); } if ((Object)(object)val == (Object)null) { val = ((Component)propLight).GetComponent(); } SetPrivateField(propLightOriginalIntensityField, propLight, value.OriginalIntensity); if ((Object)(object)val != (Object)null) { val.intensity = value.CurrentIntensity; val.range = value.OriginalRange; } propLightStates.Remove(propLight); } } catch { } } private static void RestoreOnePropEmission(PropLightEmission propEmission) { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) try { if (!((Object)(object)propEmission == (Object)null) && propEmissionStates.TryGetValue(propEmission, out var value)) { Material val = null; if (propEmissionMaterialField != null) { object? value2 = propEmissionMaterialField.GetValue(propEmission); val = (Material)((value2 is Material) ? value2 : null); } SetPrivateField(propEmissionOriginalEmissionField, propEmission, value.OriginalEmission); if ((Object)(object)val != (Object)null && val.HasProperty("_EmissionColor")) { val.SetColor("_EmissionColor", value.CurrentEmission); } propEmissionStates.Remove(propEmission); } } catch { } } private static void RestoreOneItemLight(ItemLight itemLight) { try { if (!((Object)(object)itemLight == (Object)null) && itemLightStates.TryGetValue(itemLight, out var value)) { SetPrivateField(itemLightIntensityOriginalField, itemLight, value.OriginalIntensity); SetPrivateField(itemLightRangeOriginalField, itemLight, value.OriginalRange); SetPrivateField(itemLightFresnelScaleOriginalField, itemLight, value.OriginalFresnel); if ((Object)(object)itemLight.itemLight != (Object)null) { itemLight.itemLight.intensity = value.CurrentIntensity; itemLight.itemLight.range = value.CurrentRange; } ApplyItemFresnel(itemLight, value.OriginalFresnel); itemLightStates.Remove(itemLight); } } catch { } } private static void EnsurePostProcessingComponents(PostProcessing postProcessing) { if (!((Object)(object)postProcessing == (Object)null) && !((Object)(object)postProcessing.volume == (Object)null) && !((Object)(object)postProcessing.volume.profile == (Object)null)) { } } private static bool TryGetPostSetting(PostProcessing postProcessing, out T setting) where T : PostProcessEffectSettings { setting = default(T); if ((Object)(object)postProcessing == (Object)null || (Object)(object)postProcessing.volume == (Object)null || (Object)(object)postProcessing.volume.profile == (Object)null) { return false; } return postProcessing.volume.profile.TryGetSettings(ref setting); } private static Level GetCurrentLevel() { if ((Object)(object)LevelGenerator.Instance == (Object)null) { return null; } return LevelGenerator.Instance.Level; } private static float GetBloomIntensity(PostProcessing postProcessing) { Bloom setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.intensity).value : 0f; } private static float GetBloomThreshold(PostProcessing postProcessing) { Bloom setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.threshold).value : 1f; } private static float GetLensDistortionIntensity(PostProcessing postProcessing) { LensDistortion setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.intensity).value : 0f; } private static Color GetVignetteColor(PostProcessing postProcessing) { //IL_0018: 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) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) Vignette setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.color).value : Color.black; } private static float GetVignetteIntensity(PostProcessing postProcessing) { Vignette setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.intensity).value : 0f; } private static float GetVignetteSmoothness(PostProcessing postProcessing) { Vignette setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.smoothness).value : 0f; } private static float GetColorTemperature(PostProcessing postProcessing) { ColorGrading setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.temperature).value : 0f; } private static Color GetColorFilter(PostProcessing postProcessing) { //IL_0018: 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) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) ColorGrading setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.colorFilter).value : Color.white; } private static float GetSaturation(PostProcessing postProcessing) { ColorGrading setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.saturation).value : 0f; } private static float GetContrast(PostProcessing postProcessing) { ColorGrading setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.contrast).value : 0f; } private static float GetGrainIntensity(PostProcessing postProcessing) { Grain setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.intensity).value : 0f; } private static float GetGrainSize(PostProcessing postProcessing) { Grain setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.size).value : 1f; } private static float GetMotionBlurShutter(PostProcessing postProcessing) { MotionBlur setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.shutterAngle).value : 0f; } private static float GetChromaticAberrationIntensity(PostProcessing postProcessing) { ChromaticAberration setting; return TryGetPostSetting(postProcessing, out setting) ? ((ParameterOverride)(object)setting.intensity).value : 0f; } private static float GetFloat(ConfigEntry entry, float fallback) { return entry?.Value ?? fallback; } private static bool GetBool(ConfigEntry entry, bool fallback) { return entry?.Value ?? fallback; } private static KeyCode GetKeyCode(ConfigEntry entry, KeyCode fallback) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) return entry?.Value ?? fallback; } private static float Clamp(float value, float min, float max) { return Mathf.Clamp(value, min, max); } private static float Clamp01(float value) { return Mathf.Clamp01(value); } private static bool NearlyEqual(float left, float right) { return Mathf.Abs(left - right) <= 0.001f; } private static float GetPrivateFloat(FieldInfo fieldInfo, object instance, float fallback) { if (fieldInfo == null || instance == null) { return fallback; } if (!(fieldInfo.GetValue(instance) is float result)) { return fallback; } return result; } private static Color GetPrivateColor(FieldInfo fieldInfo, object instance, Color fallback) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) if (fieldInfo == null || instance == null) { return fallback; } if (!(fieldInfo.GetValue(instance) is Color result)) { return fallback; } return result; } private static float GetLevelFloat(FieldInfo fieldInfo, Level level, float fallback) { if (fieldInfo == null || (Object)(object)level == (Object)null) { return fallback; } if (!(fieldInfo.GetValue(level) is float result)) { return fallback; } return result; } private static Color GetLevelColor(FieldInfo fieldInfo, Level level, Color fallback) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_003c: 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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) if (fieldInfo == null || (Object)(object)level == (Object)null) { return fallback; } if (!(fieldInfo.GetValue(level) is Color result)) { return fallback; } return result; } private static void SetPrivateField(FieldInfo fieldInfo, object instance, object value) { if (!(fieldInfo == null) && instance != null) { fieldInfo.SetValue(instance, value); } } private static Color MultiplyColorClamped(Color source, float multiplier, float maxValue) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) return new Color(Mathf.Clamp(source.r * multiplier, 0f, maxValue), Mathf.Clamp(source.g * multiplier, 0f, maxValue), Mathf.Clamp(source.b * multiplier, 0f, maxValue), source.a); } private static bool AllowCameraGlitch(bool doNotLook) { if (!CanApplyNow()) { return true; } float num = (doNotLook ? Clamp(GetFloat(DoNotLookGlitchChanceMultiplier, 0.15f), 0f, 1f) : Clamp(GetFloat(CameraGlitchChanceMultiplier, 0.15f), 0f, 1f)); if (num >= 1f) { return true; } if (num <= 0f) { return false; } return Random.value <= num; } } }