in Assets/MRTK/Providers/OpenXR/Scripts/OpenXRDeviceManager.cs [349:490]
private void CheckForGestures()
{
if (gestureRecognizer != null)
{
while (gestureRecognizer.TryGetNextEvent(ref eventData))
{
switch (eventData.EventType)
{
case GestureEventType.Tapped:
if (selectAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureCompleted(controller, selectAction);
}
}
break;
case GestureEventType.HoldStarted:
if (holdAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureStarted(controller, holdAction);
}
}
break;
case GestureEventType.HoldCompleted:
if (holdAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureCompleted(controller, holdAction);
}
}
break;
case GestureEventType.HoldCanceled:
if (holdAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureCanceled(controller, holdAction);
}
}
break;
case GestureEventType.ManipulationStarted:
if (manipulationAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureStarted(controller, manipulationAction);
}
}
break;
case GestureEventType.ManipulationUpdated:
if (manipulationAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureUpdated(controller, manipulationAction, eventData.ManipulationData.GetValueOrDefault().CumulativeTranslation);
}
}
break;
case GestureEventType.ManipulationCompleted:
if (manipulationAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureCompleted(controller, manipulationAction, eventData.ManipulationData.GetValueOrDefault().CumulativeTranslation);
}
}
break;
case GestureEventType.ManipulationCanceled:
if (manipulationAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureCanceled(controller, manipulationAction);
}
}
break;
}
}
}
if (navigationGestureRecognizer != null)
{
while (navigationGestureRecognizer.TryGetNextEvent(ref eventData))
{
switch (eventData.EventType)
{
case GestureEventType.NavigationStarted:
if (navigationAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureStarted(controller, navigationAction);
}
}
break;
case GestureEventType.NavigationUpdated:
if (navigationAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureUpdated(controller, navigationAction, eventData.NavigationData.GetValueOrDefault().NormalizedOffset);
}
}
break;
case GestureEventType.NavigationCompleted:
if (navigationAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureCompleted(controller, navigationAction, eventData.NavigationData.GetValueOrDefault().NormalizedOffset);
}
}
break;
case GestureEventType.NavigationCanceled:
if (navigationAction != MixedRealityInputAction.None)
{
GenericXRSDKController controller = FindMatchingController(eventData.Handedness);
if (controller != null)
{
Service?.RaiseGestureCanceled(controller, navigationAction);
}
}
break;
}
}
}
}