VR4Medical/ICI/Library/PackageCache/com.unity.render-pipelines.universal@2b88762731f8/Samples~/URPPackageSamples/SharedAssets/Scripts/CheckAssignedRenderPipelineAsset.cs
2025-07-29 13:45:50 +03:00

58 lines
1.9 KiB
C#

using UnityEngine;
using UnityEngine.Profiling;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
[ExecuteInEditMode]
public class CheckAssignedRenderPipelineAsset : MonoBehaviour
{
[SerializeField] private UniversalRenderPipelineAsset m_PipelineAsset;
[SerializeField] private GameObject m_WarningGameObject;
private bool? m_LastCorrectPipelineResults;
private bool isCorrectAssetAssigned => QualitySettings.renderPipeline == m_PipelineAsset
|| QualitySettings.renderPipeline == null && GraphicsSettings.defaultRenderPipeline == m_PipelineAsset;
private void Awake()
{
CheckIfCorrectAssetIsAssigned();
}
private void Update()
{
CheckIfCorrectAssetIsAssigned();
}
private void SetAllCamerasEnabled(bool enable)
{
Camera[] allCameras = FindObjectsByType<Camera>(FindObjectsInactive.Include, FindObjectsSortMode.None);
foreach (Camera c in allCameras)
c.enabled = enable;
}
private void CheckIfCorrectAssetIsAssigned()
{
if (m_PipelineAsset == null)
return;
bool correctAssetAssigned = isCorrectAssetAssigned;
if (!m_LastCorrectPipelineResults.HasValue || m_LastCorrectPipelineResults != correctAssetAssigned)
{
if (!correctAssetAssigned)
{
Debug.LogError("Incorrect/missing Universal Render Pipeline Asset assigned in Quality or Graphics Settings. Please assign \"" + m_PipelineAsset.name + "\" to view the sample.");
SetAllCamerasEnabled(false); // Disable cameras to prevent error spam when the RP asset is not expected
}
else
{
SetAllCamerasEnabled(true);
}
}
m_LastCorrectPipelineResults = correctAssetAssigned;
if (m_WarningGameObject != null)
m_WarningGameObject.SetActive(!correctAssetAssigned);
}
}