- add addressables settings/groups for tile prefabs with custom TileBuildPath/TileLoadPath profiles and link.xml preservation - add editor tools for building tile addressables, configuring openxr quest loaders, removing missing scripts, and forcing android tool paths - add runtime loader + manifest model to stream tile bundles from persistent data with radius-based load/unload - add TestArea1 scene wired to GeoTileAddressablesLoader and update build settings to enable it - update geo tile prefab importer output path to Assets/TilePrefabs - update project/xr/android settings: min sdk 34, app id, openxr composition layers + quest devices, scripting define symbols, and renderer tweaks - update packages (addressables 2.8, ar foundation 6.3.2, composition layers 2.3, collab proxy 2.11.2) and record scriptable build pipeline config - remove temporary recovery scene files and add Notes plan/progress docs
108 lines
3.8 KiB
C#
108 lines
3.8 KiB
C#
using UnityEditor;
|
|
using UnityEditor.XR.Management;
|
|
using UnityEditor.XR.Management.Metadata;
|
|
using UnityEngine;
|
|
using UnityEngine.XR.Management;
|
|
#if XR_COMPOSITION_LAYERS
|
|
using UnityEngine.XR.OpenXR;
|
|
using UnityEngine.XR.OpenXR.Features.CompositionLayers;
|
|
#endif
|
|
|
|
namespace DTrierFlood.Editor
|
|
{
|
|
static class OpenXRQuestSetup
|
|
{
|
|
const string GeneralSettingsPath = "Assets/XR/XRGeneralSettingsPerBuildTarget.asset";
|
|
const string OpenXRLoaderType = "UnityEngine.XR.OpenXR.OpenXRLoader";
|
|
|
|
[MenuItem("Tools/XR/Setup OpenXR for Quest (No Meta SDK)")]
|
|
static void Setup()
|
|
{
|
|
var generalSettings = EnsureGeneralSettingsAsset();
|
|
EnsureBuildTarget(generalSettings, BuildTargetGroup.Android);
|
|
#if XR_COMPOSITION_LAYERS
|
|
EnableCompositionLayersFeature(BuildTargetGroup.Android);
|
|
EnableCompositionLayersFeature(BuildTargetGroup.Standalone);
|
|
#endif
|
|
|
|
AssetDatabase.SaveAssets();
|
|
AssetDatabase.Refresh();
|
|
|
|
Debug.Log("OpenXR is configured for Android. Build the project for Quest using OpenXR.");
|
|
}
|
|
|
|
static XRGeneralSettingsPerBuildTarget EnsureGeneralSettingsAsset()
|
|
{
|
|
var settings = AssetDatabase.LoadAssetAtPath<XRGeneralSettingsPerBuildTarget>(GeneralSettingsPath);
|
|
if (settings != null)
|
|
{
|
|
EditorBuildSettings.AddConfigObject(XRGeneralSettings.k_SettingsKey, settings, true);
|
|
return settings;
|
|
}
|
|
|
|
if (!AssetDatabase.IsValidFolder("Assets/XR"))
|
|
{
|
|
AssetDatabase.CreateFolder("Assets", "XR");
|
|
}
|
|
|
|
settings = ScriptableObject.CreateInstance<XRGeneralSettingsPerBuildTarget>();
|
|
AssetDatabase.CreateAsset(settings, GeneralSettingsPath);
|
|
EditorBuildSettings.AddConfigObject(XRGeneralSettings.k_SettingsKey, settings, true);
|
|
EditorUtility.SetDirty(settings);
|
|
return settings;
|
|
}
|
|
|
|
static void EnsureBuildTarget(XRGeneralSettingsPerBuildTarget settings, BuildTargetGroup targetGroup)
|
|
{
|
|
if (!settings.HasSettingsForBuildTarget(targetGroup))
|
|
{
|
|
settings.CreateDefaultSettingsForBuildTarget(targetGroup);
|
|
}
|
|
|
|
if (!settings.HasManagerSettingsForBuildTarget(targetGroup))
|
|
{
|
|
settings.CreateDefaultManagerSettingsForBuildTarget(targetGroup);
|
|
}
|
|
|
|
var generalSettings = settings.SettingsForBuildTarget(targetGroup);
|
|
if (generalSettings != null)
|
|
{
|
|
generalSettings.InitManagerOnStart = true;
|
|
EditorUtility.SetDirty(generalSettings);
|
|
}
|
|
|
|
var managerSettings = settings.ManagerSettingsForBuildTarget(targetGroup);
|
|
if (managerSettings != null)
|
|
{
|
|
XRPackageMetadataStore.AssignLoader(managerSettings, OpenXRLoaderType, targetGroup);
|
|
EditorUtility.SetDirty(managerSettings);
|
|
}
|
|
|
|
EditorUtility.SetDirty(settings);
|
|
}
|
|
|
|
#if XR_COMPOSITION_LAYERS
|
|
static void EnableCompositionLayersFeature(BuildTargetGroup targetGroup)
|
|
{
|
|
var settings = OpenXRSettings.GetSettingsForBuildTargetGroup(targetGroup);
|
|
if (settings == null)
|
|
{
|
|
Debug.LogWarning($"OpenXR settings not found for {targetGroup}.");
|
|
return;
|
|
}
|
|
|
|
var feature = settings.GetFeature<OpenXRCompositionLayersFeature>();
|
|
if (feature == null)
|
|
{
|
|
Debug.LogWarning($"OpenXR Composition Layers feature not found for {targetGroup}.");
|
|
return;
|
|
}
|
|
|
|
feature.enabled = true;
|
|
EditorUtility.SetDirty(feature);
|
|
EditorUtility.SetDirty(settings);
|
|
}
|
|
#endif
|
|
}
|
|
}
|