40 lines
1.5 KiB
C#
40 lines
1.5 KiB
C#
|
using System;
|
||
|
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace UnityEditor.XR.Management
|
||
|
{
|
||
|
internal class XRCustomLoaderUIManager
|
||
|
{
|
||
|
public static IXRCustomLoaderUI GetCustomLoaderUI(string loaderTypeName, BuildTargetGroup buildTargetGroup)
|
||
|
{
|
||
|
IXRCustomLoaderUI ret = null;
|
||
|
|
||
|
var customLoaderTypes = TypeCache.GetTypesDerivedFrom(typeof(IXRCustomLoaderUI));
|
||
|
foreach (var customLoader in customLoaderTypes)
|
||
|
{
|
||
|
var attribs = customLoader.GetCustomAttributes(typeof(XRCustomLoaderUIAttribute), true);
|
||
|
foreach (var attrib in attribs)
|
||
|
{
|
||
|
if (attrib is XRCustomLoaderUIAttribute)
|
||
|
{
|
||
|
var customUiAttrib = attrib as XRCustomLoaderUIAttribute;
|
||
|
if (String.Compare(loaderTypeName, customUiAttrib.loaderTypeName, true) == 0 &&
|
||
|
buildTargetGroup == customUiAttrib.buildTargetGroup)
|
||
|
{
|
||
|
if (ret != null)
|
||
|
{
|
||
|
Debug.Log($"Multiple custom ui renderers found for ({loaderTypeName}, {buildTargetGroup}). Defaulting to built-in rendering instead.");
|
||
|
return null;
|
||
|
}
|
||
|
ret = Activator.CreateInstance(customLoader) as IXRCustomLoaderUI;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return ret;
|
||
|
}
|
||
|
}
|
||
|
}
|