Skip to content

Commit d2d519f

Browse files
committed
Add support for CheckCapability
1 parent 9c825df commit d2d519f

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

Assets/MixedRealityToolkit.Providers/WindowsMixedReality/XRSDK/WindowsMixedRealityDeviceManager.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,16 @@
77
using System;
88
using UnityEngine;
99
using UnityEngine.XR;
10+
using Microsoft.MixedReality.Toolkit.Windows.Utilities;
1011

1112
#if (UNITY_WSA && DOTNETWINRT_PRESENT) || WINDOWS_UWP
1213
using Microsoft.MixedReality.Toolkit.WindowsMixedReality;
1314
#endif // (UNITY_WSA && DOTNETWINRT_PRESENT) || WINDOWS_UWP
1415

16+
#if WINDOWS_UWP
17+
using WindowsInputSpatial = Windows.UI.Input.Spatial;
18+
#endif // WINDOWS_UWP
19+
1520
namespace Microsoft.MixedReality.Toolkit.XRSDK.WindowsMixedReality
1621
{
1722
/// <summary>
@@ -49,6 +54,44 @@ public override void Enable()
4954
}
5055
#endif // (UNITY_WSA && DOTNETWINRT_PRESENT) || WINDOWS_UWP
5156

57+
#region IMixedRealityCapabilityCheck Implementation
58+
59+
/// <inheritdoc />
60+
public override bool CheckCapability(MixedRealityCapability capability)
61+
{
62+
if (WindowsApiChecker.UniversalApiContractV8_IsAvailable) // Windows 10 1903 or later
63+
{
64+
#if WINDOWS_UWP
65+
switch (capability)
66+
{
67+
case MixedRealityCapability.ArticulatedHand:
68+
case MixedRealityCapability.GGVHand:
69+
return WindowsInputSpatial.SpatialInteractionManager.IsSourceKindSupported(WindowsInputSpatial.SpatialInteractionSourceKind.Hand);
70+
71+
case MixedRealityCapability.MotionController:
72+
return WindowsInputSpatial.SpatialInteractionManager.IsSourceKindSupported(WindowsInputSpatial.SpatialInteractionSourceKind.Controller);
73+
}
74+
#endif // WINDOWS_UWP
75+
}
76+
else // Pre-Windows 10 1903.
77+
{
78+
if (XRSDKSubsystemHelpers.DisplaySubsystem != null && !XRSDKSubsystemHelpers.DisplaySubsystem.displayOpaque)
79+
{
80+
// HoloLens supports GGV hands
81+
return capability == MixedRealityCapability.GGVHand;
82+
}
83+
else
84+
{
85+
// Windows Mixed Reality Immersive devices support motion controllers
86+
return capability == MixedRealityCapability.MotionController;
87+
}
88+
}
89+
90+
return false;
91+
}
92+
93+
#endregion IMixedRealityCapabilityCheck Implementation
94+
5295
#region Controller Utilities
5396

5497
/// <inheritdoc />

0 commit comments

Comments
 (0)