void v2StatusHelper_KinectV2StatusChanged(object sender, KinectV2Wrapper.StatusEventArgs e)
{
bool kinectFound = false;
for (int i = 0; i < availableKinects.Count; i++)
{
//Check the Kinect by version, not by ID, because the ID is not preserved when the Kinect is disconnected
if (availableKinects[i].kinectType == KinectVersion.KinectV2)
{
if (e.Status != KinectStatus.Disconnected)
{
availableKinects[i].Status = e.Status;
availableKinects[i].KinectTypeString = "Kinect v2";
availableKinects[i].kinectType = KinectVersion.KinectV2;
if (e.Status != KinectStatus.Connected)
{
availableKinects[i].UseKinect = false;
}
}
else
{
availableKinects[i].UseKinect = false;
availableKinects[i].PropertyChanged -= useKinect_PropertyChanged;
availableKinects.RemoveAt(i);
renumberKinectIDs();
}
kinectsAvailableDataGrid.Items.Refresh();
kinectFound = true;
}
}
if (!kinectFound && e.Status != KinectStatus.Disconnected)
{
AvailableKinectData tempData = new AvailableKinectData();
tempData.UniqueID = e.UniqueKinectID;
tempData.KinectID = null;
tempData.UseKinect = false;
tempData.KinectTypeString = "Kinect v2";
tempData.kinectType = KinectVersion.KinectV2;
tempData.PropertyChanged += useKinect_PropertyChanged;
tempData.Status = e.Status;
availableKinects.Add(tempData);
kinectsAvailableDataGrid.Items.Refresh();
}
//Update the number of Kinects attached to the computer
KinectStatusBlock.Text = availableKinects.Count.ToString();
}