using JetBrains.Annotations; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using UnityEngine; using UnityEngine.Rendering; namespace UnityEditor.Rendering { /// /// Extensions for /// public static class BuildTargetExtensions { /// /// Obtains a list of the that are references into the settings either on or in /// /// The type of /// The to obtain the assets. /// The output list of that are referenced by the platform. /// false if there was an error fetching the for this [MustUseReturnValue] public static bool TryGetRenderPipelineAssets([DisallowNull] this BuildTarget buildTarget, List srpAssets) where T : RenderPipelineAsset { if (srpAssets == null) return false; var activeBuildTargetGroup = BuildPipeline.GetBuildTargetGroup(buildTarget); var activeBuildTargetGroupName = activeBuildTargetGroup.ToString(); QualitySettings.GetRenderPipelineAssetsForPlatform(activeBuildTargetGroupName, out var buildPipelineAssets); srpAssets.AddRange(buildPipelineAssets); int count = QualitySettings.GetActiveQualityLevelsForPlatformCount(activeBuildTargetGroupName); var allQualityLevelsAreOverriden = buildPipelineAssets.Count == count; if (count == 0 || !allQualityLevelsAreOverriden) { // We need to check the fallback cases if (GraphicsSettings.defaultRenderPipeline is T srpAsset) srpAssets.Add(srpAsset); } return true; } } }