You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
6.0 KiB
162 lines
6.0 KiB
using System.Collections.Generic;
|
|
using UnityEngine.XR.ARSubsystems;
|
|
using UnityEngine.XR.Management;
|
|
|
|
namespace UnityEngine.XR.ARKit
|
|
{
|
|
public class ARKitLoader : XRLoaderHelper
|
|
{
|
|
private static List<XRSessionSubsystemDescriptor> s_SessionSubsystemDescriptors = new List<XRSessionSubsystemDescriptor>();
|
|
private static List<XRCameraSubsystemDescriptor> s_CameraSubsystemDescriptors = new List<XRCameraSubsystemDescriptor>();
|
|
private static List<XRDepthSubsystemDescriptor> s_DepthSubsystemDescriptors = new List<XRDepthSubsystemDescriptor>();
|
|
private static List<XRPlaneSubsystemDescriptor> s_PlaneSubsystemDescriptors = new List<XRPlaneSubsystemDescriptor>();
|
|
private static List<XRAnchorSubsystemDescriptor> s_AnchorSubsystemDescriptors = new List<XRAnchorSubsystemDescriptor>();
|
|
private static List<XRRaycastSubsystemDescriptor> s_RaycastSubsystemDescriptors = new List<XRRaycastSubsystemDescriptor>();
|
|
private static List<XREnvironmentProbeSubsystemDescriptor> s_EnvironmentProbeSubsystemDescriptors = new List<XREnvironmentProbeSubsystemDescriptor>();
|
|
private static List<XRInputSubsystemDescriptor> s_InputSubsystemDescriptors = new List<XRInputSubsystemDescriptor>();
|
|
private static List<XRImageTrackingSubsystemDescriptor> s_ImageTrackingSubsystemDescriptors = new List<XRImageTrackingSubsystemDescriptor>();
|
|
private static List<XRFaceSubsystemDescriptor> s_FaceSubsystemDescriptors = new List<XRFaceSubsystemDescriptor>();
|
|
|
|
public XRSessionSubsystem sessionSubsystem
|
|
{
|
|
get
|
|
{
|
|
return GetLoadedSubsystem<XRSessionSubsystem>();
|
|
}
|
|
}
|
|
|
|
public XRCameraSubsystem cameraSubsystem
|
|
{
|
|
get
|
|
{
|
|
return GetLoadedSubsystem<XRCameraSubsystem>();
|
|
}
|
|
}
|
|
|
|
public XRDepthSubsystem depthSubsystem
|
|
{
|
|
get
|
|
{
|
|
return GetLoadedSubsystem<XRDepthSubsystem>();
|
|
}
|
|
}
|
|
|
|
public XRPlaneSubsystem planeSubsystem
|
|
{
|
|
get
|
|
{
|
|
return GetLoadedSubsystem<XRPlaneSubsystem>();
|
|
}
|
|
}
|
|
|
|
public XRAnchorSubsystem anchorSubsystem
|
|
{
|
|
get
|
|
{
|
|
return GetLoadedSubsystem<XRAnchorSubsystem>();
|
|
}
|
|
}
|
|
|
|
public XRRaycastSubsystem raycastSubsystem
|
|
{
|
|
get
|
|
{
|
|
return GetLoadedSubsystem<XRRaycastSubsystem>();
|
|
}
|
|
}
|
|
|
|
public XREnvironmentProbeSubsystem environmentProbeSubsystem
|
|
{
|
|
get
|
|
{
|
|
return GetLoadedSubsystem<XREnvironmentProbeSubsystem>();
|
|
}
|
|
}
|
|
|
|
public XRInputSubsystem inputSubsystem
|
|
{
|
|
get
|
|
{
|
|
return GetLoadedSubsystem<XRInputSubsystem>();
|
|
}
|
|
}
|
|
|
|
public XRImageTrackingSubsystem imageTrackingSubsystem
|
|
{
|
|
get
|
|
{
|
|
return GetLoadedSubsystem<XRImageTrackingSubsystem>();
|
|
}
|
|
}
|
|
|
|
public XRFaceSubsystem faceSubsystem
|
|
{
|
|
get
|
|
{
|
|
return GetLoadedSubsystem<XRFaceSubsystem>();
|
|
}
|
|
}
|
|
|
|
public override bool Initialize()
|
|
{
|
|
#if UNITY_IOS && !UNITY_EDITOR
|
|
CreateSubsystem<XRSessionSubsystemDescriptor, XRSessionSubsystem>(s_SessionSubsystemDescriptors, "ARKit-Session");
|
|
CreateSubsystem<XRCameraSubsystemDescriptor, XRCameraSubsystem>(s_CameraSubsystemDescriptors, "ARKit-Camera");
|
|
CreateSubsystem<XRDepthSubsystemDescriptor, XRDepthSubsystem>(s_DepthSubsystemDescriptors, "ARKit-Depth");
|
|
CreateSubsystem<XRPlaneSubsystemDescriptor, XRPlaneSubsystem>(s_PlaneSubsystemDescriptors, "ARKit-Plane");
|
|
CreateSubsystem<XRAnchorSubsystemDescriptor, XRAnchorSubsystem>(s_AnchorSubsystemDescriptors, "ARKit-Anchor");
|
|
CreateSubsystem<XRRaycastSubsystemDescriptor, XRRaycastSubsystem>(s_RaycastSubsystemDescriptors, "ARKit-Raycast");
|
|
CreateSubsystem<XREnvironmentProbeSubsystemDescriptor, XREnvironmentProbeSubsystem>(s_EnvironmentProbeSubsystemDescriptors, "ARKit-EnvironmentProbe");
|
|
CreateSubsystem<XRInputSubsystemDescriptor, XRInputSubsystem>(s_InputSubsystemDescriptors, "ARKit-Input");
|
|
|
|
// Optional subsystems that might not have been registered, based on the iOS version.
|
|
CreateSubsystem<XRImageTrackingSubsystemDescriptor, XRImageTrackingSubsystem>(s_ImageTrackingSubsystemDescriptors, "ARKit-ImageTracking");
|
|
CreateSubsystem<XRFaceSubsystemDescriptor, XRFaceSubsystem>(s_FaceSubsystemDescriptors, "ARKit-Face");
|
|
|
|
if (sessionSubsystem == null)
|
|
{
|
|
Debug.LogError("Failed to load session subsystem.");
|
|
}
|
|
|
|
return sessionSubsystem != null;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
public override bool Start()
|
|
{
|
|
StartSubsystem<XRSessionSubsystem>();
|
|
StartSubsystem<XRCameraSubsystem>();
|
|
StartSubsystem<XRInputSubsystem>();
|
|
|
|
return true;
|
|
}
|
|
|
|
public override bool Stop()
|
|
{
|
|
StopSubsystem<XRSessionSubsystem>();
|
|
StopSubsystem<XRCameraSubsystem>();
|
|
StopSubsystem<XRInputSubsystem>();
|
|
|
|
return true;
|
|
}
|
|
|
|
public override bool Deinitialize()
|
|
{
|
|
#if UNITY_IOS && !UNITY_EDITOR
|
|
DestroySubsystem<XRSessionSubsystem>();
|
|
DestroySubsystem<XRCameraSubsystem>();
|
|
DestroySubsystem<XRDepthSubsystem>();
|
|
DestroySubsystem<XRPlaneSubsystem>();
|
|
DestroySubsystem<XRAnchorSubsystem>();
|
|
DestroySubsystem<XRRaycastSubsystem>();
|
|
DestroySubsystem<XREnvironmentProbeSubsystem>();
|
|
DestroySubsystem<XRInputSubsystem>();
|
|
DestroySubsystem<XRImageTrackingSubsystem>();
|
|
DestroySubsystem<XRFaceSubsystem>();
|
|
#endif
|
|
return true;
|
|
}
|
|
}
|
|
}
|