59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
namespace FlatKit {
|
|
[ExecuteAlways]
|
|
public class AutoLoadPipelineAsset : MonoBehaviour {
|
|
[SerializeField]
|
|
private RenderPipelineAsset pipelineAsset;
|
|
private RenderPipelineAsset _previousPipelineAsset;
|
|
private bool _overrodeQualitySettings;
|
|
|
|
private void OnEnable() {
|
|
UpdatePipeline();
|
|
}
|
|
|
|
private void OnDisable() {
|
|
ResetPipeline();
|
|
}
|
|
|
|
private void OnValidate() {
|
|
UpdatePipeline();
|
|
}
|
|
|
|
private void UpdatePipeline() {
|
|
if (pipelineAsset) {
|
|
if (QualitySettings.renderPipeline != null && QualitySettings.renderPipeline != pipelineAsset) {
|
|
_previousPipelineAsset = QualitySettings.renderPipeline;
|
|
QualitySettings.renderPipeline = pipelineAsset;
|
|
_overrodeQualitySettings = true;
|
|
} else {
|
|
#if UNITY_6000_0_OR_NEWER
|
|
var currentPipeline = GraphicsSettings.defaultRenderPipeline;
|
|
#else
|
|
var currentPipeline = GraphicsSettings.renderPipelineAsset;
|
|
#endif
|
|
if (currentPipeline != pipelineAsset) {
|
|
_previousPipelineAsset = currentPipeline;
|
|
GraphicsSettings.defaultRenderPipeline = pipelineAsset;
|
|
_overrodeQualitySettings = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ResetPipeline() {
|
|
if (_previousPipelineAsset) {
|
|
if (_overrodeQualitySettings) {
|
|
QualitySettings.renderPipeline = _previousPipelineAsset;
|
|
} else {
|
|
#if UNITY_6000_0_OR_NEWER
|
|
GraphicsSettings.defaultRenderPipeline = _previousPipelineAsset;
|
|
#else
|
|
GraphicsSettings.renderPipelineAsset = _previousPipelineAsset;
|
|
#endif
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |