@@ -55,8 +55,6 @@ public override void CreateCamera(VRCameraHook hook)
5555 [ RenderModelHook . CreatorPriorityAttirbute ( 0 ) ]
5656 private class RenderModelCreator : RenderModelHook . DefaultRenderModelCreator
5757 {
58- private uint m_index = INVALID_DEVICE_INDEX ;
59-
6058 public override bool shouldActive { get { return s_moduleInstance == null ? false : s_moduleInstance . isActivated ; } }
6159
6260 public override void UpdateRenderModel ( )
@@ -97,20 +95,9 @@ public override void UpdateRenderModel()
9795 }
9896 }
9997 else
100- {
101- base . UpdateRenderModel ( ) ;
102- }
103- #else
104- base . UpdateRenderModel ( ) ;
10598#endif
106- }
107-
108- public override void CleanUpRenderModel ( )
109- {
110- if ( m_model != null )
11199 {
112- UnityEngine . Object . Destroy ( m_model ) ;
113- m_model = null ;
100+ base . UpdateRenderModel ( ) ;
114101 }
115102 }
116103 }
@@ -243,6 +230,7 @@ public override void BeforeRenderUpdate()
243230 currState . isConnected = false ;
244231 }
245232
233+ bool roleChanged = false ;
246234 InputDevices . GetDevices ( m_connectedDevices ) ;
247235 foreach ( InputDevice device in m_connectedDevices )
248236 {
@@ -261,10 +249,12 @@ public override void BeforeRenderUpdate()
261249 if ( ( device . characteristics & InputDeviceCharacteristics . Left ) > 0u )
262250 {
263251 m_leftHandedDeviceIndex = deviceIndex ;
252+ roleChanged = true ;
264253 }
265254 else if ( ( device . characteristics & InputDeviceCharacteristics . Right ) > 0u )
266255 {
267256 m_rightHandedDeviceIndex = deviceIndex ;
257+ roleChanged = true ;
268258 }
269259
270260 Debug . LogFormat ( "Device connected: {0} / {1} / {2} / {3} / {4} / {5} ({6})" , deviceIndex , currState . deviceClass , currState . deviceModel , currState . modelNumber , currState . serialNumber , device . name , device . characteristics ) ;
@@ -291,13 +281,24 @@ public override void BeforeRenderUpdate()
291281 if ( ! currState . isConnected )
292282 {
293283 currState . Reset ( ) ;
294- if ( deviceIndex == m_leftHandedDeviceIndex ) { m_leftHandedDeviceIndex = VRModule . INVALID_DEVICE_INDEX ; }
295- else if ( deviceIndex == m_rightHandedDeviceIndex ) { m_rightHandedDeviceIndex = VRModule . INVALID_DEVICE_INDEX ; }
284+
285+ if ( deviceIndex == m_leftHandedDeviceIndex )
286+ {
287+ m_leftHandedDeviceIndex = VRModule . INVALID_DEVICE_INDEX ;
288+ roleChanged = true ;
289+ }
290+ else if ( deviceIndex == m_rightHandedDeviceIndex )
291+ {
292+ m_rightHandedDeviceIndex = VRModule . INVALID_DEVICE_INDEX ;
293+ roleChanged = true ;
294+ }
296295 }
297296
298297 ++ deviceIndex ;
299298 }
300299
300+ if ( roleChanged ) { InvokeControllerRoleChangedEvent ( ) ; }
301+
301302 ProcessConnectedDeviceChanged ( ) ;
302303 ProcessDevicePoseChanged ( ) ;
303304 ProcessDeviceInputChanged ( ) ;
@@ -428,42 +429,6 @@ private void UpdateControllerState(IVRModuleDeviceStateRW state, InputDevice dev
428429 }
429430 }
430431
431- private void UpdateHandHeldDeviceIndex ( )
432- {
433- uint leftHandedDeviceIndex = INVALID_DEVICE_INDEX ;
434- InputDevice leftHandedDevice = InputDevices . GetDeviceAtXRNode ( XRNode . LeftHand ) ;
435- if ( leftHandedDevice . isValid )
436- {
437- leftHandedDeviceIndex = GetDeviceIndex ( GetDeviceUID ( leftHandedDevice ) ) ;
438- }
439-
440- uint rightHandedDeviceIndex = INVALID_DEVICE_INDEX ;
441- InputDevice rightHandedDevice = InputDevices . GetDeviceAtXRNode ( XRNode . RightHand ) ;
442- if ( rightHandedDevice . isValid )
443- {
444- rightHandedDeviceIndex = GetDeviceIndex ( GetDeviceUID ( rightHandedDevice ) ) ;
445- }
446-
447- if ( m_rightHandedDeviceIndex != rightHandedDeviceIndex || m_leftHandedDeviceIndex != leftHandedDeviceIndex )
448- {
449- InvokeControllerRoleChangedEvent ( ) ;
450- }
451-
452- m_leftHandedDeviceIndex = leftHandedDeviceIndex ;
453- m_rightHandedDeviceIndex = rightHandedDeviceIndex ;
454- }
455-
456- private uint GetDeviceIndex ( int uid )
457- {
458- uint index = 0 ;
459- if ( m_deviceUidToIndex . TryGetValue ( uid , out index ) )
460- {
461- return index ;
462- }
463-
464- return INVALID_DEVICE_INDEX ;
465- }
466-
467432 private bool TryGetDevice ( uint index , out InputDevice deviceOut )
468433 {
469434 deviceOut = default ;
0 commit comments