@@ -2911,10 +2911,16 @@ public IEnumerator UI_CanDriveUIFromGamepad()
2911
2911
Assert . That ( scene . leftChildReceiver . events ,
2912
2912
EventSequence (
2913
2913
OneEvent ( "type" , EventType . Move ) ,
2914
+ OneEvent ( "device" , gamepad ) ,
2914
2915
OneEvent ( "moveDir" , MoveDirection . Right ) ,
2915
2916
OneEvent ( "moveVector" , gamepad . leftStick . ReadValue ( ) ) ) ) ;
2916
2917
Assert . That ( scene . rightChildReceiver . events , Is . Empty ) ;
2917
2918
2919
+ #if UNITY_INPUT_SYSTEM_INPUT_MODULE_NAVIGATION_DEVICE_TYPE
2920
+ Assert . That ( scene . uiModule . GetNavigationEventDeviceType ( scene . leftChildReceiver . events [ 0 ] . data ) ,
2921
+ Is . EqualTo ( NavigationDeviceType . NonKeyboard ) ) ;
2922
+ #endif
2923
+
2918
2924
scene . leftChildReceiver . events . Clear ( ) ;
2919
2925
2920
2926
// Move left.
@@ -2924,6 +2930,7 @@ public IEnumerator UI_CanDriveUIFromGamepad()
2924
2930
Assert . That ( scene . leftChildReceiver . events ,
2925
2931
EventSequence (
2926
2932
OneEvent ( "type" , EventType . Move ) ,
2933
+ OneEvent ( "device" , gamepad ) ,
2927
2934
OneEvent ( "moveDir" , MoveDirection . Left ) ,
2928
2935
OneEvent ( "moveVector" , gamepad . leftStick . ReadValue ( ) ) ) ) ;
2929
2936
Assert . That ( scene . rightChildReceiver . events , Is . Empty ) ;
@@ -2937,6 +2944,7 @@ public IEnumerator UI_CanDriveUIFromGamepad()
2937
2944
Assert . That ( scene . leftChildReceiver . events ,
2938
2945
EventSequence (
2939
2946
OneEvent ( "type" , EventType . Move ) ,
2947
+ OneEvent ( "device" , gamepad ) ,
2940
2948
OneEvent ( "moveDir" , MoveDirection . Up ) ,
2941
2949
OneEvent ( "moveVector" , gamepad . leftStick . ReadValue ( ) ) ) ) ;
2942
2950
Assert . That ( scene . rightChildReceiver . events , Is . Empty ) ;
@@ -2950,6 +2958,7 @@ public IEnumerator UI_CanDriveUIFromGamepad()
2950
2958
Assert . That ( scene . leftChildReceiver . events ,
2951
2959
EventSequence (
2952
2960
OneEvent ( "type" , EventType . Move ) ,
2961
+ OneEvent ( "device" , gamepad ) ,
2953
2962
OneEvent ( "moveDir" , MoveDirection . Down ) ,
2954
2963
OneEvent ( "moveVector" , gamepad . leftStick . ReadValue ( ) ) ) ) ;
2955
2964
Assert . That ( scene . rightChildReceiver . events , Is . Empty ) ;
@@ -2964,6 +2973,7 @@ public IEnumerator UI_CanDriveUIFromGamepad()
2964
2973
Assert . That ( scene . leftChildReceiver . events ,
2965
2974
EventSequence (
2966
2975
OneEvent ( "type" , EventType . Move ) ,
2976
+ OneEvent ( "device" , gamepad ) ,
2967
2977
OneEvent ( "moveDir" , MoveDirection . Down ) ,
2968
2978
OneEvent ( "moveVector" , gamepad . leftStick . ReadValue ( ) ) ) ) ;
2969
2979
@@ -2977,6 +2987,7 @@ public IEnumerator UI_CanDriveUIFromGamepad()
2977
2987
Assert . That ( scene . leftChildReceiver . events ,
2978
2988
EventSequence (
2979
2989
OneEvent ( "type" , EventType . Move ) ,
2990
+ OneEvent ( "device" , gamepad ) ,
2980
2991
OneEvent ( "moveDir" , MoveDirection . Down ) ,
2981
2992
OneEvent ( "moveVector" , gamepad . leftStick . ReadValue ( ) ) ) ) ;
2982
2993
@@ -2986,7 +2997,12 @@ public IEnumerator UI_CanDriveUIFromGamepad()
2986
2997
PressAndRelease ( gamepad . buttonSouth ) ;
2987
2998
yield return null ;
2988
2999
2989
- Assert . That ( scene . leftChildReceiver . events , EventSequence ( OneEvent ( "type" , EventType . Submit ) ) ) ;
3000
+ Assert . That ( scene . leftChildReceiver . events ,
3001
+ EventSequence (
3002
+ OneEvent ( "type" , EventType . Submit ) ,
3003
+ OneEvent ( "device" , gamepad )
3004
+ )
3005
+ ) ;
2990
3006
Assert . That ( scene . rightChildReceiver . events , Is . Empty ) ;
2991
3007
2992
3008
scene . leftChildReceiver . events . Clear ( ) ;
@@ -2995,7 +3011,12 @@ public IEnumerator UI_CanDriveUIFromGamepad()
2995
3011
PressAndRelease ( gamepad . buttonEast ) ;
2996
3012
yield return null ;
2997
3013
2998
- Assert . That ( scene . leftChildReceiver . events , EventSequence ( OneEvent ( "type" , EventType . Cancel ) ) ) ;
3014
+ Assert . That ( scene . leftChildReceiver . events ,
3015
+ EventSequence (
3016
+ OneEvent ( "type" , EventType . Cancel ) ,
3017
+ OneEvent ( "device" , gamepad )
3018
+ )
3019
+ ) ;
2999
3020
Assert . That ( scene . rightChildReceiver . events , Is . Empty ) ;
3000
3021
3001
3022
scene . leftChildReceiver . events . Clear ( ) ;
@@ -4463,6 +4484,7 @@ public struct Event
4463
4484
public BaseEventData data { get ; }
4464
4485
public AxisEventData axisData => ( AxisEventData ) data ;
4465
4486
public ExtendedPointerEventData pointerData => ( ExtendedPointerEventData ) data ;
4487
+ public INavigationEventData navigationData => ( INavigationEventData ) data ;
4466
4488
4467
4489
public Event ( EventType type , BaseEventData data )
4468
4490
{
@@ -4521,12 +4543,12 @@ public void OnMove(AxisEventData eventData)
4521
4543
4522
4544
public void OnSubmit ( BaseEventData eventData )
4523
4545
{
4524
- events . Add ( new Event ( EventType . Submit , null ) ) ;
4546
+ events . Add ( new Event ( EventType . Submit , CloneSubmitCancelEventData ( eventData ) ) ) ;
4525
4547
}
4526
4548
4527
4549
public void OnCancel ( BaseEventData eventData )
4528
4550
{
4529
- events . Add ( new Event ( EventType . Cancel , null ) ) ;
4551
+ events . Add ( new Event ( EventType . Cancel , CloneSubmitCancelEventData ( eventData ) ) ) ;
4530
4552
}
4531
4553
4532
4554
public void OnSelect ( BaseEventData eventData )
@@ -4579,11 +4601,20 @@ private static AxisEventData CloneAxisEventData(AxisEventData eventData)
4579
4601
{
4580
4602
return new ExtendedAxisEventData ( EventSystem . current )
4581
4603
{
4604
+ device = ( eventData as ExtendedAxisEventData ) ? . device ,
4582
4605
moveVector = eventData . moveVector ,
4583
4606
moveDir = eventData . moveDir
4584
4607
} ;
4585
4608
}
4586
4609
4610
+ private static ExtendedSubmitCancelEventData CloneSubmitCancelEventData ( BaseEventData eventData )
4611
+ {
4612
+ return new ExtendedSubmitCancelEventData ( EventSystem . current )
4613
+ {
4614
+ device = ( eventData as ExtendedSubmitCancelEventData ) ? . device
4615
+ } ;
4616
+ }
4617
+
4587
4618
private static ExtendedPointerEventData ClonePointerEventData ( PointerEventData eventData )
4588
4619
{
4589
4620
// InputSystemUIInputModule should only be sending ExtendedPointEventData.
0 commit comments