@@ -125,13 +125,48 @@ public override void UpdateDeviceState(IVRModuleDeviceState[] prevState, IVRModu
125125 {
126126 if ( ! prevState [ i ] . isConnected )
127127 {
128- currState [ i ] . deviceClass = s_node2class [ ( int ) node ] ;
129- // FIXME: how to get product id from OVRPlugin?
130- currState [ i ] . serialNumber = OVRPlugin . productName + " " + node . ToString ( ) ;
131- currState [ i ] . modelNumber = OVRPlugin . productName + " " + node . ToString ( ) ;
132- currState [ i ] . renderModelName = OVRPlugin . productName + " " + node . ToString ( ) ;
128+ var ovrProductName = OVRPlugin . productName ;
129+ var deviceClass = s_node2class [ ( int ) node ] ;
133130
134- SetupKnownDeviceModel ( currState [ i ] ) ;
131+ switch ( deviceClass )
132+ {
133+ case VRModuleDeviceClass . HMD :
134+ currState [ i ] . deviceModel = VRModuleDeviceModel . OculusHMD ;
135+ break ;
136+ case VRModuleDeviceClass . TrackingReference :
137+ currState [ i ] . deviceModel = VRModuleDeviceModel . OculusSensor ;
138+ break ;
139+ case VRModuleDeviceClass . Controller :
140+ switch ( ovrProductName )
141+ {
142+ case "Oculus Go" :
143+ currState [ i ] . deviceModel = VRModuleDeviceModel . OculusGoController ;
144+ break ;
145+ case "Gear VR" :
146+ currState [ i ] . deviceModel = VRModuleDeviceModel . OculusGearVrController ;
147+ break ;
148+ case "Oculus Rift" :
149+ default :
150+ switch ( node )
151+ {
152+ case OVRPlugin . Node . HandLeft :
153+ currState [ i ] . deviceModel = VRModuleDeviceModel . OculusTouchLeft ;
154+ break ;
155+ case OVRPlugin . Node . HandRight :
156+ default :
157+ currState [ i ] . deviceModel = VRModuleDeviceModel . OculusTouchRight ;
158+ break ;
159+ }
160+ break ;
161+ }
162+ break ;
163+ }
164+
165+ currState [ i ] . deviceClass = deviceClass ;
166+ // FIXME: how to get device id from OVRPlugin?
167+ currState [ i ] . modelNumber = ovrProductName + " " + deviceClass ;
168+ currState [ i ] . renderModelName = ovrProductName + " " + deviceClass ;
169+ currState [ i ] . serialNumber = ovrProductName + " " + deviceClass ;
135170 }
136171
137172 // update device status
@@ -190,6 +225,43 @@ public override void UpdateDeviceState(IVRModuleDeviceState[] prevState, IVRModu
190225 currState [ i ] . SetAxisValue ( VRModuleRawAxis . CapSenseGrip , ctrlState . RHandTrigger ) ;
191226 break ;
192227 }
228+ case VRModuleDeviceModel . OculusGoController :
229+ case VRModuleDeviceModel . OculusGearVrController :
230+ switch ( node )
231+ {
232+ case OVRPlugin . Node . HandLeft :
233+ {
234+ var ctrlState = OVRPlugin . GetControllerState ( ( uint ) OVRPlugin . Controller . LTrackedRemote ) ;
235+
236+ currState [ i ] . SetButtonPress ( VRModuleRawButton . Touchpad , ( ctrlState . Buttons & ( uint ) OVRInput . RawButton . LTouchpad ) != 0u ) ;
237+ currState [ i ] . SetButtonPress ( VRModuleRawButton . ApplicationMenu , ( ctrlState . Buttons & ( uint ) OVRInput . RawButton . Back ) != 0u ) ;
238+ currState [ i ] . SetButtonPress ( VRModuleRawButton . Trigger , ( ctrlState . Buttons & ( uint ) ( OVRInput . RawButton . A | OVRInput . RawButton . LIndexTrigger ) ) != 0u ) ;
239+ currState [ i ] . SetButtonPress ( VRModuleRawButton . DPadLeft , ( ctrlState . Buttons & ( uint ) OVRInput . RawButton . DpadLeft ) != 0u ) ;
240+ currState [ i ] . SetButtonPress ( VRModuleRawButton . DPadUp , ( ctrlState . Buttons & ( uint ) OVRInput . RawButton . DpadUp ) != 0u ) ;
241+ currState [ i ] . SetButtonPress ( VRModuleRawButton . DPadRight , ( ctrlState . Buttons & ( uint ) OVRInput . RawButton . DpadRight ) != 0u ) ;
242+ currState [ i ] . SetButtonPress ( VRModuleRawButton . DPadDown , ( ctrlState . Buttons & ( uint ) OVRInput . RawButton . DpadDown ) != 0u ) ;
243+
244+ currState [ i ] . SetButtonTouch ( VRModuleRawButton . Touchpad , ( ctrlState . Touches & ( uint ) OVRInput . RawTouch . LTouchpad ) != 0u ) ;
245+ }
246+ break ;
247+ case OVRPlugin . Node . HandRight :
248+ default :
249+ {
250+ var ctrlState = OVRPlugin . GetControllerState ( ( uint ) OVRPlugin . Controller . RTrackedRemote ) ;
251+
252+ currState [ i ] . SetButtonPress ( VRModuleRawButton . Touchpad , ( ctrlState . Buttons & unchecked ( ( uint ) OVRInput . RawButton . RTouchpad ) ) != 0u ) ;
253+ currState [ i ] . SetButtonPress ( VRModuleRawButton . ApplicationMenu , ( ctrlState . Buttons & ( uint ) OVRInput . RawButton . Back ) != 0u ) ;
254+ currState [ i ] . SetButtonPress ( VRModuleRawButton . Trigger , ( ctrlState . Buttons & ( uint ) ( OVRInput . RawButton . A | OVRInput . RawButton . RIndexTrigger ) ) != 0u ) ;
255+ currState [ i ] . SetButtonPress ( VRModuleRawButton . DPadLeft , ( ctrlState . Buttons & ( uint ) OVRInput . RawButton . DpadLeft ) != 0u ) ;
256+ currState [ i ] . SetButtonPress ( VRModuleRawButton . DPadUp , ( ctrlState . Buttons & ( uint ) OVRInput . RawButton . DpadUp ) != 0u ) ;
257+ currState [ i ] . SetButtonPress ( VRModuleRawButton . DPadRight , ( ctrlState . Buttons & ( uint ) OVRInput . RawButton . DpadRight ) != 0u ) ;
258+ currState [ i ] . SetButtonPress ( VRModuleRawButton . DPadDown , ( ctrlState . Buttons & ( uint ) OVRInput . RawButton . DpadDown ) != 0u ) ;
259+
260+ currState [ i ] . SetButtonTouch ( VRModuleRawButton . Touchpad , ( ctrlState . Touches & unchecked ( ( uint ) OVRInput . RawTouch . RTouchpad ) ) != 0u ) ;
261+ }
262+ break ;
263+ }
264+ break ;
193265 }
194266 }
195267 else
0 commit comments