58 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			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); | ||
|  |     } | ||
|  | } |