VR4Medical/ICI/Library/PackageCache/com.unity.xr.openxr@3903c1059bcf/Editor/BuildHelperUtils.cs
2025-07-29 13:45:50 +03:00

57 lines
2.0 KiB
C#

using System.Linq;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEditor.XR.Management;
using UnityEngine.XR.Management;
namespace UnityEditor.XR.OpenXR
{
[InitializeOnLoad]
internal class BuildHelperUtils : IPreprocessBuildWithReport
{
public static bool HasLoader(BuildTargetGroup targetGroup, System.Type loader)
{
var settings = XRGeneralSettingsPerBuildTarget.XRGeneralSettingsForBuildTarget(targetGroup);
if (settings)
{
#pragma warning disable CS0618
return settings.Manager.loaders.Any(loader.IsInstanceOfType);
#pragma warning restore CS0618
}
return false;
}
public int callbackOrder => -100;
public void OnPreprocessBuild(BuildReport report)
{
MakeSureXRGeneralSettingsExists(report.summary.platformGroup);
}
public static XRGeneralSettings MakeSureXRGeneralSettingsExists(BuildTargetGroup targetGroup)
{
// If we don't have XRGeneralSettings in EditorBuildSettings, check if we have one in the project and set it.
var settings = XRGeneralSettingsPerBuildTarget.XRGeneralSettingsForBuildTarget(targetGroup);
if (!settings)
{
string searchText = "t:XRGeneralSettings";
string[] assets = AssetDatabase.FindAssets(searchText);
for (int i = 0; i < assets.Length; ++i)
{
string path = AssetDatabase.GUIDToAssetPath(assets[i]);
var allSettings = AssetDatabase.LoadAssetAtPath(path, typeof(XRGeneralSettingsPerBuildTarget)) as XRGeneralSettingsPerBuildTarget;
if (allSettings != null)
{
EditorBuildSettings.AddConfigObject(XRGeneralSettings.k_SettingsKey, allSettings, true);
break;
}
}
}
return settings;
}
}
}