// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. #if ARFOUNDATION_PRESENT using UnityEngine.SpatialTracking; #endif // ARFOUNDATION_PRESENT namespace Microsoft.MixedReality.Toolkit.Experimental.UnityAR { /// /// Class that performs conversions between Unity's AR enum values and the provider's /// custom enums. /// public static class ArEnumConversion { #if ARFOUNDATION_PRESENT /// /// Converts from an to a Unity tracked pose value. /// /// Value to convert. /// /// Unity tracked pose equivalent of the . /// public static TrackedPoseDriver.TrackedPose ToUnityTrackedPose(ArTrackedPose pose) { switch (pose) { case ArTrackedPose.Center: return TrackedPoseDriver.TrackedPose.Center; case ArTrackedPose.ColorCamera: return TrackedPoseDriver.TrackedPose.ColorCamera; case ArTrackedPose.Head: return TrackedPoseDriver.TrackedPose.Head; case ArTrackedPose.LeftEye: return TrackedPoseDriver.TrackedPose.LeftEye; case ArTrackedPose.LeftPose: return TrackedPoseDriver.TrackedPose.LeftPose; case ArTrackedPose.RightEye: return TrackedPoseDriver.TrackedPose.RightEye; case ArTrackedPose.RightPose: return TrackedPoseDriver.TrackedPose.RightPose; default: // Unknown pose, pass the value through. return (TrackedPoseDriver.TrackedPose)((int)pose); } } /// /// Converts from an to a Unity tracking type value. /// /// Value to convert. /// /// Unity tracking type equivalent of the . /// public static TrackedPoseDriver.TrackingType ToUnityTrackingType(ArTrackingType trackingType) { switch (trackingType) { case ArTrackingType.Position: return TrackedPoseDriver.TrackingType.PositionOnly; case ArTrackingType.Rotation: return TrackedPoseDriver.TrackingType.RotationOnly; case ArTrackingType.RotationAndPosition: return TrackedPoseDriver.TrackingType.RotationAndPosition; default: // Unknown type, pass the value through. return (TrackedPoseDriver.TrackingType)((int)trackingType); } } /// /// Converts from an to a Unity update type value. /// /// Value to convert. /// /// Unity update type equivalent of the . /// public static TrackedPoseDriver.UpdateType ToUnityUpdateType(ArUpdateType updateType) { switch (updateType) { case ArUpdateType.BeforeRender: return TrackedPoseDriver.UpdateType.BeforeRender; case ArUpdateType.Update: return TrackedPoseDriver.UpdateType.Update; case ArUpdateType.UpdateAndBeforeRender: return TrackedPoseDriver.UpdateType.UpdateAndBeforeRender; default: // Unknown type, pass the value through. return (TrackedPoseDriver.UpdateType)((int)updateType); } } #endif // ARFOUNDATION_PRESENT } }