forked from BilalY/Rasagar
71 lines
3.0 KiB
C#
71 lines
3.0 KiB
C#
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Text;
|
||
|
using UnityEditor.Build.Reporting;
|
||
|
using UnityEngine.Rendering;
|
||
|
using UnityEngine.Rendering.HighDefinition;
|
||
|
|
||
|
namespace UnityEditor.Rendering.HighDefinition
|
||
|
{
|
||
|
class HDRPBuildDataValidator
|
||
|
{
|
||
|
internal static void ValidateRenderPipelineAssetsAreAtLastVersion(List<HDRenderPipelineAsset> renderPipelineAssets, StringBuilder failures)
|
||
|
{
|
||
|
// Validate all included assets are at last version
|
||
|
foreach (var hdPipelineAsset in renderPipelineAssets)
|
||
|
{
|
||
|
if (!(hdPipelineAsset as IMigratableAsset).IsAtLastVersion())
|
||
|
{
|
||
|
failures.AppendLine(
|
||
|
$"- The {nameof(HDRenderPipelineAsset)} with '{hdPipelineAsset.name}({AssetDatabase.GetAssetPath(hdPipelineAsset)})' is not at last version.");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
internal static void ValidateRenderPipelineGlobalSettings(HDRenderPipelineGlobalSettings globalSettingsInstance, StringBuilder failures)
|
||
|
{
|
||
|
if (globalSettingsInstance == null)
|
||
|
failures.AppendLine($"- The {nameof(HDRenderPipelineGlobalSettings)} of the project are missing.");
|
||
|
else
|
||
|
{
|
||
|
if (!(globalSettingsInstance as IMigratableAsset).IsAtLastVersion())
|
||
|
{
|
||
|
failures.AppendLine(
|
||
|
$"- The {nameof(HDRenderPipelineGlobalSettings)} with '{globalSettingsInstance.name}({AssetDatabase.GetAssetPath(globalSettingsInstance)})' is not at last version.");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
internal static void ValidatePlatform(UnityEditor.BuildTarget activeBuildTarget, StringBuilder failures)
|
||
|
{
|
||
|
// If platform is not supported, throw an exception to stop the build
|
||
|
if (!HDUtils.IsSupportedBuildTargetAndDevice(activeBuildTarget, out GraphicsDeviceType deviceType))
|
||
|
failures.AppendLine(HDUtils.GetUnsupportedAPIMessage(deviceType.ToString()));
|
||
|
}
|
||
|
|
||
|
public static bool IsProjectValidForBuilding(BuildReport report, out string message)
|
||
|
{
|
||
|
using (GenericPool<StringBuilder>.Get(out var failures))
|
||
|
{
|
||
|
failures.Clear();
|
||
|
|
||
|
ValidateRenderPipelineAssetsAreAtLastVersion(HDRPBuildData.instance.renderPipelineAssets, failures);
|
||
|
ValidateRenderPipelineGlobalSettings(HDRenderPipelineGlobalSettings.Ensure(), failures);
|
||
|
ValidatePlatform(report.summary.platform, failures);
|
||
|
|
||
|
string allFailures = failures.ToString();
|
||
|
|
||
|
if (!string.IsNullOrEmpty(allFailures))
|
||
|
{
|
||
|
message =
|
||
|
$"Please fix the following errors before building:{Environment.NewLine}{allFailures}. {Environment.NewLine}You can use HDRP Wizard to fix them";
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
message = string.Empty;
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
}
|