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();
        }
示例#2
0
        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();
        }