SW 중심대학 OSS GIT 서버 박건태, 이승준, 고기완, 이준호 새로운 배포
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

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;
}
}
}