public static IEnumerator ApplyPerformanceFiltersEnumerator(GameObject avatarObject, AvatarPerformanceStats perfStats, PerformanceRating minPerfRating, FilterBlockCallback onBlock) { // Performance Filtering is disabled. if (minPerfRating == PerformanceRating.None) { yield break; } PerformanceFilterSet performanceFilterSet = GetPerformanceFilterSet(); if (performanceFilterSet == null) { yield break; } bool avatarBlocked = false; yield return(performanceFilterSet.ApplyPerformanceFilters( avatarObject, perfStats, minPerfRating, ShouldIgnoreComponentInternal, () => { avatarBlocked = true; } )); if (!avatarBlocked) { yield break; } VRC.Core.Logger.LogFormat( "Avatar hidden due to low performance rating: [{0}] {1} - minimum setting: {2}", perfStats.avatarName, perfStats.GetPerformanceRatingForCategory(AvatarPerformanceCategory.Overall), minPerfRating ); onBlock(); }
public static IEnumerator ApplyPerformanceFiltersEnumerator(GameObject avatarObject, AvatarPerformanceStats perfStats, PerformanceRating minPerfRating, FilterBlockCallback onBlock) { // Performance Filtering is disabled. if (minPerfRating == PerformanceRating.None) { yield break; } PerformanceFilterSet performanceFilterSet; if (VRC.ValidationHelpers.IsStandalonePlatform()) { performanceFilterSet = Resources.Load <PerformanceFilterSet>("Validation/Performance/FilterSets/PerformanceFilterSet_Windows"); } else { performanceFilterSet = Resources.Load <PerformanceFilterSet>("Validation/Performance/FilterSets/PerformanceFilterSet_Quest"); } bool avatarBlocked = false; if (performanceFilterSet != null) { yield return(performanceFilterSet.ApplyPerformanceFilters( avatarObject, perfStats, minPerfRating, ShouldIgnoreComponentInternal, () => { avatarBlocked = true; } )); } if (!avatarBlocked) { yield break; } VRC.Core.Logger.LogFormat( "Avatar hidden due to low performance rating: [{0}] {1} - minimum setting: {2}", perfStats.avatarName, perfStats.GetPerformanceRatingForCategory(AvatarPerformanceCategory.Overall), minPerfRating ); onBlock(); }