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