using System; using System.IO; using Newtonsoft.Json; namespace Kompressor { public struct QualitySettings { public int QualitySettingIndex; public string AnisotropicFiltering; public int AntiAliasing; public int AsyncUploadBufferSize; public bool AsyncUploadPersistentBuffer; public int AsyncUploadTimeSlice; public bool BillBoardsFaceCameraPosition; public float LODBias; public int MasterTextureLimit; public int MaximumLODLevel; public int MaxQueuedFrames; public int ParticleRaycastBudget; public int PixelLightCount; public bool RealtimeReflectionProbes; public float ResolutionScalingFixedDPIFactor; public float ShadowCascade2Split; //public float[] ShadowCascade4Split; public int ShadowCascades; public float ShadowDistance; public string ShadowmaskMode; public float ShadowNearPlaneOffset; public string ShadowProjection; public string ShadowResolution; public string Shadows; public string SkinWeights; public bool SoftParticles; public bool SoftVegetation; public bool StreamingMipmapsActive; public bool StreamingMipmapsAddAllCameras; public int StreamingMipmapsMaxFileIORequests; public int StreamingMipmapsMaxLevelReduction; public float StreamingMipmapsMemoryBudget; //public int StreamingMipmapsRendersPerFrame; public int VSyncCount; public int TargetFrameRate; public float FieldOfView; } public static class QualitySettingsUtility { internal static QualitySettings Load(string filepath) { string contents = File.ReadAllText(filepath); return JsonConvert.DeserializeObject(contents); } internal static void Save(QualitySettings qs, string filepath) { string contents = JsonConvert.SerializeObject(qs); File.WriteAllText(filepath, contents); } internal static QualitySettings Default() { QualitySettings qs = new QualitySettings { AnisotropicFiltering = "Disable", AntiAliasing = 0, AsyncUploadBufferSize = 16, AsyncUploadPersistentBuffer = true, AsyncUploadTimeSlice = 2, BillBoardsFaceCameraPosition = false, LODBias = 0.3f, MasterTextureLimit = 3, MaximumLODLevel = 0, MaxQueuedFrames = 2, ParticleRaycastBudget = 4, PixelLightCount = 0, RealtimeReflectionProbes = false, ResolutionScalingFixedDPIFactor = 1, ShadowCascade2Split = 1/3, ShadowCascades = 1, ShadowDistance = 22, ShadowmaskMode = "Shadowmask", ShadowNearPlaneOffset = 3, ShadowProjection = "StableFit", ShadowResolution = "Low", Shadows = "Disable", SkinWeights = "OneBone", SoftParticles = false, SoftVegetation = false, StreamingMipmapsActive = false, StreamingMipmapsAddAllCameras = true, StreamingMipmapsMaxFileIORequests = 1024, StreamingMipmapsMaxLevelReduction = 4, StreamingMipmapsMemoryBudget = 512, VSyncCount = 0, TargetFrameRate = -1, FieldOfView = 60, }; return qs; } } }