Aetheria/Assets/Editor/AetheriaUrpBootstrap.cs
2026-06-21 10:45:48 +01:00

57 lines
1.9 KiB
C#

using UnityEditor;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public static class AetheriaUrpBootstrap
{
private const string SettingsFolder = "Assets/Settings/Rendering";
private const string PipelineAssetPath = SettingsFolder + "/AetheriaURPAsset.asset";
private const string RendererAssetPath = SettingsFolder + "/AetheriaUniversalRenderer.asset";
[MenuItem("Aetheria/Rendering/Ensure URP Assets")]
public static void EnsureUrpAssetsAndAssign()
{
EnsureFolder(SettingsFolder);
var rendererData = AssetDatabase.LoadAssetAtPath<UniversalRendererData>(RendererAssetPath);
if (rendererData == null)
{
rendererData = ScriptableObject.CreateInstance<UniversalRendererData>();
AssetDatabase.CreateAsset(rendererData, RendererAssetPath);
}
var pipelineAsset = AssetDatabase.LoadAssetAtPath<UniversalRenderPipelineAsset>(PipelineAssetPath);
if (pipelineAsset == null)
{
pipelineAsset = UniversalRenderPipelineAsset.Create(rendererData);
AssetDatabase.CreateAsset(pipelineAsset, PipelineAssetPath);
}
GraphicsSettings.defaultRenderPipeline = pipelineAsset;
QualitySettings.renderPipeline = pipelineAsset;
EditorUtility.SetDirty(pipelineAsset);
EditorUtility.SetDirty(rendererData);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
Debug.Log($"Aetheria URP asset assigned: {PipelineAssetPath}");
}
private static void EnsureFolder(string folderPath)
{
var parts = folderPath.Split('/');
var current = parts[0];
for (var i = 1; i < parts.Length; i++)
{
var next = current + "/" + parts[i];
if (!AssetDatabase.IsValidFolder(next))
{
AssetDatabase.CreateFolder(current, parts[i]);
}
current = next;
}
}
}