Singularity/Library/PackageCache/com.unity.render-pipelines..../Samples~/URPPackageSamples/SharedAssets/Scripts/AutoLoadPipelineAsset.cs
2024-05-06 11:45:45 -07:00

58 lines
1.5 KiB
C#

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
[ExecuteAlways]
public class AutoLoadPipelineAsset : MonoBehaviour
{
[SerializeField]
private UniversalRenderPipelineAsset m_PipelineAsset;
private RenderPipelineAsset m_PreviousPipelineAsset;
private bool m_overrodeQualitySettings;
void OnEnable()
{
UpdatePipeline();
}
void OnDisable()
{
ResetPipeline();
}
private void UpdatePipeline()
{
if (m_PipelineAsset)
{
if (QualitySettings.renderPipeline != null && QualitySettings.renderPipeline != m_PipelineAsset)
{
m_PreviousPipelineAsset = QualitySettings.renderPipeline;
QualitySettings.renderPipeline = m_PipelineAsset;
m_overrodeQualitySettings = true;
}
else if (GraphicsSettings.renderPipelineAsset != m_PipelineAsset)
{
m_PreviousPipelineAsset = GraphicsSettings.renderPipelineAsset;
GraphicsSettings.renderPipelineAsset = m_PipelineAsset;
m_overrodeQualitySettings = false;
}
}
}
private void ResetPipeline()
{
if (m_PreviousPipelineAsset)
{
if (m_overrodeQualitySettings)
{
QualitySettings.renderPipeline = m_PreviousPipelineAsset;
}
else
{
GraphicsSettings.renderPipelineAsset = m_PreviousPipelineAsset;
}
}
}
}