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

4 years ago
  1. using System.Collections.Generic;
  2. using UnityEngine.XR.ARSubsystems;
  3. using UnityEngine.XR.Management;
  4. namespace UnityEngine.XR.ARKit
  5. {
  6. public class ARKitLoader : XRLoaderHelper
  7. {
  8. private static List<XRSessionSubsystemDescriptor> s_SessionSubsystemDescriptors = new List<XRSessionSubsystemDescriptor>();
  9. private static List<XRCameraSubsystemDescriptor> s_CameraSubsystemDescriptors = new List<XRCameraSubsystemDescriptor>();
  10. private static List<XRDepthSubsystemDescriptor> s_DepthSubsystemDescriptors = new List<XRDepthSubsystemDescriptor>();
  11. private static List<XRPlaneSubsystemDescriptor> s_PlaneSubsystemDescriptors = new List<XRPlaneSubsystemDescriptor>();
  12. private static List<XRAnchorSubsystemDescriptor> s_AnchorSubsystemDescriptors = new List<XRAnchorSubsystemDescriptor>();
  13. private static List<XRRaycastSubsystemDescriptor> s_RaycastSubsystemDescriptors = new List<XRRaycastSubsystemDescriptor>();
  14. private static List<XREnvironmentProbeSubsystemDescriptor> s_EnvironmentProbeSubsystemDescriptors = new List<XREnvironmentProbeSubsystemDescriptor>();
  15. private static List<XRInputSubsystemDescriptor> s_InputSubsystemDescriptors = new List<XRInputSubsystemDescriptor>();
  16. private static List<XRImageTrackingSubsystemDescriptor> s_ImageTrackingSubsystemDescriptors = new List<XRImageTrackingSubsystemDescriptor>();
  17. private static List<XRFaceSubsystemDescriptor> s_FaceSubsystemDescriptors = new List<XRFaceSubsystemDescriptor>();
  18. public XRSessionSubsystem sessionSubsystem
  19. {
  20. get
  21. {
  22. return GetLoadedSubsystem<XRSessionSubsystem>();
  23. }
  24. }
  25. public XRCameraSubsystem cameraSubsystem
  26. {
  27. get
  28. {
  29. return GetLoadedSubsystem<XRCameraSubsystem>();
  30. }
  31. }
  32. public XRDepthSubsystem depthSubsystem
  33. {
  34. get
  35. {
  36. return GetLoadedSubsystem<XRDepthSubsystem>();
  37. }
  38. }
  39. public XRPlaneSubsystem planeSubsystem
  40. {
  41. get
  42. {
  43. return GetLoadedSubsystem<XRPlaneSubsystem>();
  44. }
  45. }
  46. public XRAnchorSubsystem anchorSubsystem
  47. {
  48. get
  49. {
  50. return GetLoadedSubsystem<XRAnchorSubsystem>();
  51. }
  52. }
  53. public XRRaycastSubsystem raycastSubsystem
  54. {
  55. get
  56. {
  57. return GetLoadedSubsystem<XRRaycastSubsystem>();
  58. }
  59. }
  60. public XREnvironmentProbeSubsystem environmentProbeSubsystem
  61. {
  62. get
  63. {
  64. return GetLoadedSubsystem<XREnvironmentProbeSubsystem>();
  65. }
  66. }
  67. public XRInputSubsystem inputSubsystem
  68. {
  69. get
  70. {
  71. return GetLoadedSubsystem<XRInputSubsystem>();
  72. }
  73. }
  74. public XRImageTrackingSubsystem imageTrackingSubsystem
  75. {
  76. get
  77. {
  78. return GetLoadedSubsystem<XRImageTrackingSubsystem>();
  79. }
  80. }
  81. public XRFaceSubsystem faceSubsystem
  82. {
  83. get
  84. {
  85. return GetLoadedSubsystem<XRFaceSubsystem>();
  86. }
  87. }
  88. public override bool Initialize()
  89. {
  90. #if UNITY_IOS && !UNITY_EDITOR
  91. CreateSubsystem<XRSessionSubsystemDescriptor, XRSessionSubsystem>(s_SessionSubsystemDescriptors, "ARKit-Session");
  92. CreateSubsystem<XRCameraSubsystemDescriptor, XRCameraSubsystem>(s_CameraSubsystemDescriptors, "ARKit-Camera");
  93. CreateSubsystem<XRDepthSubsystemDescriptor, XRDepthSubsystem>(s_DepthSubsystemDescriptors, "ARKit-Depth");
  94. CreateSubsystem<XRPlaneSubsystemDescriptor, XRPlaneSubsystem>(s_PlaneSubsystemDescriptors, "ARKit-Plane");
  95. CreateSubsystem<XRAnchorSubsystemDescriptor, XRAnchorSubsystem>(s_AnchorSubsystemDescriptors, "ARKit-Anchor");
  96. CreateSubsystem<XRRaycastSubsystemDescriptor, XRRaycastSubsystem>(s_RaycastSubsystemDescriptors, "ARKit-Raycast");
  97. CreateSubsystem<XREnvironmentProbeSubsystemDescriptor, XREnvironmentProbeSubsystem>(s_EnvironmentProbeSubsystemDescriptors, "ARKit-EnvironmentProbe");
  98. CreateSubsystem<XRInputSubsystemDescriptor, XRInputSubsystem>(s_InputSubsystemDescriptors, "ARKit-Input");
  99. // Optional subsystems that might not have been registered, based on the iOS version.
  100. CreateSubsystem<XRImageTrackingSubsystemDescriptor, XRImageTrackingSubsystem>(s_ImageTrackingSubsystemDescriptors, "ARKit-ImageTracking");
  101. CreateSubsystem<XRFaceSubsystemDescriptor, XRFaceSubsystem>(s_FaceSubsystemDescriptors, "ARKit-Face");
  102. if (sessionSubsystem == null)
  103. {
  104. Debug.LogError("Failed to load session subsystem.");
  105. }
  106. return sessionSubsystem != null;
  107. #else
  108. return false;
  109. #endif
  110. }
  111. public override bool Start()
  112. {
  113. StartSubsystem<XRSessionSubsystem>();
  114. StartSubsystem<XRCameraSubsystem>();
  115. StartSubsystem<XRInputSubsystem>();
  116. return true;
  117. }
  118. public override bool Stop()
  119. {
  120. StopSubsystem<XRSessionSubsystem>();
  121. StopSubsystem<XRCameraSubsystem>();
  122. StopSubsystem<XRInputSubsystem>();
  123. return true;
  124. }
  125. public override bool Deinitialize()
  126. {
  127. #if UNITY_IOS && !UNITY_EDITOR
  128. DestroySubsystem<XRSessionSubsystem>();
  129. DestroySubsystem<XRCameraSubsystem>();
  130. DestroySubsystem<XRDepthSubsystem>();
  131. DestroySubsystem<XRPlaneSubsystem>();
  132. DestroySubsystem<XRAnchorSubsystem>();
  133. DestroySubsystem<XRRaycastSubsystem>();
  134. DestroySubsystem<XREnvironmentProbeSubsystem>();
  135. DestroySubsystem<XRInputSubsystem>();
  136. DestroySubsystem<XRImageTrackingSubsystem>();
  137. DestroySubsystem<XRFaceSubsystem>();
  138. #endif
  139. return true;
  140. }
  141. }
  142. }