mixedreality/com.microsoft.mixedreality..../Runtime/Utilities/FeatureUtils.cs

33 lines
1.1 KiB
C#

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System;
using UnityEngine.XR.ARSubsystems;
using UnityEngine.XR.OpenXR.Features;
namespace Microsoft.MixedReality.OpenXR
{
internal static class FeatureUtils
{
// Note:Guid.Empty is converted into TrackableId.invalidId
internal static TrackableId ToTrackableId(Guid guid)
{
byte[] bytes = guid.ToByteArray();
ulong subId1 = BitConverter.ToUInt64(bytes, 0);
ulong subId2 = BitConverter.ToUInt64(bytes, 8);
return new TrackableId(subId1, subId2);
}
// Note:TrackableId.invalidId is converted into Guid.Empty
internal static Guid ToGuid(TrackableId id)
{
byte[] bytes = new byte[16];
Array.Copy(BitConverter.GetBytes(id.subId1), 0, bytes, 0, 8);
Array.Copy(BitConverter.GetBytes(id.subId2), 0, bytes, 8, 8);
return new Guid(bytes);
}
internal static bool IsValidAndEnabled(this OpenXRFeature plugin) => plugin != null && plugin.enabled;
}
}