using System.Linq; using GameCult.Eve.UnityScene; using UnityEditor; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; public static class GenericEveUnityRenderPipeline { private const string PostProcessDataGuid = "41439944d30ece34e96484bdb6645b55"; private const string RendererPath = "Assets/GenericEveUnityRenderer.asset"; private const string PipelinePath = "Assets/GenericEveUnityRenderPipeline.asset"; public static void Configure() { var renderer = AssetDatabase.LoadAssetAtPath(RendererPath); if (renderer == null) { renderer = ScriptableObject.CreateInstance(); AssetDatabase.CreateAsset(renderer, RendererPath); } renderer.postProcessData = AssetDatabase.LoadAssetAtPath( AssetDatabase.GUIDToAssetPath(PostProcessDataGuid)); if (!renderer.rendererFeatures.OfType().Any()) { var feature = ScriptableObject.CreateInstance(); feature.name = "Eve Unity World Effects"; AssetDatabase.AddObjectToAsset(feature, renderer); renderer.rendererFeatures.Add(feature); EditorUtility.SetDirty(feature); } renderer.SetDirty(); EditorUtility.SetDirty(renderer); var pipeline = AssetDatabase.LoadAssetAtPath(PipelinePath); if (pipeline == null) { pipeline = UniversalRenderPipelineAsset.Create(renderer); AssetDatabase.CreateAsset(pipeline, PipelinePath); } GraphicsSettings.defaultRenderPipeline = pipeline; QualitySettings.renderPipeline = pipeline; EditorUtility.SetDirty(pipeline); AssetDatabase.SaveAssetIfDirty(renderer); AssetDatabase.SaveAssetIfDirty(pipeline); AssetDatabase.SaveAssets(); } }