namespace LightlessSync.LightlessConfiguration.Configurations; public class PlayerPerformanceConfig : ILightlessConfiguration { public int Version { get; set; } = 1; public bool ShowPerformanceIndicator { get; set; } = true; public bool ShowPerformanceUsageNextToName { get; set; } = false; public bool WarnOnExceedingThresholds { get; set; } = true; public bool WarnOnPreferredPermissionsExceedingThresholds { get; set; } = false; public int VRAMSizeWarningThresholdMiB { get; set; } = 375; public int TrisWarningThresholdThousands { get; set; } = 165; public bool AutoPausePlayersExceedingThresholds { get; set; } = false; public bool AutoPausePlayersWithPreferredPermissionsExceedingThresholds { get; set; } = false; public int VRAMSizeAutoPauseThresholdMiB { get; set; } = 550; public int TrisAutoPauseThresholdThousands { get; set; } = 250; public List UIDsToIgnore { get; set; } = new(); public bool PauseInInstanceDuty { get; set; } = false; public bool PauseWhilePerforming { get; set; } = true; public bool PauseInCombat { get; set; } = true; public bool EnableNonIndexTextureMipTrim { get; set; } = false; public bool EnableIndexTextureDownscale { get; set; } = false; public int TextureDownscaleMaxDimension { get; set; } = 2048; public bool OnlyDownscaleUncompressedTextures { get; set; } = true; public bool EnableUncompressedTextureCompression { get; set; } = false; public bool SkipUncompressedTextureCompressionMipMaps { get; set; } = false; public bool KeepOriginalTextureFiles { get; set; } = false; public bool SkipTextureDownscaleForPreferredPairs { get; set; } = true; public bool EnableModelDecimation { get; set; } = ModelDecimationDefaults.EnableAutoDecimation; public int ModelDecimationTriangleThreshold { get; set; } = ModelDecimationDefaults.TriangleThreshold; public double ModelDecimationTargetRatio { get; set; } = ModelDecimationDefaults.TargetRatio; public bool ModelDecimationNormalizeTangents { get; set; } = ModelDecimationDefaults.NormalizeTangents; public bool ModelDecimationAvoidBodyIntersection { get; set; } = ModelDecimationDefaults.AvoidBodyIntersection; public ModelDecimationAdvancedSettings ModelDecimationAdvanced { get; set; } = new(); public int BatchModelDecimationTriangleThreshold { get; set; } = ModelDecimationDefaults.BatchTriangleThreshold; public double BatchModelDecimationTargetRatio { get; set; } = ModelDecimationDefaults.BatchTargetRatio; public bool BatchModelDecimationNormalizeTangents { get; set; } = ModelDecimationDefaults.BatchNormalizeTangents; public bool BatchModelDecimationAvoidBodyIntersection { get; set; } = ModelDecimationDefaults.BatchAvoidBodyIntersection; public bool ShowBatchModelDecimationWarning { get; set; } = ModelDecimationDefaults.ShowBatchDecimationWarning; public bool KeepOriginalModelFiles { get; set; } = ModelDecimationDefaults.KeepOriginalModelFiles; public bool SkipModelDecimationForPreferredPairs { get; set; } = ModelDecimationDefaults.SkipPreferredPairs; public bool ModelDecimationAllowBody { get; set; } = ModelDecimationDefaults.AllowBody; public bool ModelDecimationAllowFaceHead { get; set; } = ModelDecimationDefaults.AllowFaceHead; public bool ModelDecimationAllowTail { get; set; } = ModelDecimationDefaults.AllowTail; public bool ModelDecimationAllowClothing { get; set; } = ModelDecimationDefaults.AllowClothing; public bool ModelDecimationAllowAccessories { get; set; } = ModelDecimationDefaults.AllowAccessories; }