@@ -74,10 +74,14 @@ protected override void OnUpdateDeviceConnectionAndPoses()
7474 trackingActivator . TryFetchData ( WVR_PoseOriginModel . WVR_PoseOriginModel_OriginOnHead ) ;
7575 }
7676
77+ var isFocused = Interop . WVR_IsInputFocusCapturedBySystem ( ) ;
78+ var isLeftValid = ! isFocused && ( trackingActivator . isLeftValid || gestureActivator . isLeftValid ) ;
79+ var isRightValid = ! isFocused && ( trackingActivator . isRightValid || gestureActivator . isRightValid ) ;
80+
7781 IVRModuleDeviceState prevState ;
7882 IVRModuleDeviceStateRW currState ;
7983 // update connection/pose for left hand devices
80- if ( trackingActivator . isLeftValid )
84+ if ( isLeftValid )
8185 {
8286 if ( leftDeviceIndex != VRModule . INVALID_DEVICE_INDEX )
8387 {
@@ -97,7 +101,11 @@ protected override void OnUpdateDeviceConnectionAndPoses()
97101 }
98102
99103 currState . isConnected = true ;
100- trackingActivator . UpdateJoints ( currState , true ) ;
104+
105+ if ( trackingActivator . isLeftValid )
106+ {
107+ trackingActivator . UpdateJoints ( currState , true ) ;
108+ }
101109 }
102110 else
103111 {
@@ -109,7 +117,7 @@ protected override void OnUpdateDeviceConnectionAndPoses()
109117 }
110118 }
111119
112- if ( trackingActivator . isRightValid )
120+ if ( isRightValid )
113121 {
114122 if ( rightDeviceIndex != VRModule . INVALID_DEVICE_INDEX )
115123 {
@@ -129,7 +137,11 @@ protected override void OnUpdateDeviceConnectionAndPoses()
129137 }
130138
131139 currState . isConnected = true ;
132- trackingActivator . UpdateJoints ( currState , false ) ;
140+
141+ if ( trackingActivator . isRightValid )
142+ {
143+ trackingActivator . UpdateJoints ( currState , false ) ;
144+ }
133145 }
134146 else
135147 {
@@ -151,35 +163,13 @@ protected override void OnUpdateDeviceInput()
151163 IVRModuleDeviceState prevState ;
152164 IVRModuleDeviceStateRW currState ;
153165
154- if ( leftDeviceIndex != VRModule . INVALID_DEVICE_INDEX )
155- {
156- if ( gestureActivator . isLeftValid )
157- {
158- EnsureValidDeviceState ( leftDeviceIndex , out prevState , out currState ) ;
159- gestureActivator . UpdateGestureInput ( currState , true ) ;
160- }
161-
162- if ( trackingActivator . isLeftValid )
163- {
164- EnsureValidDeviceState ( leftDeviceIndex , out prevState , out currState ) ;
165- trackingActivator . UpdateDeviceInput ( currState , true ) ;
166- }
167- }
166+ EnsureValidDeviceState ( leftDeviceIndex , out prevState , out currState ) ;
167+ gestureActivator . UpdateDeviceInput ( currState , true ) ;
168+ trackingActivator . UpdateDeviceInput ( currState , true ) ;
168169
169- if ( rightDeviceIndex != VRModule . INVALID_DEVICE_INDEX )
170- {
171- if ( gestureActivator . isRightValid )
172- {
173- EnsureValidDeviceState ( rightDeviceIndex , out prevState , out currState ) ;
174- gestureActivator . UpdateGestureInput ( currState , false ) ;
175- }
176-
177- if ( trackingActivator . isRightValid )
178- {
179- EnsureValidDeviceState ( rightDeviceIndex , out prevState , out currState ) ;
180- trackingActivator . UpdateDeviceInput ( currState , false ) ;
181- }
182- }
170+ EnsureValidDeviceState ( rightDeviceIndex , out prevState , out currState ) ;
171+ gestureActivator . UpdateDeviceInput ( currState , false ) ;
172+ trackingActivator . UpdateDeviceInput ( currState , false ) ;
183173 }
184174
185175 public override uint GetLeftHandedIndex ( ) { return leftDeviceIndex ; }
@@ -492,9 +482,9 @@ public bool TryFetchData(WVR_PoseOriginModel originModel)
492482 return false ;
493483 }
494484
495- public bool isLeftValid { get { return trackingData . left . isValidPose && ! Interop . WVR_IsInputFocusCapturedBySystem ( ) ; } }
485+ public bool isLeftValid { get { return trackingData . left . isValidPose ; } }
496486
497- public bool isRightValid { get { return trackingData . right . isValidPose && ! Interop . WVR_IsInputFocusCapturedBySystem ( ) ; } }
487+ public bool isRightValid { get { return trackingData . right . isValidPose ; } }
498488
499489 public WVR_HandPoseState_t getLeftPinchData { get { return pinchData . left ; } }
500490
@@ -787,20 +777,21 @@ public bool TryFetchData()
787777 return false ;
788778 }
789779
790- public void UpdateGestureInput ( IVRModuleDeviceStateRW state , bool isLeft )
780+ public void UpdateDeviceInput ( IVRModuleDeviceStateRW state , bool isLeft )
791781 {
792782 var gesture = isLeft ? gestureData . left : gestureData . right ;
783+
793784 state . SetButtonPress ( VRModuleRawButton . GestureFist , gesture == WVR_HandGestureType . WVR_HandGestureType_Fist ) ;
794- state . SetButtonPress ( VRModuleRawButton . GestureFive , gesture == WVR_HandGestureType . WVR_HandGestureType_Five ) ;
795- state . SetButtonPress ( VRModuleRawButton . GestureIndexUp , gesture == WVR_HandGestureType . WVR_HandGestureType_IndexUp ) ;
796- state . SetButtonPress ( VRModuleRawButton . GestureOk , gesture == WVR_HandGestureType . WVR_HandGestureType_OK ) ;
797- state . SetButtonPress ( VRModuleRawButton . GestureThumbUp , gesture == WVR_HandGestureType . WVR_HandGestureType_ThumbUp ) ;
798- state . SetButtonPress ( VRModuleRawButton . System , gesture == WVR_HandGestureType_WVR_HandGestureType_Palm_Pinch ) ;
799785 state . SetButtonTouch ( VRModuleRawButton . GestureFist , gesture == WVR_HandGestureType . WVR_HandGestureType_Fist ) ;
786+ state . SetButtonPress ( VRModuleRawButton . GestureFive , gesture == WVR_HandGestureType . WVR_HandGestureType_Five ) ;
800787 state . SetButtonTouch ( VRModuleRawButton . GestureFive , gesture == WVR_HandGestureType . WVR_HandGestureType_Five ) ;
788+ state . SetButtonPress ( VRModuleRawButton . GestureIndexUp , gesture == WVR_HandGestureType . WVR_HandGestureType_IndexUp ) ;
801789 state . SetButtonTouch ( VRModuleRawButton . GestureIndexUp , gesture == WVR_HandGestureType . WVR_HandGestureType_IndexUp ) ;
790+ state . SetButtonPress ( VRModuleRawButton . GestureOk , gesture == WVR_HandGestureType . WVR_HandGestureType_OK ) ;
802791 state . SetButtonTouch ( VRModuleRawButton . GestureOk , gesture == WVR_HandGestureType . WVR_HandGestureType_OK ) ;
792+ state . SetButtonPress ( VRModuleRawButton . GestureThumbUp , gesture == WVR_HandGestureType . WVR_HandGestureType_ThumbUp ) ;
803793 state . SetButtonTouch ( VRModuleRawButton . GestureThumbUp , gesture == WVR_HandGestureType . WVR_HandGestureType_ThumbUp ) ;
794+ state . SetButtonPress ( VRModuleRawButton . System , gesture == WVR_HandGestureType_WVR_HandGestureType_Palm_Pinch ) ;
804795 state . SetButtonTouch ( VRModuleRawButton . System , gesture == WVR_HandGestureType_WVR_HandGestureType_Palm_Pinch ) ;
805796 }
806797
0 commit comments