diff --git a/Plugin.cs b/Plugin.cs index aff7339..866017b 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -17,6 +17,8 @@ public class Plugin : BasePlugin internal static Harmony Harmony { get; } = new Harmony(MyPluginInfo.PLUGIN_GUID); private static ConfigEntry HighMSAA; + private static ConfigEntry NoVSync; + private static ConfigEntry Aniso; private static ConfigEntry DesiredResolutionX; private static ConfigEntry DesiredResolutionY; private static ConfigEntry Fullscreen; @@ -32,6 +34,8 @@ public override void Load() Log.LogInfo($"Plugin {MyPluginInfo.PLUGIN_GUID} is loaded!"); HighMSAA = Config.Bind("Quality", "HighMSAA", true, "Enable High Quality MSAA on all cameras"); + NoVSync = Config.Bind("Quality", "NoVSync", false, "Force NoVSync setting"); + Aniso = Config.Bind("Quality", "ForceAniso", -1, "Force this anisoLevel"); DesiredResolutionX = Config.Bind("Resolution", "X", Display.main.systemWidth); DesiredResolutionY = Config.Bind("Resolution", "Y", Display.main.systemHeight); @@ -55,7 +59,15 @@ public static void CameraQualityFix(Game.CameraController __instance) { } } + [HarmonyPatch(typeof(UnityEngine.Texture), "get_anisoLevel")] + [HarmonyPrefix] + public static void Texture2Dctor(UnityEngine.Texture __instance) { + if (Aniso.Value >= 0) + __instance.anisoLevel = Aniso.Value; + } + [HarmonyPatch(typeof(Game.LauncherArgs), nameof(Game.LauncherArgs.OnRuntimeMethodLoad))] + [HarmonyPostfix] public static void SetResolution() { if (ResolutionOverride.Value) { logger.LogInfo("Overriding resolution"); @@ -67,6 +79,24 @@ public static void SetResolution() { logger.LogInfo("Override to windowed"); } } + logger.LogInfo("Applying stuff!"); + // Get's set to 8 :pensive: + // Get's set to 0 if I do it here :face_melt: + if (HighMSAA.Value) + UnityEngine.QualitySettings.antiAliasing = 16; + // UnityEngine.QualitySettings.anisotropicFiltering = UnityEngine.AnisotropicFiltering.ForceEnable; + // foreach(var name in UnityEngine.QualitySettings.names) { + // logger.LogInfo(name); + // } + // There's only one quality level 0 - Fastest named "High"??? + UnityEngine.QualitySettings.SetQualityLevel((int)UnityEngine.QualityLevel.Fantastic, true); + // Clamps to 9-16 + UnityEngine.QualitySettings.anisotropicFiltering = UnityEngine.AnisotropicFiltering.ForceEnable; + UnityEngine.QualitySettings.shadowResolution = UnityEngine.ShadowResolution.VeryHigh; + UnityEngine.QualitySettings.skinWeights = UnityEngine.SkinWeights.Unlimited; + UnityEngine.QualitySettings.softParticles = true; + if (NoVSync.Value) + UnityEngine.QualitySettings.vSyncCount = 0; } // [HarmonyPatch(typeof(Develop.DevelopManager), "get_UserName")] diff --git a/README.md b/README.md index 470eeb7..3ed046c 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ Fixes done: ## Configuration +Example config with defaults: + ```ini ## Settings file was created by plugin aitsf2fix v1.0.0 ## Plugin GUID: aitsf2fix @@ -22,15 +24,25 @@ Fixes done: # Default value: true HighMSAA = true +## Force NoVSync setting +# Setting type: Boolean +# Default value: false +NoVSync = true + +## Force this anisoLevel +# Setting type: Int32 +# Default value: -1 +ForceAniso = 16 + [Resolution] # Setting type: Int32 -# Default value: Main Display Width -X = 1920 +# Default value: 1920 +X = 1366 # Setting type: Int32 -# Default value: Main Display Height -Y = 1080 +# Default value: 1080 +Y = 768 # Setting type: Boolean # Default value: false @@ -42,5 +54,5 @@ Fullscreen = false # Setting type: Boolean # Default value: true -UIFix = true # doesn't do anything as of rn +UIFix = true ``` diff --git a/aitsf2fix.csproj b/aitsf2fix.csproj index 76ec704..f15bdcb 100644 --- a/aitsf2fix.csproj +++ b/aitsf2fix.csproj @@ -3,8 +3,8 @@ net6.0 aitsf2fix - My first plugin - 1.0.0 + Various AITSF2 fixes... + 2.0.0 true latest