// // /*===============================================================================
// // Copyright (C) 2023 PhantomsXR Ltd. All Rights Reserved.
// //
// // This file is part of the UnityFusion.Adapter.Runtime.
// //
// // The XR-MOD cannot be copied, distributed, or made available to
// // third-parties for commercial purposes without written permission of PhantomsXR Ltd.
// //
// // Contact nswell@phantomsxr.com for licensing requests.
// // ===============================================================================*/
using Phantom.XRMOD.ActionNotification.Runtime;
using UnityEngine;
using UnityEngine.Assertions;
using UnityEngine.UI;
using UnityFusion.Runtime.Enviorment;
namespace UnityFusion.CLRBinding.Adapter
{
///
/// Static registry for built-in cross-binding adapters.
/// Automatically registers all standard adapters when the UnityFusion environment is initialized.
///
public class UnityFusionBuiltInAdaptorRegister
{
///
/// Automatically registers standard adapters on script load.
///
[RuntimeInitializeOnLoadMethod]
public static void Register()
{
ActionNotificationCenter.DefaultCenter.AddObserver(RegisterAllAdaptor,
nameof(ActionParameterDataType.RegisterBuiltInAdaptor));
}
private static void RegisterAllAdaptor(BaseNotificationData _data)
{
if (_data is not UnityFusionArgs tmp_UnityFusionNotificationData) return;
var tmp_AppDomainOfUnityFusion = tmp_UnityFusionNotificationData.AppDomain as AppDomain;
Assert.IsNotNull(tmp_AppDomainOfUnityFusion, "The AppDomain is invalid.");
tmp_AppDomainOfUnityFusion.RegisterCrossBindingAdaptor(new AsyncStateMachineClassInheritanceAdaptor());
tmp_AppDomainOfUnityFusion.RegisterCrossBindingAdaptor(new CoroutineAdapter());
tmp_AppDomainOfUnityFusion.RegisterCrossBindingAdaptor(new XRMODBehaviourAdapter());
tmp_AppDomainOfUnityFusion.RegisterCrossBindingAdaptor(new BaseNotificationDataAdapter());
tmp_AppDomainOfUnityFusion.RegisterCrossBindingAdaptor(new ExceptionAdapter());
tmp_AppDomainOfUnityFusion.RegisterCrossBindingAdaptor(new IComparer_1_TransformAdapter());
tmp_AppDomainOfUnityFusion.RegisterCrossBindingAdaptor(new UIBehaviourAdaptor());
tmp_AppDomainOfUnityFusion.RegisterCrossBindingAdaptor(new ScriptableObjectAdapter());
tmp_AppDomainOfUnityFusion.RegisterCrossBindingAdaptor(new SelectableAdapter());
tmp_AppDomainOfUnityFusion.RegisterCrossBindingAdaptor(new MaskableGraphicAdapter());
ActionNotificationCenter.DefaultCenter.PostNotification(
nameof(ActionParameterDataType.RegisterExtraAdaptor),
new UnityFusionArgs()
{
AppDomain = tmp_AppDomainOfUnityFusion
});
}
}
}