Skip to content

Commit bb9de9c

Browse files
author
lawwong
committed
Fix vr module doen't remove disappeared device correctly
1 parent a2f73e5 commit bb9de9c

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

Assets/HTC.UnityPlugin/VRModule/Modules/UnityEngineVRModule_2017_2.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ private bool TryGetNodeDeviceIndex(XRNodeState nodeState, out uint deviceIndex)
127127
return true;
128128
}
129129

130-
private void RemoveNodeDeviceIndex(ulong uniqueID)
130+
private uint RemoveNodeDeviceIndex(ulong uniqueID)
131131
{
132132
var deviceIndex = INVALID_DEVICE_INDEX;
133133
if (m_node2Index.TryGetValue(uniqueID, out deviceIndex))
@@ -138,6 +138,8 @@ private void RemoveNodeDeviceIndex(ulong uniqueID)
138138
if (deviceIndex == m_rightIndex) { m_rightIndex = INVALID_DEVICE_INDEX; }
139139
if (deviceIndex == m_leftIndex) { m_leftIndex = INVALID_DEVICE_INDEX; }
140140
}
141+
142+
return deviceIndex;
141143
}
142144

143145
public override void UpdateDeviceState(IVRModuleDeviceState[] prevState, IVRModuleDeviceStateRW[] currState)
@@ -298,8 +300,11 @@ public override void UpdateDeviceState(IVRModuleDeviceState[] prevState, IVRModu
298300
// remove disconnected nodes
299301
for (int i = m_prevExistNodeUids.Count - 1; i >= 0; --i)
300302
{
301-
if (currState[i].isConnected) { currState[i].Reset(); }
302-
RemoveNodeDeviceIndex(m_prevExistNodeUids[i]);
303+
var removedIndex = RemoveNodeDeviceIndex(m_prevExistNodeUids[i]);
304+
if (VRModule.IsValidDeviceIndex(removedIndex))
305+
{
306+
currState[removedIndex].Reset();
307+
}
303308
}
304309

305310
var temp = m_prevExistNodeUids;

0 commit comments

Comments
 (0)