/// <inheritdoc />
        public bool CheckCapability(MixedRealityCapability capability)
        {
            if (WindowsApiChecker.IsMethodAvailable(
                    "Windows.UI.Input.Spatial",
                    "SpatialInteractionManager",
                    "IsSourceKindSupported"))
            {
#if WINDOWS_UWP
                switch (capability)
                {
                case MixedRealityCapability.ArticulatedHand:
                case MixedRealityCapability.GGVHand:
                    return(SpatialInteractionManager.IsSourceKindSupported(SpatialInteractionSourceKind.Hand));

                case MixedRealityCapability.MotionController:
                    return(SpatialInteractionManager.IsSourceKindSupported(SpatialInteractionSourceKind.Controller));
                }
#endif // WINDOWS_UWP
            }
            else
            {
                if (!UnityEngine.XR.WSA.HolographicSettings.IsDisplayOpaque)
                {
                    // HoloLens supports GGV hands
                    return(capability == MixedRealityCapability.GGVHand);
                }
                else
                {
                    // Windows Mixed Reality immersive devices support motion controllers
                    return(capability == MixedRealityCapability.MotionController);
                }
            }

            return(false);
        }
        /// <inheritdoc />
        public override bool CheckCapability(MixedRealityCapability capability)
        {
            if (WindowsApiChecker.IsMethodAvailable(
                    "Windows.UI.Input.Spatial",
                    "SpatialInteractionManager",
                    "IsSourceKindSupported"))
            {
#if WINDOWS_UWP
                switch (capability)
                {
                case MixedRealityCapability.ArticulatedHand:
                case MixedRealityCapability.GGVHand:
                    return(SpatialInteractionManager.IsSourceKindSupported(SpatialInteractionSourceKind.Hand));

                case MixedRealityCapability.MotionController:
                    return(SpatialInteractionManager.IsSourceKindSupported(SpatialInteractionSourceKind.Controller));
                }
#endif // WINDOWS_UWP
            }
            else // Pre-Windows 10 1903.
            {
                if (XRSDKSubsystemHelpers.DisplaySubsystem != null && !XRSDKSubsystemHelpers.DisplaySubsystem.displayOpaque)
                {
                    // HoloLens supports GGV hands
                    return(capability == MixedRealityCapability.GGVHand);
                }
                else
                {
                    // Windows Mixed Reality immersive devices support motion controllers
                    return(capability == MixedRealityCapability.MotionController);
                }
            }

            return(false);
        }