UnityGame/Library/PackageCache/com.unity.render-pipelines.universal/Editor/BuildProcessors/URPBuildDataValidator.cs

63 lines
2.5 KiB
C#
Raw Normal View History

2024-10-27 10:53:47 +03:00
using System;
using System.Collections.Generic;
using System.Text;
using UnityEditor.Build.Reporting;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
namespace UnityEditor.Rendering.Universal
{
class URPBuildDataValidator
{
private static void ValidateRenderPipelineAssetsAreAtLastVersion(List<UniversalRenderPipelineAsset> renderPipelineAssets, StringBuilder failures)
{
// Validate all included assets are at last version
foreach (var urpPipelineAsset in renderPipelineAssets)
{
if (!urpPipelineAsset.IsAtLastVersion())
{
failures.AppendLine(
$"- The {nameof(UniversalRenderPipelineAsset)} with '{urpPipelineAsset.name}({AssetDatabase.GetAssetPath(urpPipelineAsset)})' is not at last version.");
}
}
}
private static void ValidateRenderPipelineGlobalSettings(UniversalRenderPipelineGlobalSettings globalSettingsInstance, StringBuilder failures)
{
if (globalSettingsInstance == null)
failures.AppendLine($"- The {nameof(UniversalRenderPipelineGlobalSettings)} of the project are missing.");
else
{
if (!globalSettingsInstance.IsAtLastVersion())
{
failures.AppendLine(
$"- The {nameof(UniversalRenderPipelineGlobalSettings)} with '{globalSettingsInstance.name}({AssetDatabase.GetAssetPath(globalSettingsInstance)})' is not at last version.");
}
}
}
public static bool IsProjectValidForBuilding(BuildReport report, out string message)
{
using (GenericPool<StringBuilder>.Get(out var failures))
{
failures.Clear();
ValidateRenderPipelineAssetsAreAtLastVersion(URPBuildData.instance.renderPipelineAssets, failures);
ValidateRenderPipelineGlobalSettings(UniversalRenderPipelineGlobalSettings.Ensure(), failures);
string allFailures = failures.ToString();
if (!string.IsNullOrEmpty(allFailures))
{
message =
$"Please fix the following errors before building:{Environment.NewLine}{allFailures}. {Environment.NewLine}";
return false;
}
}
message = string.Empty;
return true;
}
}
}