void OnGUIPerformanceInfo(Object avatar, AvatarPerformanceStats perfStats, AvatarPerformanceCategory perfCategory) { string text; PerformanceInfoDisplayLevel displayLevel; PerformanceRating rating = perfStats.GetPerformanceRatingForCategory(perfCategory); perfStats.GetSDKPerformanceInfoText(out text, out displayLevel, perfCategory, rating); if (displayLevel == PerformanceInfoDisplayLevel.None || string.IsNullOrEmpty(text)) { return; } if (displayLevel == PerformanceInfoDisplayLevel.Verbose && showAvatarPerformanceDetails) { OnGUIStat(avatar, text, rating); } if (displayLevel == PerformanceInfoDisplayLevel.Info) { OnGUIStat(avatar, text, rating); } if (displayLevel == PerformanceInfoDisplayLevel.Warning) { OnGUIStat(avatar, text, rating); } if (displayLevel == PerformanceInfoDisplayLevel.Error) { OnGUIStat(avatar, text, rating); OnGUIError(avatar, text); } }
public PerformanceRating GetPerformanceRatingForCategory(AvatarPerformanceCategory perfCategory) { if (_performanceRatingCache[(int)perfCategory] == PerformanceRating.None) { _performanceRatingCache[(int)perfCategory] = CalculatePerformanceRatingForCategory(perfCategory); } return(_performanceRatingCache[(int)perfCategory]); }
private PerformanceRating CalculatePerformanceRatingForCategory(AvatarPerformanceCategory perfCategory) { switch (perfCategory) { case AvatarPerformanceCategory.Overall: { PerformanceRating maxRating = PerformanceRating.None; foreach (AvatarPerformanceCategory category in Enum.GetValues(typeof(AvatarPerformanceCategory))) { if (category == AvatarPerformanceCategory.None || category == AvatarPerformanceCategory.Overall || category == AvatarPerformanceCategory.AvatarPerformanceCategoryCount) { continue; } PerformanceRating rating = GetPerformanceRatingForCategory(category); if (rating > maxRating) { maxRating = rating; } } return(maxRating); } case AvatarPerformanceCategory.PolyCount: { if (!polyCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.polyCount.GetValueOrDefault() - y.polyCount)); } case AvatarPerformanceCategory.AABB: { if (!aabb.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating( (x, y) => ApproxLessOrEqual(y.aabb.extents.x, 0.0f) || // -1 extents means "no AABB limit" ( ApproxLessOrEqual(x.aabb.GetValueOrDefault().extents.x, y.aabb.extents.x) && ApproxLessOrEqual(x.aabb.GetValueOrDefault().extents.y, y.aabb.extents.y) && ApproxLessOrEqual(x.aabb.GetValueOrDefault().extents.z, y.aabb.extents.z)) ? -1 : 1 )); } case AvatarPerformanceCategory.SkinnedMeshCount: { if (!skinnedMeshCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.skinnedMeshCount.GetValueOrDefault() - y.skinnedMeshCount)); } case AvatarPerformanceCategory.MeshCount: { if (!meshCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.meshCount.GetValueOrDefault() - y.meshCount)); } case AvatarPerformanceCategory.MaterialCount: { if (!materialCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.materialCount.GetValueOrDefault() - y.materialCount)); } case AvatarPerformanceCategory.AnimatorCount: { if (!animatorCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.animatorCount.GetValueOrDefault() - y.animatorCount)); } case AvatarPerformanceCategory.BoneCount: { if (!boneCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.boneCount.GetValueOrDefault() - y.boneCount)); } case AvatarPerformanceCategory.LightCount: { if (!lightCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.lightCount.GetValueOrDefault() - y.lightCount)); } case AvatarPerformanceCategory.ParticleSystemCount: { if (!particleSystemCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.particleSystemCount.GetValueOrDefault() - y.particleSystemCount)); } case AvatarPerformanceCategory.ParticleTotalCount: { if (!particleTotalCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.particleTotalCount.GetValueOrDefault() - y.particleTotalCount)); } case AvatarPerformanceCategory.ParticleMaxMeshPolyCount: { if (!particleMaxMeshPolyCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.particleMaxMeshPolyCount.GetValueOrDefault() - y.particleMaxMeshPolyCount)); } case AvatarPerformanceCategory.ParticleTrailsEnabled: { if (!particleTrailsEnabled.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating( (x, y) => { if (x.particleTrailsEnabled == y.particleTrailsEnabled) { return 0; } return x.particleTrailsEnabled.GetValueOrDefault() ? 1 : -1; })); } case AvatarPerformanceCategory.ParticleCollisionEnabled: { if (!particleCollisionEnabled.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating( (x, y) => { if (x.particleCollisionEnabled == y.particleCollisionEnabled) { return 0; } return x.particleCollisionEnabled.GetValueOrDefault() ? 1 : -1; })); } case AvatarPerformanceCategory.TrailRendererCount: { if (!trailRendererCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.trailRendererCount.GetValueOrDefault() - y.trailRendererCount)); } case AvatarPerformanceCategory.LineRendererCount: { if (!lineRendererCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.lineRendererCount.GetValueOrDefault() - y.lineRendererCount)); } case AvatarPerformanceCategory.DynamicBoneComponentCount: { if (!dynamicBoneComponentCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.dynamicBoneComponentCount.GetValueOrDefault() - y.dynamicBoneComponentCount)); } case AvatarPerformanceCategory.DynamicBoneSimulatedBoneCount: { if (!dynamicBoneSimulatedBoneCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.dynamicBoneSimulatedBoneCount.GetValueOrDefault() - y.dynamicBoneSimulatedBoneCount)); } case AvatarPerformanceCategory.DynamicBoneColliderCount: { if (!dynamicBoneColliderCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.dynamicBoneColliderCount.GetValueOrDefault() - y.dynamicBoneColliderCount)); } case AvatarPerformanceCategory.DynamicBoneCollisionCheckCount: { if (!dynamicBoneCollisionCheckCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.dynamicBoneCollisionCheckCount.GetValueOrDefault() - y.dynamicBoneCollisionCheckCount)); } case AvatarPerformanceCategory.ClothCount: { if (!clothCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.clothCount.GetValueOrDefault() - y.clothCount)); } case AvatarPerformanceCategory.ClothMaxVertices: { if (!clothMaxVertices.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.clothMaxVertices.GetValueOrDefault() - y.clothMaxVertices)); } case AvatarPerformanceCategory.PhysicsColliderCount: { if (!physicsColliderCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.physicsColliderCount.GetValueOrDefault() - y.physicsColliderCount)); } case AvatarPerformanceCategory.PhysicsRigidbodyCount: { if (!physicsRigidbodyCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.physicsRigidbodyCount.GetValueOrDefault() - y.physicsRigidbodyCount)); } case AvatarPerformanceCategory.AudioSourceCount: { if (!audioSourceCount.HasValue) { return(PerformanceRating.None); } return(CalculatePerformanceRating((x, y) => x.audioSourceCount.GetValueOrDefault() - y.audioSourceCount)); } case AvatarPerformanceCategory.DownloadSize: { if (!downloadSize.HasValue) { return(PerformanceRating.None); } return(PerformanceRating.Excellent); } default: { return(PerformanceRating.None); } } }
public static string GetPerformanceCategoryDisplayName(AvatarPerformanceCategory category) { return(_performanceCategoryDisplayNames[category]); }