public IEnumerator ApplyPerformanceFilters(
            GameObject avatarObject,
            AvatarPerformanceStats perfStats,
            PerformanceRating ratingLimit,
            AvatarPerformance.IgnoreDelegate shouldIgnoreComponent,
            AvatarPerformance.FilterBlockCallback onBlock
            )
        {
            foreach (AbstractPerformanceFilter performanceFilter in performanceFilters)
            {
                if (performanceFilter == null)
                {
                    continue;
                }

                bool avatarBlocked = false;
                yield return(performanceFilter.ApplyPerformanceFilter(avatarObject, perfStats, ratingLimit, shouldIgnoreComponent, () => { avatarBlocked = true; }));

                if (!avatarBlocked)
                {
                    continue;
                }

                onBlock();
                break;
            }
        }
 public abstract IEnumerator ApplyPerformanceFilter(
     GameObject avatarObject,
     AvatarPerformanceStats perfStats,
     PerformanceRating ratingLimit,
     AvatarPerformance.IgnoreDelegate shouldIgnoreComponent,
     AvatarPerformance.FilterBlockCallback onBlock
     );