Make canonical Unity client buildable and typed-state seeded

This commit is contained in:
Meta Vens 2026-07-12 07:25:09 +01:00
commit b4e2f1fcc7
13 changed files with 89 additions and 11 deletions

View file

@ -2,12 +2,15 @@ using System.IO;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
using UnityEngine.SceneManagement;
public static class AetheriaUnityBuild
{
public static void BuildWindows()
{
EnsureRenderPipeline();
const string scenePath = "Assets/Aetheria.unity";
var scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single);
new GameObject("Aetheria Unity Client").AddComponent<AetheriaUnityClient>();
@ -21,4 +24,40 @@ public static class AetheriaUnityBuild
if (report.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded)
throw new System.InvalidOperationException("Aetheria Unity build failed: " + report.summary.result);
}
private static void EnsureRenderPipeline()
{
const string settingsDirectory = "Assets/Settings";
const string rendererPath = settingsDirectory + "/AetheriaUniversalRenderer.asset";
const string pipelinePath = settingsDirectory + "/AetheriaUniversalRenderPipeline.asset";
if (!AssetDatabase.IsValidFolder(settingsDirectory))
AssetDatabase.CreateFolder("Assets", "Settings");
var renderer = AssetDatabase.LoadAssetAtPath<UniversalRendererData>(rendererPath);
if (renderer == null)
{
renderer = ScriptableObject.CreateInstance<UniversalRendererData>();
renderer.name = "Aetheria Universal Renderer";
AssetDatabase.CreateAsset(renderer, rendererPath);
}
var pipeline = AssetDatabase.LoadAssetAtPath<UniversalRenderPipelineAsset>(pipelinePath);
if (pipeline == null)
{
pipeline = ScriptableObject.CreateInstance<UniversalRenderPipelineAsset>();
pipeline.name = "Aetheria Universal Render Pipeline";
AssetDatabase.CreateAsset(pipeline, pipelinePath);
}
var serialized = new SerializedObject(pipeline);
var rendererList = serialized.FindProperty("m_RendererDataList");
rendererList.arraySize = 1;
rendererList.GetArrayElementAtIndex(0).objectReferenceValue = renderer;
serialized.FindProperty("m_DefaultRendererIndex").intValue = 0;
serialized.ApplyModifiedPropertiesWithoutUndo();
EditorUtility.SetDirty(pipeline);
GraphicsSettings.defaultRenderPipeline = pipeline;
QualitySettings.renderPipeline = pipeline;
AssetDatabase.SaveAssets();
}
}